viernes, 20 de enero de 2012

Engordando a Mondrian

Una de las grandes ventajas que aporta mondrian es el uso de la cache para mejorar el tiempo de respuesta al no tener que volver a realizar una consulta que ya ha hecho. Es por este motivo que la primera vez que cargamos una vista olap es "lenta" pero las siguientes va mucho mas rápido.

El problema de este planteamiento es que cuando refrescamos datos mediante un proceso ETL hay que refrescar también la caché de mondrian para que vuelva a realizar las consultas y vuelva a preguntar por los datos nuevo por lo que, en sistemas con mucho refresco de datos la caché pierde su potencia.


Cabe destacar que el uso de sistemas de caché se está extendiendo, CDA  y su sistema de caché de consultas y Pentaho Reporting se ha sumado al carro también .

Pero volvamos al tema de hoy. Cómo aprovechar mejor la caché de mondrian sabiendo que la tengo que vaciar cada vez que ejecuto una ETL? Pues volviendola a rellenar hasta que nuestro mondrian vuelva a ser un pastelito relleno listo para hincarle el diente.




Y eso se puede hacer de varias formas. Una de ellas es ejecutando todas las vistas de análisis que hay en nuestro pentaho-solutions y precisamente eso es lo que hago en el siguiente script: MondrianCacheFiller .

El script recorre pentaho-solutions y ejecuta todas las vistas de análisis que encuentra de forma que cuando el usuario se conecte y ejecute su vista de análisis ya mondrian ya la tendrá en caché por lo que no tendrá que esperar para que su vista se cargue.

Recuerda: Un usuario que espera es un usuario enfadado. Si conseguimos que nuestros usuarios obtengan sus resultados de forma rápida estarán mucho mas contentos con nosotros.

Existen varias alternativas para obtener resultados similares. Cómo las tareas programadas, etc. Pero esta me permite invocar el script y olvidarme de cuantas vistas de análisis nuevas se ha guardado el usuario. ¡Las ejecuta todas!

P.D. : Si te descargas el script no olvides actualizar los parámetros para tu sistema. ;)

1 comentario: