Materialized View

[ Arquitectura  ]

El patrón materialized view, nos sirve para tener datos fragmentados en diferentes tablas en una vista des normalizada. De esta forma, podemos consultar estos datos y recuperarlos de una manera óptima.

Vayamos al ejemplo para tener clara la situación y como este patrón nos ayuda a solucionarlo.

Imaginemos que nuestra aplicación tiene la siguiente estructura:

TABLA USUARIOS

(*) id_user userName userLastName
1 Pitufo Gruñón
2 Papá Pitufo
3 Pitufo Amoroso
4 Pitufo Inteligente
5 Pitufo Burlón

TABLA USUARIO CABELLERA

(*) id_cabellera id_user color
1 1 castaño
2 2 moreno
3 3 castaño
4 4 moreno
5 5 castaño

Si quisiéramos obtener el color de pelo de los usuarios deberíamos hacer una join entre usuarios y cabellera. Imaginemos que, esta consulta fuera muy costosa. La solución pasa por tener una vista materializada pre calculada, como si fuera una caché, con este resultado almacenado y simplemente ejecutar nuestra consulta sobre esta vista:

VISTA USUARIO-CABELLERA

(*) id_user userName userLastName id_cabellera color
1 Pitufo Gruñón 1 castaño
2 Papá Pitufo 2 moreno
3 Pitufo Amoroso 3 castaño
4 Pitufo Inteligente 4 moreno
5 Pitufo Burlón 5 castaño

Esta solución, nos brinda la capacidad de realizar esta acción de mejora en datos que no se actualizan con frecuencia. Si, por el contrario, estos datos cambian constantemente, esto nos obligaría a recalcular o regenerar las vistas y podría penalizarnos en vez de ayudarnos.

Sin más, hasta la próxima.




@2017/@2024 - JRRN