Open Business Intelligence

La red del Business Intelligence

Buenos días, tengo en este momento un problema de rendimiento con una vista, estoy manejando seguridad con roles, esta misma vista se tarda aproximadamente 10 veces mas cuando la accedo con el usuario que no tiene un rol asignado.


Verifique las consultas sql generadas en mondrian_sql contra el servidor y corren bien.

Al comparar las consultas MDX veo la siguiente diferencia:

ExecutedMondrian: 3258ms ****** Sorted: 10ms ****** Rendered: 894ms ->> Usuario Sin Seguridad
ExecutedMondrian: 32286ms ****** Sorted: 7ms ****** Rendered: 349ms ->> Usuario Con Seguridad

Pero las consulta MDX generada es la misma.

- La tabla de hechos es muy pequeña 750.000 registros
- La tabla sobre la cual se aplica la seguridad tiene solo 70 registros. 
- Probé con 2 de las 3 formas de manejar (Roles en pentaho=roles de mondrian y mapeando los de pentaho con los de mondrian) los roles pero los tiempos varían.

Verifique indices en tablas y todo esta Ok.

Lo que no entiendo es que se supone que al utilizar roles en las consultas sql se genera un where que aplica el filtro que defino en los roles ?

Mondrian  aplica la seguridad a nivel de la consulta MDX y donde puedo encontrar el filtro que aplica ?

Muchas gracias.

Visitas: 398

Respuestas a esta discusión

Que buen tema.

Asumo que mondrian aplica los filtros por rol en su modelo en memoria, ya que de lo contrario estría haciendo mal uso del cache si realiza las mismas consultas nuevamente.

Puedes verificar las consultas que se generan agregando a <bi-server_home>/pentaho-solution/system/mondrian/mondrian.properties lo siguiente:

mondrian.rolap.generate.formatted.sql=true


Luego debes modificar <bi-server_home>/tomcat/webapps/pentaho/WEB-INF/classes/log4j.xml agregando:

Appenders:

appender name="SQLLOG" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="sql.log"/>
     <param name="Append" value="false"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="1"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
     </layout>
   </appender>
   <!-- Add the following appender only if you're interested in logging MDX statements -->
   <appender name="MONDRIAN" class="org.apache.log4j.RollingFileAppender">
     <param name="File" value="mondrian.log"/>
     <param name="Append" value="false"/>
     <param name="MaxFileSize" value="500KB"/>
     <param name="MaxBackupIndex" value="1"/>
     <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
     </layout>
   </appender>
Categories:
<!-- and logs only to the SQLLOG -->
   <category name="mondrian.sql">
      <priority value="DEBUG"/>
      <appender-ref ref="SQLLOG"/>
   </category>
   <!-- and logs only to the MONDRIAN -->
   <category name="mondrian">
      <priority value="DEBUG"/>
      <appender-ref ref="MONDRIAN"/>
   </category>


Muchas gracias Mariano, efectivamente veo con los Appenders que en las consultas sql generadas no aplica los filtros de la seguridad, seguramente lo hace en memoria como dices.

Como puedo enfrentar este problema de rendimiento, efectivamente se que tiene que ver con la seguridad, pero es configurable esto en mondrian ? porque la vista total con los demas joins se me tarda

3 segundos aprox. sin seguridad vs 1:37 aprox con seguridad

y esto no es nada bueno para el usuario.

Puedo de alguna forma asignarle mas memoria a Mondrian para que cuando aplique el filtro en su modelo en memoria mejore el tiempo de respuesta ?



El cache de mondrian utilizará la memoria de la JVM, por ende si quieres agregar memoria a mondrian deberás asignarle más memoria a tomcat. Respecto de como atacar el problema, no veo la forma más que plantearlo en el blog de Julian Hyde el creador de mondrian, ya que no es un problema de sql que es más tratable.

Saludos

Mariano

Ok,

Mariano mil gracias hermano !!

RSS

Distintivo

Cargando…

© 2024   Creado por Emilio.   Tecnología de

Emblemas  |  Reportar un problema  |  Términos de servicio