Vistas materializadas
¿Qué es una vista materializada?
Una vista materializada es un objeto de base de datos que almacena los resultados de una consulta como una tabla física. A diferencia de las vistas de base de datos regulares, que son virtuales y derivan sus datos de las tablas subyacentes, las vistas materializadas contienen datos precalculados que se actualizan de forma incremental según una programación o a pedido. Esta precomputación de datos permite tiempos de respuesta de consulta más rápidos y un rendimiento mejorado en ciertos escenarios.
Las vistas materializadas son especialmente útiles en situaciones en las que se realizan consultas complejas o agregaciones con frecuencia, y los datos subyacentes cambian con poca frecuencia. Al almacenar los resultados precalculados, la base de datos puede evitar la necesidad de ejecutar consultas complejas de forma repetida, lo que da como resultado tiempos de respuesta más rápidos.
Más temas para descubrir
¿La materialización de datos es lo mismo que una vista materializada?
Si bien los términos “materialización de datos” y “vistas materializadas” están relacionados, se refieren a conceptos diferentes. Entonces, ¿qué significa materializado en este contexto?
La materialización de datos es el concepto de almacenar datos computados en un medio físico, como un disco duro. Normalmente, se crea a partir de una vista virtual o lógica con un propósito principal: mejorar el rendimiento.
En ciertos aspectos, la materialización de datos es similar al almacenamiento en caché. Ambos procesos implican almacenar datos de una manera que hace que su recuperación sea más eficiente. La principal diferencia entre ambos es que el almacenamiento en caché se utiliza para almacenar datos temporalmente cerca del punto de uso, mientras que los datos materializados tienden a tener un ciclo de vida más largo y un cronograma de actualización más definido.
Con esta definición de materialización de datos, ahora podemos explorar cómo se relaciona con el concepto de vistas materializadas.
Una vista materializada es un tipo de materialización de datos que se utiliza en las bases de datos relacionales para almacenar los resultados de una consulta y, así, agilizar su recuperación.
El uso de la materialización en un entorno de data warehouse se trata, en gran medida, de una cuestión de conveniencia. Cuando los datos se almacenan, la elección de cómo almacenarlos generalmente se deriva de cómo se formatean los datos en primer lugar. Pero cuando quieres leer los datos, esa elección podría no ser propicia para una recuperación fácil.
Por ejemplo, supongamos que tienes un gran conjunto de datos del que necesitas leer regularmente un subconjunto de datos. Recuperarlos de nuevo cada vez podría llevar bastante tiempo porque tendrías que ejecutar la consulta en el conjunto completo de datos cada vez, aunque solo quisieras acceder a una pequeña parte de ellos.
En esta situación, sería beneficioso crear una vista materializada. Lo configurarías para que se complete previamente con los datos que necesitas leer y definirías un programa de actualización que se ejecute automáticamente o cuando el sistema detecte un cambio en los datos de origen subyacentes.
Comparación de objetos de base de datos: vistas materializadas vs. vistas
En este punto, es beneficioso definir las “vistas” y explicar en qué se diferencian las vistas materializadas. Tanto las vistas como las vistas materializadas son objetos de base de datos que presentan datos en un formato específico o como resultado de una consulta específica. Sin embargo, difieren significativamente en términos de almacenamiento, rendimiento y casos de uso (que exploraremos en más detalle más adelante).
Al comparar una vista con una vista materializada, una consideración fundamental es que una vista es una tabla virtual basada en el conjunto de resultados de una consulta SQL. Es importante destacar que no almacena los datos en sí, sino que los recupera dinámicamente de las tablas subyacentes cada vez que se consulta la vista.
Esto es fundamentalmente diferente de una vista materializada. Un elemento fundamental de cómo definimos “materializado” es en términos de almacenamiento de datos. Específicamente, una vista materializada es un objeto de la base de datos que almacena físicamente los resultados de una consulta.
Esto significa que, a diferencia de una vista regular, una vista materializada no recupera los datos dinámicamente. Como almacena el conjunto de resultados de la consulta y se actualiza periódicamente para reflejar los cambios en las tablas subyacentes, se traduce en un mejor rendimiento de las consultas y en un uso más eficiente de los recursos de procesamiento.
Aunque el almacenamiento puede considerarse la principal diferencia entre las vistas y las vistas materializadas, la siguiente tabla presenta una comparación de cómo esto afecta a las diferentes características de los dos objetos de la base de datos:
| Característica | Vista | Vista materializada |
|---|---|---|
| Almacenamiento de datos | No almacena datos (tabla virtual) | Almacena datos físicamente (resultados precalculados) |
| Recuperación de datos | Recupera datos de forma dinámica de las tablas base | Recupera datos de los resultados almacenados |
| Rendimiento | Más lenta para consultas complejas | Más rápido para consultas complejas |
| Actualidad de los datos | Siempre actualizada | Pueden estar desactualizados; requieren actualización |
| Espacio de almacenamiento | No se necesita almacenamiento adicional | Requiere espacio de almacenamiento adicional |
| CASOS DE USO | Simplificación de consultas complejas, seguridad | Mejora del rendimiento, datos de instantáneas |
¿Cuáles son las ventajas y desventajas de las vistas materializadas en las bases de datos?
Las vistas materializadas ofrecen varias ventajas, pero también algunas limitaciones, en las bases de datos, incluida la plataforma de Databricks. Comprender a fondo las ventajas y desventajas puede ayudar a los usuarios a determinar cuándo y cómo usarlas de manera eficaz.
Ventajas de la vista materializada
Mejora del rendimiento de las consultas
Una de las razones principales para crear vistas materializadas es mejorar el rendimiento de las consultas. Logran esto de dos maneras esenciales: acelerando la recuperación de datos y reduciendo la carga en las tablas base.
Como almacenan resultados precalculados, eliminan la necesidad de volver a calcular los datos y resolver una consulta (o un "join" en una consulta) cada vez. Como resultado, esto acelera significativamente la ejecución de consultas, especialmente en el caso de las que son complejas, consumen muchos recursos o se acceden con alta frecuencia.
Almacenar los datos de esta manera también reduce el número de consultas directas a las tablas base. Esto minimiza la carga en estas tablas y da como resultado una mejora general en el rendimiento de la base de datos.
Uso eficiente de los recursos
No siempre querrás ejecutar una consulta completa cada vez que necesites acceder a un conjunto de datos en particular, y hacerlo puede ser particularmente lento e ineficiente. Al precalcular y almacenar los resultados, las vistas materializadas optimizan el uso de los recursos, minimizan la necesidad de cálculos y procesamiento de datos repetitivos, y te ahorran tiempo y dinero.
Proporciona instantáneas de los datos
Las vistas materializadas proporcionan una instantánea de los datos en un momento específico. Esto puede ser útil si necesitas hacer un seguimiento de cómo ha cambiado tu conjunto de datos para fines de informes y análisis, así como para el análisis de datos históricos.
Consolidación de datos
Si necesitas reunir datos de una variedad de fuentes diferentes, como durante un proceso ETL, las vistas materializadas son una excelente opción. Se pueden usar para agregar y consolidar datos de múltiples tablas y bases de datos, lo que proporciona una forma fácil, unificada y eficiente de acceder a los datos integrados.
Ayuda a simplificar los cálculos complejos
Las agregaciones complejas, las uniones y los cálculos se pueden precalcular y almacenar en vistas materializadas. Esta es otra forma en que las vistas materializadas reducen los altos costos computacionales y hacen que sea más rápido y fácil consultar y analizar los datos.
Limitaciones de las vistas materializadas
Sobrecarga de almacenamiento
Una desventaja de las vistas materializadas es que requieren espacio de almacenamiento adicional para mantener los datos precalculados de los que dependen. Dependiendo de tu solución de almacenamiento de datos, el tamaño de la vista y la frecuencia de tus actualizaciones, este requisito de almacenamiento adicional puede crear un gasto considerable.
Sobrecarga de actualización
Las vistas materializadas ofrecen una instantánea estática, por lo que debes realizar actualizaciones incrementales para asegurarte de que estás viendo la vista más actualizada en función de los cambios en los datos subyacentes. Puedes hacerlo periódicamente o asignar eventos específicos que activen la frecuencia con la que se actualiza una vista materializada. De cualquier manera, debes adoptar una estrategia que describa con qué frecuencia se realiza una actualización y asignar la lógica y los recursos para calcular los datos a fin de garantizar su actualidad.
Compensaciones de rendimiento
Lamentablemente, el proceso de actualización de una vista materializada puede afectar el rendimiento general de tu base de datos. Esto puede ser especialmente notable si la actualización consume muchos recursos o crea conflictos con otras operaciones de la base de datos.
Aplicabilidad limitada
Las vistas materializadas son increíblemente beneficiosas si se accede a una vista con frecuencia o cuando el rendimiento de lectura es esencial, como en el almacenamiento de datos. Sin embargo, no son adecuadas para todos los tipos de consultas o casos de uso. Por ejemplo, las tareas que requieren actualizaciones de datos en tiempo real o los sistemas con una alta frecuencia de cambios en los datos subyacentes puede que no funcionen de la mejor manera con las vistas materializadas.
¿Cuándo deberías usar vistas materializadas?
Entonces, una vez que se comprende la diferencia entre los objetos de base de datos de vista y vista materializada, así como las ventajas que puede tener el uso de vistas, ¿cuáles son los momentos adecuados para crear vistas materializadas en su lugar? Estas son algunas situaciones en las que usar vistas materializadas podría hacer más eficiente el proceso de acceso a los datos.
Lidiar con el procesamiento por lotes regular.
Si necesitas realizar un procesamiento por lotes con regularidad, las vistas materializadas lo permiten precalculando y almacenando partes de una consulta para ser procesadas de forma independiente. Por ejemplo, si gestionas una nómina semanal, podrías usar vistas materializadas para almacenar los detalles de los cheques de pago, como el salario, los impuestos y las comisiones para diferentes empleados. Los datos almacenados en la vista materializada se actualizarían al final de cada semana.
Distribución de datos filtrados
Usar vistas materializadas puede ayudar a resolver el problema de cómo hacer que determinados conjuntos de datos estén disponibles en múltiples ubicaciones, ya que se pueden usar para replicar y almacenar en caché los datos de fuentes remotas. Esto es particularmente útil para las bases de datos de solo lectura, ya que puedes copiar y distribuir datos a varios sitios de almacenamiento diferentes, lo que reduce la carga general en la base de datos de origen. Cualquier persona que necesite acceso a los datos podría usar el sitio más cercano, lo que también aceleraría los tiempos de respuesta.
Optimización de paneles de AI/BI
Los paneles de AI/BI son una herramienta eficaz para mejorar la visualización de datos y la generación de informes en la Databricks Data Intelligence Platform. El diseño simplificado es ideal para compartir y distribuir visualizaciones, pero es importante que todos los datos de tu panel público cumplan los requisitos de actualidad.
Mediante el uso de vistas materializadas, puedes programar actualizaciones periódicas para garantizar la vista más reciente y mejorar enormemente los tiempos de respuesta del usuario final al precomputar y almacenar los resultados de las consultas que impulsan el panel.
Análisis de datos de series temporales
Una de las ventajas principales de las vistas materializadas es que proporcionan instantáneas de los datos. Esto hace que sea mucho más sencillo estudiar cómo ha cambiado el conjunto de datos subyacente a lo largo del tiempo y proporciona instantáneas de datos históricos que pueden ser útiles para fines de generación de informes.
Por lo tanto, las vistas materializadas son una solución adecuada para una amplia gama de aplicaciones de inteligencia de negocios. Si necesitas completar consultas de esquema de estrella o computar agregados a partir de datos sin procesar, las vistas materializadas almacenan resúmenes preagregados, como promedios mensuales, sumas semanales y recuentos diarios. Visualizar estas cifras a lo largo del tiempo es beneficioso para el análisis histórico y los fines de generación de informes.
Anticipar la desconexión de la base de datos principal
Si eres consciente de que existe un riesgo de desconexión de la base de datos subyacente, puedes utilizar una vista materializada para mantener los datos más importantes disponibles para trabajar. Por supuesto, en esa situación, deberás tener mucho cuidado para asegurarte de que tu programa de actualización sea sólido. En este caso, puedes almacenar en caché la vista materializada localmente.
¿Cuándo deberías usar vistas materializadas?
Ten en cuenta que hay algunos escenarios en los que usar vistas materializadas no es la opción más adecuada. Para empezar, si tus datos son rápidos y fáciles de consultar, realmente no vale la pena el esfuerzo. Además, si los datos de origen cambian muy rápido, no tiene mucho sentido usar vistas materializadas. En cambio, es probable que el impacto en la sobrecarga de procesamiento por la actualización constante de datos supere cualquier ventaja que puedas obtener de una recuperación de datos más rápida.
Crear vistas materializadas en Databricks SQL
Las vistas materializadas en Databricks SQL se gestionan a través de Unity Catalog. Almacenan resultados precalculados basados en los datos más recientes de las tablas de origen. A diferencia de las implementaciones tradicionales, las vistas materializadas de Databricks conservan el estado de los datos en el momento de la última actualización, en lugar de actualizarse cada vez que se consultan. Tienes la flexibilidad de actualizar manualmente las vistas materializadas o de configurar actualizaciones automáticas programadas.
Las vistas materializadas de Databricks SQL son particularmente útiles para el procesamiento ETL (extracción, transformación y carga). Proporcionan un enfoque simple y declarativo para gestionar el cumplimiento, las correcciones, las agregaciones y la captura de datos de cambios (CDC). Las vistas materializadas mejoran significativamente la latencia de las consultas y reducen los costos al precalcular las consultas lentas y los cálculos de uso frecuente. Además, permiten transformaciones fluidas mediante la limpieza, el enriquecimiento y la desnormalización de las tablas base. En ciertos casos, las vistas materializadas pueden calcular de forma incremental los cambios de las tablas base, lo que reduce los costos y optimiza la experiencia del usuario.
Databricks introdujo por primera vez las vistas materializadas como parte de la arquitectura de lakehouse, con el lanzamiento de las canalizaciones declarativas de Spark. La creación de una vista materializada en un almacén de DB SQL crea automáticamente un pipeline de Lakeflow para administrar las actualizaciones de la vista. Puedes supervisar fácilmente el estado de las operaciones de actualización usando la UI de Lakeflow, la API o la CLI.
Cómo funciona la creación de vistas materializadas
El siguiente ejemplo crea la vista materializada customer_orders a partir de las tablas base orders y customers:
Cómo funciona la actualización de la vista materializada
En Databricks SQL, tienes la opción de configurar la actualización automática de una vista materializada según un programa predefinido. Este programa se puede configurar durante la creación de la vista materializada mediante la cláusula SCHEDULE o agregarse más tarde mediante la instrucción ALTER VIEW. Una vez que se establece un programa, se crea automáticamente un trabajo de Databricks para gestionar las actualizaciones.
Para revisar los detalles del cronograma en cualquier momento, puedes usar la instrucción DESCRIBE EXTENDED, que proporciona visibilidad del cronograma configurado para la vista materializada. Esto te permite supervisar y administrar fácilmente la programación de actualización automática de tu vista materializada en Databricks SQL.
Para obtener más información sobre las vistas materializadas, consulta la documentación del producto de Databricks o lee el blog de introducción.


