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.
Etiquetas:
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:
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
Bienvenido a
Open Business Intelligence
© 2024 Creado por Emilio. Tecnología de