Material Big Data

Lanzados ppts informativos de tecnologías BigData: Hadoop, Hbase, Hive, Zookeeper...

Te presentamos la mejor plataforma de Planificación y Presupuestacion BI

Forecasts, Web and excel-like interface, Mobile Apps, Qlikview, SAP and Salesforce Integration...

Pentaho Analytics. Un gran salto

Ya se ha lanzado Pentaho 7 y con grandes sorpresas. Descubre con nosotros las mejoras de la mejor suite Open BI

La mejor oferta de Cusos Open Source

Después de la gran acogida de nuestros Cursos Open Source, eminentemente prácticos, lanzamos las convocatorias de 2016

29 sept. 2013

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.

1 comentarios:

Juan carlos Ramos dijo...

Hola Disculpa quería consultarte si hay forma de realizar una pre-carga de los reportes de saiku. Para cuando se necesiten ejecutar reportes que demoran demasiado tiempo, estos ya se encuentren en cache y su ejecución sea prácticamente inmediata. Yo logre esto con jpivot, pero no lo logro hacer con saiku. Muchas gracias