Esta buen noticia llego a fines del 2019, donde Amazon anuncio la copatibilidad de Redshift con las vistas materializadas.
Pero, que son?
Una vista no es mas que una consulta almacenada que representa un conjunto
de tablas (posiblemente de diferentes esquemas) a la que daremos
un nombre y trataremos como si fuese una tabla más de nuestro
esquema, pero sin llegar a ser realmentea serlo. Es importante destacar que una vista NO guarda datos, sino que solo almacena el query
que nos dara acceso a los datos. Existen principalmente dos motivos para usar las vistas, en primer lugar por cuestiones de seguridad, para restringir el acceso a ciertos usuarios a toda la información de la base de datos, dandole acceso en cambio a un conjunto de datos específicos que creamos para esos usuarios. Por otro lado, el otro motivo
tiene que ver con la estructura de nuestro modelo de datos, ya que si es bastante
complejo o con muchas tablas nos puede ser muy útil crear este tipo
de vistas para organizar una cierta información de modo que nos sea
mucho más cómodo acceder a ella mediante consultas mucho más
sencillas.
Ahora bien, a diferencia de las vistas tradicionales, una vista materializada
almacena físicamente los datos resultantes de ejecutar
la consulta definida en la vista. Este tipo de vistas materializadas realizan
una carga inicial de los datos cuando se definen y posteriormente con una
frecuencia establecida se actualizan los datos de la misma.Con la utilización
de vistas materializadas logramos aumentar el rendimiento de las consultas
SQL además de ser un método de optimización
a nivel físico en modelos de datos muy complejos y/o con muchos datos.
Una vez definida una vista materializada uno de los problemas
que nos encontramos es el de la actualización de los datos.
Como se ha comentado antes, estas vistas contienen fisicamente los datos de
las «tablas base», por lo que si cambian los datos de estas tablas
no se reflejarán en la vista materializada. Para ello necesitamos establecer
un mecanismo de resfresco automático en el que tendremos que definir
el tipo y la forma de refresco.
El comando para crear una vista materializada en Redshift es:
CREATE MATERIALIZED VIEW mv_name
[ BACKUP { YES | NO } ]
[ table_attributes ]
[ AUTO REFRESH { YES | NO } ]
AS query
Tenemos algunos parametros mas para agregar, te los dejo en la documentacion
Cabe destacar que se pueden crear vistas materializadas basadas en una o mas tablas, mediante el uso de filtros, proyecciones, combinaciones internas, agregaciones, agrupaciones, funciones, etc.
En resumen, podemos optimizar aun mas las consultas en Redshift, aunmentando la velocidad de las consultas mediante el procesamiento de la consulta en función de los datos precalculados almacenados en la Vista materializada
Y todo esto sin costo adicional!
Top comments (0)