Operadores para consultas relacionadas con reclasificaciones en un modelo temporal multidimensional
Operators for reclassification queries in a temporal multidimensional model
Francisco Moreno1, Fernando Arango2
1 Ingeniero de sistemas. Ph.D. en Ingeniería, Universidad Nacional de Colombia, Sede Medellín. fjmoreno@unal.edu.co
2 Ingeniero Civil. M.Sc y Ph.D. Universidad Nacional de Colombia, Sede Medellín. farango@unal.edu.co
RESUMEN
Usualmente las dimensiones de una bodega de datos son consideradas estáticas porque su esquema y datos tienden a no cambiar. Sin embargo, tanto el esquema como los datos de las dimensiones pueden cambiar. Este artículo se enfoca en un tipo de cambio dimensional denominado reclasificación, que ocurre cuando un miembro de un nivel cambia de miembro en un nivel superior de la dimensión, ejemplo, cuando un producto cambia de categoría (es reclasificado). Este tipo de cambios da lugar al concepto período de clasificación y a un tipo de consultas que pueden ser útiles para la toma de decisiones. Verbigracia, ¿cuál fue el total vendido del producto ajedrez durante su primer periodo de clasificación en la categoría juguete? Para facilitar el planteamiento de este tipo de consultas se propone un conjunto de operadores y se muestra como éstos se incorporan en SQL, un lenguaje familiar para los desarrolladores de bases de datos. También se demuestra la expresividad de los operadores propuestos, ya que la formulación de esas consultas sin usar estos operadores usualmente conduce a soluciones complejas y poco intuitivas.
Palabras claves: bodegas de datos temporales, OLAP, reclasificación, período de clasificación.
ABSTRACT
Data warehouse dimensions are usually considered to be static because their schema and data tend not to change; however, both dimension schema and dimension data can change. This paper focuses on a type of dimension data change called reclassification which occurs when a member of a certain level becomes a member of a higher level in the same dimension, e.g. when a product changes category (it is reclassified). This type of change gives rise to the notion of classification period and to a type of query that can be useful for decision-support. For example, What were total chess-set sales during first classification period in Toy category? A set of operators has been proposed to facilitate formulating this type of query and it is shown how to incorporate them in SQL, a familiar database developer language. Our operators´ expressivity is also shown because formulating such queries without using these operators usually leads to complex and nonintuitive solutions.
Keywords: temporal data warehouse, OLAP, reclassification, classification period
Recibido: febrero 01 de 2010. Aceptado: febrero 7 de 2011
Introducción
En los últimos años las bodegas de datos (BD) (Kumar, 2008; Golfarelli, 2009a) han demostrado su utilidad en la integración de sistemas de información y en el soporte a la toma de decisiones. Las BD se modelan usualmente de manera multidimensional. Un modelo multidimensional posee un conjunto de dimensiones asociadas con un fenómeno de interés para una organización denominado hecho. Una dimensión se compone de niveles, organizados jerárquicamente de acuerdo a las necesidades de la información (Torlone, 2003). Así, en una dimensión tiempo con niveles día, mes y año, los días se agrupan en meses y los meses en años; en una dimensión producto con niveles producto y categoría, los productos se agrupan en categorías.
Los hechos típicamente incluyen medidas, es decir, indicadores que permiten evaluar actividades específicas de una organización (Malinowski, 2008). Estas medidas se pueden agregar por medio de los niveles de las dimensiones, lo que permite analizar la información desde diferentes niveles de granularidad. Por ejemplo, considérese un hecho venta, con una medida total vendido, asociado con las dimensiones tiempo y producto. Esta organización de la información facilita consultas tales como "obtener el total vendido de un producto, diaria, mensual o anualmente".
Usualmente las dimensiones se consideran estáticas, mientras que a los hechos se los interpreta dinámicos, ya que nuevos hechos se insertan periódicamente en la BD. Sin embargo, el esquema y los datos de una dimensión también pueden cambiar (Golfarelli, 2009b). Este artículo se enfoca en un tipo de cambios llamado reclasificación y en un tipo de consultas que se originan a raíz de dichos cambios. Una reclasificación sucede cuando un miembro de un nivel cambia de miembro en un nivel superior de la dimensión, por ejemplo, cuando un producto clasificado como juguete pasa a ser clasificado como educativo.
Las reclasificaciones son frecuentes en diversos escenarios: un producto cambia de categoría, un vendedor rota por las tiendas, una tienda o un cliente cambian de estatus, un jugador cambia de equipo, un huracán se mueve de una región a otra, entre otros. En particular, en la reclasificación de productos es posible que un producto experimente varias reclasificaciones durante su existencia. Por tanto, un producto ajedrez puede ser clasificado como juguete durante un periodo (Per1), luego ser clasificado como educativo durante otro periodo (Per2), y posteriormente volver a ser clasificado como juguete. Esta sucesión de reclasificaciones puede originar consultas como: ¿Cuál fue el total vendido del producto ajedrez en el primer periodo cuando fue clasificado como juguete? ¿En sus tres primeros períodos cuándo fue clasificado como educativo? ¿Cuál ha sido el período de clasificación en el que el total vendido del producto ajedrez han sido las más altas y en cuál categoría estaba? ¿Mejoran las ventas de un producto en los períodos cuando se clasifica como educativo con respecto a los periodos en que se clasifica como juguete?
Las respuestas podrían ayudar a identificar los períodos apropiados para reclasificar los productos con el fin de incrementar las ventas. En otros escenarios, consultas análogas podrían servir para ajustar las políticas de rotación de personal o evaluar el desempeño de los jugadores a medida que rotan por los equipos, evaluar el impacto de fenómenos naturales cíclicos y de las políticas diseñadas para minimizar sus estragos, por ejemplo: ¿disminuyó el área de cultivos destruidos la segunda vez que el fenómeno de El Niño afectó a Perú? En este artículo se propone un conjunto de operadores para facilitar la formulación de este tipo de consultas. El resto del artículo se organiza así: en la sección 2 se presentan trabajos relacionados; en la sección 3 se ofrece el modelo formal temporal multidimensional; en la sección 4 se introduce y formaliza el concepto de período de clasificación; en la sección 5 se proponen y ejemplifican operadores para consulta de períodos de clasificación; en la sección 6 se incorporan los operadores en SQL; y finalmente, en la sección 7, se plantean las conclusiones y el trabajo futuro.
Trabajos relacionados
Aunque se han propuesto lenguajes de consulta multidimensionales (Cabibbo, 1997; Datta, 1999; Pedersen 2001; Jensen, 2004; Whitehorn, 2005), éstos carecen de elementos que consideren el aspecto dinámico de las dimensiones. Sin embargo, existen trabajos que consideran este aspecto. Hurtado (1999) y Blaschka (1999) proponen operadores para borrrar, insertar y actualizar el esquema y los datos de las dimensiones. Kaas (2004) propone operadores para cambiar el esquema de una BD, entre ellos operadores para insertar y borrar dimensiones y niveles. Otros autores (Eder, 2001; Body, 2002; Morzy, 2004; Golfarelli, 2006; Ravat, 2006; Rechy-Ramirez, 2006; Wrembel, 2007), se enfocan en el problema de versionamiento de una BD, es decir, cómo transformar o consultar datos que abarcan varias versiones de una BD originadas a partir de cambios en las dimensiones. Un estado del arte reciente sobre BD que consideran aspectos temporales, se puede ver en Golfarelli (2009b).
Unos pocos trabajos tratan específicamente con reclasificaciones. Chamoni (1999), Pedersen (2001) y Malinowski (2008) usan intervalos para registrarlas; no obstante, no plantean operadores que faciliten la formulación de consultas como las enunciadas en la sección 1. Por otro lado, en (Mendelzon, 2000) y (Vaisman, 2004) se propone un modelo multidimensional que soporta cambios en el esquema y en los datos de las dimensiones. También se propone un lenguaje de consulta denominado Tolap. Una consulta como "cuál fue el total vendido del producto ajedrez cuando ha sido clasificado como juguete" se puede formular en Tolap, pero este lenguaje no está orientado a resolver consultas como las enunciadas en la sección 1. Finalmente, en Moreno (2009a) se identifica informalmente este tipo de consultas, y en Moreno (2010) se propone un operador que puede ser considerado como una primera aproximación para resolver algunas de estas consultas. Un enfoque más completo y diferente se plantea aquí. Además, este nuevo enfoque puede ser fácilmente incorporado en SQL.
Modelo temporal multidimensional
El modelo multidimensional que se presenta a continuación se
basa en el trabajo de Moreno (2009b), que a su vez se basó en
el de Mendelzon (2000).
representa el conjunto de los números naturales que incluyen el cero y
.
Dimensiones
Un esquema de dimensión es una 5-tupla (DNOMBRE, ND,
, All,⊥), donde: i) DNOMBRE es nómbrela denominación del esquema de dimensión, ii) ND es un conjunto de niveles. Cada nivel n ∈ ND se asocia con un conjunto de miembros (valores del nivel), es decir, un dominio denotado dom(n). Un miembro puede incluir atributos (Golfarelli, 2009b), los cuales dan información adicional sobre el nivel, iii)
es un orden parcial en el conjunto ND. Sean n1, n2 ∈ ND, n1
n2 , significa que n1 rolls up to n2 (n1 se agrupa en n2). Se denota
′ a la reducción transitiva de
, iv) All ∈ND es el nivel superior del orden parcial
, es decir, ∀n ∈ ND, n
All; dom(All) = {all} y v) ⊥ ∈ ND es el nivel inferior del orden parcial
, es decir, ∀n ∈ ND, ⊥
n.
Ejemplo 1. Sea el esquema de dimensión (PRODUCTO, {Producto, Categoría, All},
, All, Producto), donde
´ = {(Producto, Categoría), (Categoría, All)}. Un miembro del nivel Producto podría incluir atributos como nombre, precio y descripción.
Adición de tiempo a las dimensiones
El tiempo se representa en forma discreta, o sea que un punto en la línea del tiempo corresponde a un entero positivo. Un entero positivo representa una instancia de una unidad temporal, por ejemplo, una hora, un día, un mes. Por claridad, se escribirá ‘día 1´ (o un valor como ‘enero 1 de 2000´) en vez de simplemente un 1. Además, sean x, y, z ∈
, [x, z] representa un intervalo que corresponde a un conjunto de enteros positivos: x <= y <= z. Las funciones Inicio(I) y Fin(I) devuelven el primer y el último entero positivo de un intervalo I, respectivamente.
Existe una relación ser más fino que entre algunas unidades temporales. Por ejemplo, cada día está incluido en un mes específico, así la unidad temporal Día es más fina que la unidad temporal Mes. Por otro lado, Semana no es más fina que Mes, y Mes es
no es más fino que Semana. Sean μ1 y μ2 unidades temporales, si μ1 es más fina que μ2, se escribe μ1
μ2.
El tiempo se incorpora a las dimensiones (excepto a la dimensión TIEMPO) de dos maneras. La primera es adicionando un intervalo a cada miembro de un nivel con el fin de registrar su tiempo de existencia en la BD. La segunda es adicionando un intervalo entre dos miembros, con el propósito de registrar los períodos correspondientes a sus asociaciones (clasificaciones).
Sea un esquema de dimensión (DNOMBRE, ND,
, All, ⊥ ). Una pareja de niveles (n1, n2) ∈
´, n2 ≠ All se puede asociar con una unidad temporal μ, la cual define la granularidad temporal de reclasificación (GTR) entre n1 y n2. Se dice entonces que la pareja (n1, n2) es temporal.
Ejemplo 2. Considérese el ejemplo 1. Un producto se clasifica en una categoría durante un período de días. Por lo tanto, se asocia una GTR μ = Día con la pareja (Producto, Categoría) con el objetivo de registrar las asociaciones entre productos y categorías sobre una base diaria.
Una instancia de un esquema de dimensión es una 2-tupla (D,
FR), donde D es un esquema de dimensión y FR un conjunto de funciones rollup. Sea ND el conjunto de niveles de D; n1, n2 ND, y
el orden parcial en el conjunto ND entonces: i) para cada pareja temporal (n1, n2) ∈
´ con GTR μ, existe una función rollup RUP_n1_n2: dom(n1) x dom(μ)→ dom(n2) y ii) para cada pareja no-temporal (n1, n2) ∈
´, existe una función rollup RUP_n1_n2: dom(n1)→ dom(n2). Nótese que RUP_n1_n2 es un metanombre, es decir, n1 y n2 se refieren a nombres de niveles.
Ejemplo 3. Sea una instancia del esquema de dimensión del
ejemplo 2. Sean los dominios: dom(Categoría) = {Juguete, Educativo}, dom(Producto) = {Prod1, Prod2}, dom(All) = {all} y dom(Día) =
Las funciones rollup entre los miembros de los niveles en el
´ de ND se muestran en la tabla 1. Por ejemplo,
RUP_Producto_Categoría(Prod1, día 1) = Juguete.
Hechos
Un esquema de hecho es una 3-tupla (FNOMBRE, FL, M), donde: i) FNOMBRE es como se llama el esquema de hecho, ii) FL = {n1, …, nk} es un conjunto de niveles. Cada nivel ni ∈ FL es el nivel inferior (⊥) en un esquema de dimensión y iii) M = {m1, …, mm} es un conjunto de medidas. Cada medida mi se asocia con un dominio dom(mi).
Ejemplo 4. Sea el esquema de hecho (VENTAS, {Producto, Vendedor, Día}, {TotalVendido, UnidadesVendidas}), como se ilustra en la figura 1. Se usa la notación de Malinowski (2008) para representar el modelo conceptual, la cual se basa en la notación del modelo entidad-relación. Se adiciona la representación de las GRTs (Moreno, 2009b).
Una instancia de hecho de un esquema de hecho (FNOMBRE, FL, M), FL = {n1, …, nk} y M = {m1, …, mm}, es una 2-tupla (fl, m) donde fl = {miembro(n1), …, miembro(nk)} es un conjunto de miembros y m = {valor(m1), …, valor(mm)} es un conjunto de valores de medidas. Cada miembro(ni,/)∈ dom(ni) es un miembro de un nivel inferior (⊥) en una instancia de esquema de dimensión. Cada valor(mi) ∈ dom(mi) es un valor para la medida mi.Una tabla de hechos es un conjunto de instancias de hecho.
Ejemplo 5. Sean los dominios: dom(Producto
) = {Prod1, Prod2},dom(Vendedor) = {Vend1, Vend2} y dom(Día) =
. Una tabla de hechos Ventas correspondiente al esquema de hecho VENTAS del ejemplo 4 es {({Prod1, Vend1, día 1}, {1000, 2}), ({Prod1, Vend2, día 1}, {1500, 3}), ({Prod2, Vend1, día 2},{2000, 4}), ({Prod2, Vend2, día 2}, {500, 1})}.
Períodos de clasificación
Informalmente un período de clasificación (PC) es un intervalo durante el cual determinado miembro de un nivel se asocia con cierto miembro de un nivel superior, por ejemplo, un PC de un producto en una categoría, de un vendedor en una tienda, de una tienda en un estatus. A continuación se presenta una definición formal de un PC entre un miembro a de un nivel n1 y un miembro b de un nivel superior nk de n1. Sean n1, n2, n3, …, nk niveles de un esquema de dimensión, k > 1, donde n1
´ n2
´ n3 …
´ nk. Sea U≠ Ø el conjunto de GTRs a lo largo del camino n1
´ n2
´ n3 …
´ nk, a ∈dom(n1) y b ∈ dom(nk). Un PC de a en b es un intervalo l con granularidad temporal μ´, donde: i) ∀μ∈ U, μ´
μ, ii) ∀t ∈ l, RUP_n1_nk(a, t) = b, iii) si RUP_n1_nk (a, Inicio(l) − 1) está definida, entonces RUP_n1_nk(a, Inicio(l) − 1) ≠ b, y iv) si RUP_n1_nk(a, Fin(l) + 1) está definida, entonces RUP_n1_nk(a, Fin(l) + 1) ≠ b.
Nótese que las condiciones iii) y iv) garantizan que I es un intervalo máximo durante el cual a se asocia con b. Si U = Ø entonces durante su existencia en la BD a se asocia siempre con b; por lo tanto, se considera a l como el único PC de a en b, donde Inicio(l) y Fin(l) corresponden al tiempo de existencia de a en la BD.
Ejemplo 6. Considérese el ejemplo 4. Los valores rollup (categorías) correspondientes a Prod1 se muestran en la tabla 2.
A partir de la tabla 2 se observa que [día 1, día 45], [día 211, día 390] y [día 481, día 540] son PC de Prod1 en la categoría juguete. Ahora se considera el orden de los PC entre dos miembros y se define el concepto del n-ésimo PC. Sea l un PC de a en b. l es el primer PC de a en b si no existe un PC I´ de a en b tal que Fin (l´) < Inicio(l). l es el segundo PC de a en b, si existe sólo un PC
l´ de a en b tal que Fin(l´) < Inicio(l). En general, sea
= {l1, l2, …, ln} un conjunto de PC de a en b; por lo tanto, li ∈
es el nésimo PC de a en b, donde 
. Este número se denomina número de PC. Por ejemplo, a partir del ejemplo 6 se tiene que [día 1, día 45] es el primer PC de Prod1 en la categoría juguete, [día 211, día 390] es el segundo y [día 481, día 540] es el tercero.
Operadores de consulta para PC
Considérese el ejemplo 6. La operación rollup RUP_ Producto_Categoría (Prod1, día 1) retorna la categoría del Prod1 en el día 1 (juguete). Sin embargo, la operación no retorna ni el número ni el intervalo correspondiente al PC de Prod1 en dicha categoría. Para obtener estos datos se propone un conjunto de operadores de consulta para PC. Los operadores deben responder a peticiones de usuario reales, como los descritos en la sección 1 y en la tabla 3
Sean n1, n2, n3, …, nk niveles de un esquema de dimensión, k > 1, donde n1
´ n2
´ n3 …
´ nk. Sea U ≠ Ø el conjunto de GTRs a lo largo del camino n1
´ n2
´ n3 …
´ nk; y μ´ una unidad temporal arbitraria, donde ∀μ∈ U, μ´
μ. En la tabla
4 se presentan los operadores de consulta para PC propuestos. Si U = Ø, es decir, todas las parejas del camino n1
´ n2
´ n3 …
´ nk son no-temporales, entonces #PC_n1_nk y #PCs_n1_nk retornan 1, e IPC_n1_nk retorna un intervalo l con granularidad
temporal μ´, donde Inicio(l) y Fin(l) corresponden al tiempo de existencia de a en la BD, donde a es el miembro perteneciente al dominio de n1.
Incorporación de los operadores de consulta para PC en SQL
En esta sección se muestra cómo se incorporan los operadores para PCs en SQL, un lenguaje familiar para los desarrolladores de bases de datos. Otra opción a considerar es MDX (Whitehorn, 2005), un lenguaje de consulta multidimensional (no temporal). En la figura 2 se muestran algunas tablas SQL del esquema de la figura 1. La tabla Prod_Cat representa la relación temporal entre producto y categoría. En la tabla 5 se registran consultas relacionadas con PC. A continuación se ofrece una solución en SQL (sin usar los operadores propuestos) para la última consulta de la tabla 5. Primero se enumeran los PC de cada producto en cada categoría:
CREATE VIEW PCs AS SELECT IdProd, NomCat, ROW_NUMBER() OVER (PARTITION BY IdProd, NomCat ORDER BY DiaInicio) AS NroPC, DiaInicio, DiaFin FROM Prod_Cat;
Ahora se obtiene el total vendido de cada producto en cada PC:
SELECT IdProd, NomCat, NroPC, SUM(Total vendido) AS Total FROM PCs, Ventas
WHERE IdProd = Producto AND Dia BETWEEN DiaInicio AND DiaFin
GROUP BY IdProd, NomCat, NroPC;
Nótese que aunque la función analítica ROW_NUMBER facilita la formulación de esta consulta, la expresión correspondiente de la tabla 5 es más simple e intuitiva. Por otro lado, la simulación de una consulta que incluya operadores de PC entre dos niveles no adyacentes, por ejemplo, vendedor y estatus, es mucho más compleja y larga. Por límites de espacio no se presenta.
Conclusiones y trabajos futuros
Debido a las reclasificaciones que se pueden presentar entre los miembros de los niveles de una dimensión se introdujo el concepto período de clasificación. Este concepto da origen a un tipo de consultas que pueden ayudar en la toma de decisiones estratégicas en varios escenarios, tales como ventas, deportes, recursos humanos, fenómenos naturales, entre otros.
Se propuso un conjunto de operadores para facilitar la formulación de las consultas expuestas y se mostró cómo estos operadores se pueden incorporar en un lenguaje como SQL. También se expuso el esfuerzo de codificación requerido para simular los operadores propuestos en SQL, evidenciando así su expresividad.
Se plantea desarrollar los siguientes trabajos: i) extender los operadores al campo de las BD espaciales, de esta forma se podrían estructurar consultas como "obtener el total vendido por un vendedor en sus dos primeros PC cuando estuvo asociado con las tiendas delimitadas por una región determinada", ii) permitir PC superpuestos, por ejemplo, un producto podría pertenecer a varias categorías durante un mismo tiempo y iii) dividir un PC; por ejemplo, supóngase que se presenta la reelección de un gerente como presidente de un departamento. En vez de manejar un único PC para el presidente en ese departamento, se podrían definir dos PC: uno correspondiente a su primer mandato y otro a su segundo. De esta forma se podría evaluar su desempeño durante cada mandato.
Agradecimientos:
Este trabajo hace parte de los resultados del doctorado en Ingeniería - Sistemas, del primer autor.Referencias
Blaschka, M., Sapia, C., Höfling, G., On schema evolution in multidimensional databases., 1st DaWaK, Florencia, Italia, 1999, pp. 153 - 164.
Body, M., Miquel, M., Bèdard, Y., Tchounikine, A., A multidimensional and multiversion structure for OLAP applications., 5th DOLAP, McLean, USA, 2002, pp. 1 - 6.
Cabibbo, L., Torlone, R., Querying multidimensional databases., 6th DBPL-6, Estes Park, USA, 1997, pp. 319-335.
Golfarelli, M., Lechtenbörger, J., Rizzi, S., Vossen, G., Schema Versioning in Data Warehouses., Data and Knowledge Engineering, Vol. 59, No. 2, 2006, pp. 435-459.
Golfarelli, M., Rizzi, S., Data Warehouse Design: Modern principles and methodologies., 1st Edn., McGraw-Hill Osborne Media, New York, 2009a.
Golfarelli, M., Rizzi, S., A Survey on Temporal Data Warehousing.,Int. Journal of Data Warehousing and Mining, Vol. 5, No. 1, 2009b, pp. 1-17.
Hurtado, C. A., Mendelzon, A. O., Vaisman, A. A., Updating OLAP dimensions., ACM 2nd DOLAP, Kansas City, USA, 1999, pp. 60 -66.
Jensen, C. S., Kligys, A., Pedersen, T. B., Timko, I., Multidimensional Data Modeling for Location-based Services., VLDB Journal, Vol. 13, No. 1, 2004, pp. 1-21.
Kaas, C., Pedersen, T. B., Rasmussen, B., Schema evolution for stars and snowflakes., 6th ICEIS, Porto, Portugal, 2004, pp. 425-433.
Kumar, N., Gangopadhyay, A., Bapna, S., Karabatis, G., Chen, Z. Measuring interestingness of discovered skewed patterns in data cubes., Decision Support Systems, Vol. 46, No. 1, 2008, pp. 429-439.
Malinowski, E., Zimányi, E., Advanced data warehouse design: from conventional to spatial and temporal applications., Nueva York, Springer, 2008.
Mendelzon, A. O., Vaisman, A. A., Temporal queries in OLAP., 26th VLDB., El Cairo, Egipto, 2000, pp. 242-253.
Moreno, F., Arango, F., Fileto, R., Season Queries on a Temporal Multidimensional Model., 11th IM2 (presentación oral corta), Valencia, España, 2009a.
Moreno, F., Arango, F., Fileto, R., A multigranular temporal multidimensional model., 32nd Mipro, Opatija, Croacia, 2009b, pp. 206-210.
Morzy, T., Wrembel, R., On querying versions of multiversion data warehouse., ACM 7th DOLAP, Washington D.C., USA, 2004, pp. 92-101.
Pedersen, T. B., Jensen, C. S., Dyreson, C. E., A Foundation for Capturing and Querying Complex Multidimensional Data., Information Systems, Vol. 26, No. 5, 2001, pp. 383-423.
Ravat, F., Teste, O., Supporting Data Changes in Multidimensional Data Warehouses., Int. Review on Computers and Software, Vol.1, No. 3, 2006, pp. 251-259.
Rechy-Ramirez, E., Benitez-Guerrero, E., A model and language for bitemporal schema versioning in data warehouses., 15th CIC, Ciudad de Mexico, Mexico, 2006, pp. 309-314.
Torlone, R., Conceptual Multidimensional Models., Multidimensional Databases: Problems and Solutions., M. Rafanelli (ed.), Nueva York, Idea Group, 2003, pp. 69 - 90.
Vaisman, A. A., Mendelzon, A. O., Ruaro, W., Cymerman, S. G., Supporting Dimension Updates in an OLAP Server, Information Systems, Vol. 29, No. 2, 2004, pp. 165-185.
Whitehorn, M., Zare, R., Pasumansky, M., Fast Track to MDX, Nueva York, Springer, 2005.
Wrembel, R., Bebel, B., Metadata Management in a Multiversion Data Warehouse., Journal of Data Semantics, Vol. 8, No. 1, 2007, pp. 118-157.