Una de las características más importantes de los cubos de O3 es la posibilidad de manejar jerarquías para las dimensiones. Las jerarquías le permiten al usuario analizar la información no sólo desde diferentes perspectivas, sino también en diferentes niveles de detalle.
En la definición del modelo de un cubo se definen las jerarquías relacionadas con cada una de sus dimensiones, especificando los posibles niveles de detalle que el usuario podrá consultar.
Para una dimensión Fecha, por ejemplo, pueden definirse los niveles Año, Trimestre, Mes y Semana, para que el usuario pueda analizar la información en cualquiera de estos niveles del cubo.
Es importante considerar que la información obtenida de las fuentes para construir un cubo se da siempre para un nivel en particular (nivel base o de entrada) en cada una de las dimensiones que forman el cubo. En el ejemplo de la dimensión Fecha este nivel puede ser Semana.
Cada vez que un usuario consulta un nivel por encima del nivel de entrada para una o más dimensiones (Año, Trimestre o Mes en el ejemplo) O3 realiza una agregación para resolver la consulta (a través de la operación de agregación definida para la medida consultada) desde el nivel de entrada o base de datos en cada una de las dimensiones (Semana por ejemplo). Dependiendo del número de registros manejados por el cubo, las operaciones de agregación pueden involucrar grandes cantidades de registros, y por lo tanto afectar negativamente el tiempo de respuesta para ciertas consultas.
La redundancia es el mecanismo que hace posible la inclusión de información previamente calculada en el momento que se hace la consulta (cuando el cubo se construye, por ejemplo) para niveles de agregación por encima del nivel base o de entrada.
De esta forma, si el usuario consulta un nivel para el cual se ha incluido redundancia (nivel de redundancia) no será necesario hacer una agregación ya que el cálculo ya existirá almacenado en el cubo, agilizando los tiempos de respuesta.
Por otro lado, si las consultas se hacen por encima de un nivel precalculado, O3 usará estos niveles para la agregación en vez de los registros de nivel base.
Como la redundancia consiste en información precalculada que se almacena como parte del cubo, el usuario debe observar que esta inclusión afectará el tamaño final del cubo. Por lo tanto, la cantidad de redundancia incluida en el cubo debe ser controlada para evitar que ocupe demasiado espacio.
La tarea de definir la redundancia apropiadamente consiste en alcanzar un equilibrio entre el espacio extra ocupado por el cubo como consecuencia de la redundancia y el beneficio que ofrece a los tiempos de respuesta de las consultas. En la mayoría de los casos, unos pocos niveles de redundancia cuidadosamente seleccionados representan una gran mejoría para los tiempos de respuesta, con muy poco espacio de almacenamiento extra.
Definición de Redundancia
La redundancia de un cubo es la selección de los niveles para las dimensiones en las que los valores serán precalculados. La redundancia en un cubo se definirá por un conjunto de niveles de redundancia.
Niveles de Redundancia
Un nivel de redundancia debe especificar un nivel para cada una de las dimensiones del cubo. Los datos correspondientes a la combinación de niveles especificados se precalcularán en el cubo.
Si al consultar el cubo el usuario se encuentra en el nivel de redundancia para cada dimensión, los datos se calcularán de antemano y no será necesario hacer cálculos para responder a la consulta.
Además, si en una o más dimensiones el usuario se encuentra por encima del nivel de redundancia, puede usarse para el cálculo reduciendo el número de registros y como consecuencia, el tiempo de respuesta.
Ejemplo
Consideremos un cubo arbitrario con las siguientes dimensiones:
Dimensión |
Número de niveles |
Dimension1 |
4 |
Dimension2 |
3 |
Dimension3 |
2 |
Dimension4 |
3 |
Estos son ejemplos de niveles de redundancia:
(3, 2, 1, 2) |
Nota
Para la definición de una redundancia los niveles de cada dimensión están numerados en orden ascendente, siendo 0 el nivel más bajo en la jerarquía.
Para evaluar el impacto de un nivel de redundancia en un cubo, el usuario debe considerar que cada nivel de redundancia generará nuevos registros en el cubo.
Cuanto más altos sean los niveles que forman el nivel de redundancia, más bajo será en número de registros generados.