HowTo Optimizar los tiempos de construcción en el builder y designer

Unknown macro: {scrollbar}

Consideraciones previas

    ¿Cuando es necesaria esta técnica?

    Esta técnica lo que mejora son los tiempos de construcción, no los relacionados con los tiempos de consultas que luego se hagan en O3, para este tipo de optimización ver el siguiente HowTo
Por lo tanto esta optimización es adecuada cuando tenemos cubos cuya carga demora varias horas, estos son cubos con varios millones de tuplas.

    Resulta obvio también la necesidad en estos casos de que la máquina que construye sea adecuada:

       tenga la memoria suficiente (2 o 3 Gb de RAM)
       procesador rápido (cuanto más rápido mejor)

OPTIMIZACIÓN

    ¿En que consiste la optimización de carga de datos? 

    Consiste en avisarle de antemano al builder y/o designer que los datos van a ingresar ordenados por alguna de las dimensiones. Esto lleva a que O3  haga un mejor aprovechamiento de la cache de cubos.

    ¿Qué dimensiones usar para ordenar los datos? 

    En principo puede ser cualquiera, pero para lograr mejores resultados debemos elegir aquellas que distribuyan mejor la información, por eso lo más habitual es usar la dimensión fecha. 

    ¿Cómo lo hago?

    Veamos esto con un ejemplo:

  Supongamos un cubo con 4 dimensiones: Fecha, Zonas, Vendedores, Artículos

  La numeración de las dimensiones sería la siguiente :

0

Fecha

1

Zonas

2

Vendedores

3

Artículos

A su vez supongamos que la dimensión Fecha tiene los siguientes niveles : Año, Mes, Día

   la numeración de los niveles es:

0

RAIZ

1

Año

2

Mes

3

Día

    y por último supongamos que los datos vienen ordenados en la consulta por fecha/día, esto lo logramos por ej con un ORDER BY en la cláusula SQL, si es un archivo de texto, deberemos ordenarlo al momento de generarlo por la columna necesaria.

En el builder.sh buscamos la línea

# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"

y agregamos las siguientes líneas:

# Add Application System Properties
PROPERTIES="$PROPERTIES -mx200M"
PROPERTIES="$PROPERTIES -Do3.split.dimension=0"
PROPERTIES="$PROPERTIES -Do3.split.dimension.level=3"
PROPERTIES="$PROPERTIES -Do3.split.dimension.redundancy=true"

 En el caso del builder.bat buscar la línea:

rem Add Application System Properties
set PROPERTIES=%PROPERTIES% -mx200M

y agregamos las siguientes líneas:

rem Add Application System Properties
set PROPERTIES=%PROPERTIES% -mx200M
set PROPERTIES=%PROPERTIES% -Do3.split.dimension=0
set PROPERTIES=%PROPERTIES% -Do3.split.dimension.level=3
set PROPERTIES=%PROPERTIES% -Do3.split.dimension.redundancy=true

Debido a que alteramos estas propiedades, es buena idea cambiar el nombre del builder.sh/builder.bat a efectos de personalizarlo para ese cubo en especial y dejar el builder.sh/builder.bat sin tocar para las cargas generales que no necesiten de este procedimiento.

Los mismos cambios pueden realizarse para el componente O3Designer, modificando los respectivos designer.sh/designer.bat