TodoBI - Business Intelligence, Big Data, ML y AI TodoBI - Business Intelligence, Big Data, ML y AI

Improving Performance in Saiku OLAP and Reporting

En los últimos proyectos que estamos acometiendo estamos teniendo problemas de rendimiento derivados del gran volumen de datos gestionados y/o de dimensiones con altísima cardinalidad.
Esto hace que al utilizar saiku o saiku-reporting, por ejemplo. Si queremos filtrar por un miembro de una dimensión con alta cardinalidad, el tiempo que se consume trasmitiendo los datos por la red sea mucho..
Es por eso que hemos estado investigando en Stratebi acerca de métodos de mejorar el rendimiento http y hemos visto que podemos habilitar que tomcat envíe los datos comprimidos  ( referencia: http://tomcat.apache.org/tomcat-7.0-doc/config/http.html  ).
De que se trata? pues bien... si enviamos los datos comprimido en vez de enviar 10 o 20 MB por la red enviaremos 1 o 2 ganando el correspondiente tiempo de transferencia.
Cómo se hace? pues bien... en el server.xml del tomcat buscamos la etiqueta connector que está en la linea 69 aprox...

Y le añadimos los tags para habilitar la compresión de los archivos de texto:

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,
text/javascript, application/x-javascript,
application/javascript, application/json"
 
Que básicamente dice que habilite la compresión, para archivos mayores de 2048 B  (2MB) y que comprima los archivos de texto, xml, css, javascrit y json.
Por lo que mi etiqueta connector queda tal que así:

compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/css,
text/javascript, application/x-javascript,
application/javascript, application/json"
/>
y aquí tenemos la prueba....
Los test antes de habilitar la compresión:
sin_compresion
La primera ejecución hace la consulta mdx y envía el resultado por la red..... 17'8MB y tarda 38,7 Segundos.
La segunda ejecución la consulta ya está en caché y sólo envía el resultado por la red... 17,8MB y 22,26 Segundos.
Y ahora los resultados una vez habilitado el tag:
comprimido La primera ejecución hace la consulta mdx y envía el resultado por la red..... 1MB y tarda 27,07 Segundos.
La segunda ejecución la consulta ya está en caché y sólo envía el resultado por la red... 1MB y 4,53 Segundos.
Ejecutando la misma consulta hemos pasado de un tiempo de ejecución de 38,7 a 27,07 segundos en la primera consulta y de 22,26 a 4,53 Segundos una vez la consulta ya está en caché de mondrian .
Una ganancia a tener en cuenta... espero que os sea de ayuda.