DEV Community

Julieta Ansola
Julieta Ansola

Posted on

Redshift es compatible con vistas materializadas!

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 
Enter fullscreen mode Exit fullscreen mode

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!

Discussion (0)