En informática , una vista materializada es un objeto de base de datos que contiene los resultados de una consulta . Por ejemplo, puede ser una copia local de los datos ubicados de forma remota, o puede ser un subconjunto de las filas y / o columnas de una tabla o un resultado de combinación , o puede ser un resumen usando una función agregada .
El proceso de configuración de una vista materializada a veces se denomina materialización . [1] Esta es una forma de almacenar en caché los resultados de una consulta, similar a la memorización del valor de una función en lenguajes funcionales, y a veces se describe como una forma de cálculo previo . [2] [3] Al igual que con otras formas de cálculo previo, los usuarios de bases de datos suelen utilizar vistas materializadas por motivos de rendimiento, es decir, como una forma de optimización. [4]
Las vistas materializadas que almacenan datos basados en tablas remotas también se conocen como instantáneas [5] (terminología obsoleta de Oracle).
En cualquier sistema de gestión de bases de datos que siga el modelo relacional , una vista es una tabla virtual que representa el resultado de una consulta de base de datos . Siempre que una consulta o actualización se dirige a la tabla virtual de una vista ordinaria, el DBMS las convierte en consultas o actualizaciones contra las tablas base subyacentes. Una vista materializada adopta un enfoque diferente: el resultado de la consulta se almacena en caché como una tabla concreta ("materializada") (en lugar de una vista como tal) que puede actualizarse a partir de las tablas base originales de vez en cuando. Esto permite un acceso mucho más eficiente, a costa de almacenamiento adicional y de que algunos datos estén potencialmente desactualizados. Las vistas materializadas encuentran uso especialmente en escenarios de almacenamiento de datos , donde las consultas frecuentes de las tablas base reales pueden ser costosas.
En una vista materializada, los índices se pueden construir en cualquier columna. Por el contrario, en una vista normal, normalmente solo es posible explotar índices en columnas que provienen directamente de (o tienen una asignación a) columnas indexadas en las tablas base; a menudo, esta funcionalidad no se ofrece en absoluto.
Implementaciones
Oráculo
Las vistas materializadas fueron implementadas primero por Oracle Database : la función de reescritura de consultas se agregó a partir de la versión 8i. [6]
Sintaxis de ejemplo para crear una vista materializada en Oracle:
CREATE materializado VISTA MV_MY_VIEW REFRESH RÁPIDO START CON SYSDATE SIGUIENTE SYSDATE + 1 AS SELECT * DE < nombre_tabla > ;
PostgreSQL
En PostgreSQL , la versión 9.3 y posteriores admiten de forma nativa vistas materializadas. [7] En la versión 9.3, una vista materializada no se actualiza automáticamente y se completa solo en el momento de la creación (a menos que WITH NO DATA
se utilice). Puede actualizarse más tarde manualmente usando REFRESH MATERIALIZED VIEW
. [8] En la versión 9.4, la actualización puede ser simultánea con selecciones en la vista materializada si CONCURRENTLY
se usa. [9]
Sintaxis de ejemplo para crear una vista materializada en PostgreSQL:
CREAR VISTA MATERIALIZADA MV_MY_VIEW [ WITH ( parámetro_de_almacenamiento [ = valor ] [, ... ]) ] [ TABLESPACE nombre_espacio_tabla ] COMO SELECCIONAR * FROM < nombre_tabla > ;
servidor SQL
Microsoft SQL Server se diferencia de otros RDBMS por la forma de implementar la vista materializada a través de un concepto conocido como "Vistas indexadas". La principal diferencia es que dichas vistas no requieren una actualización porque, de hecho, siempre están sincronizadas con los datos originales de las tablas que componen la vista. Para lograr esto, es necesario que las líneas de origen y destino sean "deterministas" en su mapeo lo que limita los tipos de consultas posibles para hacer esto. Este mecanismo se ha realizado desde la versión 2000 de SQL Server.
Sintaxis de ejemplo para crear una vista materializada en SQL Server:
CREAR VISTA MV_MY_VIEW CON ESQUEMA COMO SELECCIONAR COL1 , SUMA ( COL2 ) COMO TOTAL DESDE < nombre_tabla > GRUPO POR COL1 ; IRCREATE UNIQUE CLUSTERED ÍNDICE XV EN MV_MY_VIEW ( COL1 );
Marcos de procesamiento de transmisión
Apache Kafka (desde v0.10.2), Apache Spark (desde v2.0) y Materialise [10] admiten vistas materializadas en flujos de datos.
Otros
Las vistas materializadas también son compatibles con Sybase SQL Anywhere . [11] En IBM DB2 , se denominan "tablas de consultas materializadas". [12] ClickHouse admite vistas materializadas que se actualizan automáticamente en las fusiones. [13] MySQL no admite vistas materializadas de forma nativa, pero se pueden implementar soluciones mediante el uso de activadores o procedimientos almacenados [14] o mediante la aplicación de código abierto Flexviews . [15] Las vistas materializadas se pueden implementar en Amazon DynamoDB mediante eventos de modificación de datos capturados por DynamoDB Streams. Google anunció el 8 de abril de 2020 [16] la disponibilidad de vistas materializadas para BigQuery [17] como versión beta.
Referencias
- ^ Compárese: CJ Date (28 de agosto de 2006). Diccionario de bases de datos relacionales: un glosario completo de términos y conceptos relacionales, con ejemplos ilustrativos . "O'Reilly Media, Inc.". pag. 59. ISBN 978-1-4493-9115-7. Consultado el 26 de octubre de 2016 .
materialización [:] Una técnica algo poco sofisticada para implementar operaciones en vistas según la cual (a) la expresión relacional que define la vista se evalúa en el momento en que se invoca la operación, (b) la vista se materializa así, y (c) la La operación en cuestión se ejecuta entonces contra la relación así materializada.
- ^ Karen Morton; Kerry Osborne; Robyn Sands; Riyaj Shamsudeen; Jared Still (28 de octubre de 2013). Pro Oracle SQL . Presione. pag. 48. ISBN 978-1-4302-6220-6.
- ^ Marie-Aude Aufaure; Esteban Zimányi (16 de enero de 2012). Inteligencia empresarial: Primera escuela europea de verano, EBISS 2011, París, Francia, 3-8 de julio de 2011, Conferencias tutoriales . Springer Science & Business Media. pag. 43. ISBN 978-3-642-27357-5.
- ^ Michael L. Gonzales (25 de febrero de 2003). Almacenamiento de datos de IBM: con herramientas de inteligencia empresarial de IBM . John Wiley e hijos. pag. 214. ISBN 978-0-471-45736-7.
- ^ CJ Date (28 de agosto de 2006). Diccionario de bases de datos relacionales: un glosario completo de términos y conceptos relacionales, con ejemplos ilustrativos . "O'Reilly Media, Inc.". pag. 59. ISBN 978-1-4493-9115-7. Consultado el 26 de octubre de 2016 .
vista materializada [:] Término obsoleto para una instantánea. [...] El problema es [...] que (como indica la definición) las instantáneas han llegado a conocerse, al menos en algunos círculos, no como instantáneas sino como vistas materializadas. Pero las instantáneas no son vistas; las vistas son virtuales y las instantáneas no lo son, y la 'vista materializada' es una contradicción en términos (al menos en lo que respecta al modelo). Peor aún, el término punto de vista no calificado a menudo se considera que significa un punto de vista materializado específicamente y, por lo tanto, corremos el peligro de que ya no tengamos un buen término para un punto de vista en el sentido original.
- ^ Oracle8i Tuning Release 8.1.5 . Ecst.csuchico.edu. Consultado el 9 de febrero de 2012.
- ^ PostgreSQL: Vistas materializadas . Wiki.postgresql.org (7 de mayo de 2010). Consultado el 25 de septiembre de 2013.
- ^ PostgreSQL: Documentación: 9.3: CREAR VISTA MATERIALIZADA . PostgreSQL.com. Consultado el 25 de enero de 2014.
- ^ PostgreSQL: Documentación: 9.4: VISTA MATERIALIZADA ACTUALIZADA . PostgreSQL.com. Consultado el 23 de enero de 2015.
- ^ "CMU DB Talk: Building Materialise" . Consultado el 26 de junio de 2020 .
- ^ Vistas materializadas - Sybase SQL Anywhere Archivado el 14 de diciembre de 2009 en Wayback Machine . Ianywhere.com. Consultado el 9 de febrero de 2012.
- ^ Mejora del rendimiento con vistas indexadas de SQL Server 2005 . Microsoft.com. Consultado el 9 de febrero de 2012.
- ^ Documentación de ClickHouse MaterializedView . Clickhouse.yandex. Consultado el 5 de septiembre de 2019.
- ^ Implementación de vistas materializadas en MySQL . Shinguz.ch (6 de noviembre de 2006). Consultado el 9 de febrero de 2012.
- ^ Flexviews para MySQL: vistas materializadas actualizables de forma incremental con MySQL . Flexviews.sourceforge.net. Consultado el 9 de febrero de 2012.
- ^ Comunicado de prensa del 8 de abril de 2020 Google.com Consultado el 20 de mayo de 2020.
- ^ Documentación de vistas materializadas de Google BigQuery Google.com. Consultado el 20 de mayo de 2020.
enlaces externos
- Arquitectura y conceptos de vista materializada - Oracle
- Fragmentos de código SQL: Tutoriales de funciones SQL - Vistas materializadas - Oracle
- Oracle9i Replication Management API Reference Release 2 (9.2)
- Vistas materializadas en Oracle 11.2
- Tablas de consultas materializadas en DB2
- Creando vistas materializadas en MySQL