Recientemente hemos estado haciendo una comparativa en Stratebi de rendimiento de consultas MDX sobre un modelo de datos en estrella y un modelo de datos en tabla plana de un cubo “estándar”. La comparativa se ha basado en medir los tiempos de ejecución de distintas consultas MDX para distintos tamaños de tablas de hechos (desde 10.000 hasta 1.000.000 de registros).
Los resultados (ver gráfico) han determinado que hasta los 10.000 re
gistros los dos modelos se comportan de forma similar tardando menos de un segundo en ambos casos. Para valores superiores de número de registros sí es aconsejable utilizar un modelo en estrella para representar los datos. Os dejamos la información de la prueba.
Descargar documento de pruebas
.
1 Datos
Dimensiones y medidas de los datos:
Dimensión |
Niveles |
Formato |
Geografía |
Comunidad Autónoma - Provincia |
Texto |
Cliente |
Nombre |
Texto |
Tiempo |
Fecha |
Date (yyyy-mm-dd hh:mm :ss) |
Medida |
Formato |
Rango |
Horas |
Entero |
0 – 1000 |
Importe |
Entero |
0 – 12.000.000 |
Número de registros en la tabla de hechos usadas para las pruebas:
- 1.000.000
- 250.000
2 Software
- Dos maquinas virtuales con SO Ubuntu 10.04 64 bits sobre un sistema operativo base XEN Cloud 1.0.
- Máquina virtual con Pentaho 3.7
- Máquina virtual para la base de datos MySQL
3 Modelos a comparar
Los dos modelos a comparar son los siguientes:
3.1 Modelo en estrella
3 tablas de dimensiones y una tabla de hechos.
Tablas |
Número de registros |
d_geo |
50 |
d_clientes |
23 |
d_tiempo |
1,880 |
h_hechos |
1.000.000 |
3.2 Modelo en tabla plana
Una sola tabla con 1.000.000 de registros.
4 Consultas MDX y SQL generadas
4.1 Descripción de las consultas MDX
Para hacer la comparativa se han utilizado tres consultas MDX
que se detallan a continuación:
- Consulta 1: vista inicial de las dimensiones agregadas y medida horas.
- Consulta 2: vista con el primer nivel de la dimensión geografía desplegado y medida horas.
- Consulta 3: vista con la dimensión tiempo desplegada en un elemento del segundo nivel de la dimensión geografía y con la dimensión cliente desplegada en un elemento del primer nivel de la dimensión geografía. La medida usada es horas.
5 Tiempos de ejecución
Se han realizado dos pruebas. La primera, para 1.000.000 de registros en la tabla de hechos, calcular el tiempo de ejecución de las tres consultas con los dos modelos. Los resultados (en segundos) se pueden observar a continuación y corresponden a la media de 5 mediciones individuales.
Consulta 1 |
Consulta 2 |
Consulta 3 |
|
Estrella |
0,62 |
4,56 |
24,02 |
Tabla plana |
2,9 |
22,86 |
60,63 |
La segunda prueba consiste en, para la consulta 3, ejecutarla para distintos tamaños de la tabla de hechos y en los dos modelos. Los resultados (en segundos) corresponden a la media de cinco mediciones.
10k |
50k |
100k |
250k |
500k |
1000k |
|
Estrella |
0,17 |
0,59 |
1,05 |
2,89 |
5,13 |
24,02 |
Tabla plana |
0,56 |
2,58 |
4,9 |
13,15 |
24,26 |
60,63 |
6 Conclusiones
6.1 Observaciones
Tamaño de los datos
- Modelo en estrella: 21,2 MB
- Modelo en tabla plana: 73,6 MB
Preparación del entorno
En el modelo en estrella hay que crear el esquema de mondrian. En el caso de utilitzar una tabla plana no hay que crearlo pero usando el Administrador de Data Sources se debe modificar el esquema (niveles).
Número de consultas SQL por consulta MDX
Para ambos modelos se realiza el mismo número de consultas SQL por cada consulta MDX utilizada en la comparativa.
Consultas SQL generadas
- Para consultar información de la tabla de hechos, el modelo de tabla plana utiliza una nueva consulta (select provincia, comunidad, fecha, nombre_cliente, horas, importe from hechos) dentro de la cláusula from (ver consulta SQL generada para la consulta MDX 1).
- Las consultas que requieren de sólo una dimensión sin la tabla de hechos en el modelo de estrella, utilizan la tabla de hechos entera en el modelo de tabla plana (ver consulta SQL 1 generada para la consulta MDX 2).
- Las consultas que requieren hacer un join de una o más dimensiones y la tabla de hechos en el modelo de estrella, requieren sólo de la tabla de hechos en el modelo de tabla plana obviando la cláusula where (ver consulta SQL 3 generada para la consulta MDX 2).
6.2 Conclusiones
Después de realizar la primera prueba de ejecución se ha podido comprobar que el modelo en estrella es más rápido debido al hecho de tener la información separada por dimensiones y hechos y seleccionar en todo momento el mínimo número de tablas para las consultas SQL a realizar.
Con la segunda de las pruebas se ha querido encontrar el límite de registros para el cual la diferencia de tiempo entre la utilización de un modelo u otro es despreciable. Tal y como se puede ver en el gráfico , hasta los 10.000 registros los dos modelos se comportan de forma similar tardando menos de un segundo en ambos casos. Para valores superiores de número de registros sí es aconsejable utilizar un modelo en estrella para los datos.