Sie sind auf Seite 1von 18

Las bases de datos multidimensionales se utilizan principalmente para crear aplicaciones OLAP y pueden verse como bases de datos

de una sola tabla, su peculiaridad es que por cada dimensin tienen un campo (o columna), y otro campo por cada mtrica o hecho, es decir estas tablas almacenan registros cuyos campos son de la forma: (d1,d2,d3,...,f1,f2,f3,...) Donde los campos 'di' hacen referencia a las dimensiones de la tabla, y los campos 'fi' a las mtricas o hechos que se quiere almacenar, estudiar o analizar.

Base de datos Multivaluada [1]


Las bases de datos Multivaluadas (multivalue database) son un tipo especial de base de datos multidimensionales, tambin llamadas bases de datos PICK por el primer desarrollo que se realiz de este tipo, la aplicacin "Pick operating system".

[editar] Historia
El modelo de datos multivaluado fue definido por Don Nelson a mediados de los 60, y en 1968 se realiz la primera implementacin de un sistema de bases de datos multidimensional, este desarrollo se atribuye a Dick Pick (de ah que tambin se utilice el termino Base de datos Pick para este tipo de bases de datos).

[editar] Concepto
El modelo de datos ms extendido es el modelo relacional, este modelo se basa en las leyes de la normalizacin de bases de datos; segn ests normas, y concretamente, segn la primera forma normal, un campo de una base de datos no puede contener valores mltiples. En una base de datos multivaluada no se aplica la regla de la primera forma normal, es decir, se permite que un campo pueda tener ms de un valor almacenado.

[editar] Ejemplo
Supongamos una base de datos en la que queremos almacenar informacin de clientes; se supone que cada cliente puede tener ms de un telfono. En el modelo relacional habra que crear dos tablas o relaciones como estas: Tabla 'Cliente' ID Cliente Nombre Apellido 123 Rachel Ingram 456 James Wright 789 Maria Fernndez Tabla 'Telfono cliente' ID Cliente Telfono

123 456 456 789

555-861-2025 555-403-1659 555-776-4100 555-808-9633

En el modelo multivaluado la siguiente tabla (que no cumple la primera forma normal) es perfectamente vlida: Tabla 'Cliente' ID Cliente Nombre Apellido Telfono 123 Rachel Ingram 555-861-2025 555-403-1659 456 James Wright 555-776-4100 789 Maria Fernndez 555-808-9633

http://www.redcientifica.com/doc/doc200104190004.html

Cmo disear grandes variables en bases de datos multidimensionales[1]


Manuel de la Herrn Gascn; Vicent Castellar-Bus[2] http://www.manuherran.com

Se presentan dos problemas asociados al trabajo con variables multidimensionales de gran tamao (la falta de espacio en disco y la necesidad de procesos de clculo de valores agregados ms rpidos) proponiendo diversas soluciones aplicables en tiempo de diseo de la base de datos que las contiene. Aunque pudiera parecer extrao, existen muchos casos en los que el nmero de datos calculados mediante agregacin es muy superior al de los datos simplemente cargados directamente en la base de datos. En la Analoga piramidal de los datos

tendramos una pirmide invertida.

Introduccin El uso de dimensiones es una forma de mostrar (y a veces almacenar) datos muy til en sistemas con grandes cantidades de informacin. Las dimensiones son ejes de anlisis o criterios de clasificacin de la informacin que ofrecen un ndice a los datos mediante una lista de valores. Por ejemplo son dimensiones <Tiempo>, <Geografa> y <Producto>. Se llama DataWarehouse al almacn de datos que rene la informacin histrica generada por todos los distintos departamentos de una organizacin, orientada a consultas complejas y de alto rendimiento. Un DataWarehouse pretende conseguir que cualquier departamento pueda acceder a la informacin de cualquiera de los otros mediante un nico medio, as como obligar a que los mismos trminos tengan el mismo significado para todos. Un Datamart es un almacn de datos histricos relativos a un departamento de una organizacin, as que puede ser simplemente una copia de parte de un DataWarehouse para uso departamental. Tanto el DataWarehouse como el Datamart son sistemas orientados a la consulta, en los que se producen procesos batch de carga de datos (altas) con una frecuencia baja y conocida. Ambos son consultados mediante herramientas OLAP (On Line Analytical Processing) que ofrecen una visin multidimensional de la informacin. Sobre estas bases de datos se pueden construir EIS (Executive Information Systems, Sistemas de Informacin para Directivos) y DSS (Decision Support Systems, Sistemas de Ayuda a la toma de Decisiones). Por otra parte, se conoce como Data Mining al proceso no trivial de anlisis de grandes cantidades de datos con el objetivo de extraer informacin til, por ejemplo para realizar clasificaciones o predicciones. A continuacin se muestra una representacin espacial de una variable multidimensional con una, dos y tres dimensiones. En esta figura los cubitos representan valores de dimensin, y las esferas son datos.

Fig. Variables con una dos y tres dimensiones Una variable unidimensional podra ser el cambio del euro con el dlar, que slo vara en la dimensin <tiempo>. Los cubitos seran, por ejemplo, los das del ao y las esferas seran los valores numricos correspondientes al cambio monetario en cada momento. Un ejemplo de variable de dos dimensiones es el nmero de habitantes, que se mueve por las dimensiones <Geografa> y <tiempo>. Finalmente, los ingresos de una organizacin podran almacenarse mediante una variable de tres dimensiones: <producto>, <Geografa> y <tiempo>. Normalmente los elementos de una dimensin forman una jerarqua, con lo que algunos son padres de otros. Cuando las variables multidimensionales de un datamart o datawarehouse son cargadas con nueva informacin (por ejemplo, mensualmente a partir de ficheros de texto), sta se refiere a los nodos hoja del rbol jerrquico de cada una de las dimensiones. Por ejemplo, la informacin de ventas llega detallada por producto, por provincia y por mes. Pero si queremos obtener el total de ventas de todos los productos, el total de ventas de todas las provincias, el de todos los meses del ao, o alguna combinacin de estos, deberemos realizar un proceso de agregacin de la informacin. Por ejemplo, en la dimensin Producto incluiremos un valor llamado "Total Productos" que ser padre de todos los dems productos y que contendr el acumulado de todos ellos. En la dimensin tiempo podremos tener, por ejemplo, el ao 2000 descompuesto en trimestres, y estos a su vez en meses. La informacin llega detallada por producto y por mes, y posteriormente a la carga de datos, se realiza un proceso de agregacin que calcula estos acumulados.

OLAP, R-OLAP y M-OLAP Un sistema OLAP se puede entender como la generalizacin de un generador de informes. Las aplicaciones informticas clsicas de consulta, orientadas a la toma de decisiones, deben ser programadas. Atendiendo a las necesidades del usuario, se crea

una u otra interfaz. Sin embargo, muchos desarrolladores se dieron cuenta de que estas aplicaciones eran susceptibles de ser generalizadas y servir para casi cualquier necesidad, esto es, para casi cualquier base de datos. Los sistemas OLAP evitan la necesidad de desarrollar interfaces de consulta, y ofrecen un entorno nico valido para el anlisis de cualquier informacin histrica, orientado a la toma de decisiones. A cambio, es necesario definir dimensiones, jerarquas y variables, organizando de esta forma los datos. Para los desarrolladores de aplicaciones acostumbrados a trabajar con bases de datos relacionales, el diseo de una base de datos multidimensional puede ser complejo o al menos, extrao. Pero en general, nuestra experiencia nos dice que el diseo de dimensiones y variables es mucho ms sencillo e intuitivo que un diseo relacional. Esto es debido a que las dimensiones y variables son reflejo directo de los informes en papel utilizados por la organizacin. Una vez decidido emplear un entorno de consulta OLAP, se ha de elegir entre R-OLAP y M-OLAP. R-OLAP es la arquitectura de base de datos multidimensional en la que los datos se encuentran almacenados en una base de datos relacional, la cual tiene forma de estrella (tambin llamada copo de nieve o araa). En R-OLAP, en principio la base de datos slo almacena informacin relativa a los datos en detalle, evitando acumulados (evitando redundancia). En un sistema M-OLAP, en cambio, los datos se encuentran almacenados en ficheros con estructura multidimensional, los cuales reservan espacio para todas las combinaciones de todos los posibles valores de todas las dimensiones de cada una de las variables, incluyendo los valores de dimensin que representan acumulados. Es decir, un sistema M-OLAP contiene precalculados (almacenados) los resultados de todas las posibles consultas a la base de datos. M-OLAP consigue consultas muy rpidas a costa de mayores necesidades de almacenamiento, y retardos en las modificaciones (que no deberan producirse salvo excepcionalmente), y largos procesos batch de carga y clculo de acumulados. En R-OLAP, al contener slo las combinaciones de valores de dimensin que representan detalle, es decir, al no haber redundancia, el fichero de base de datos es pequeo. Los procesos batch de carga son rpidos (ya que no se requiere agregacin), y sin embargo, las consultas pueden ser muy lentas, por lo que se aplica la solucin de tener al menos algunas consultas precalculadas. En M-OLAP, el gran tamao de las variables multidimensionales o el retardo en los procesos batch puede ser un inconveniente. En este documento se proponen algunas soluciones a estos problemas, aplicables en tiempo de diseo de la base de datos.

Clculo del tamao de una variable multidimensional

En lo que sigue supondremos que trabajamos con un sistema MOLAP. Durante el diseo de la base de datos multidimensional, antes de la creacin de los objetos, es interesante predecir, para cada una de las variables que se espera utilizar, y cuyo tamao se supone importante: y y El tamao en disco ocupado por la variable El tiempo que tardar el proceso de agregacin de los valores acumulados

Sin tener en cuenta el uso de tcnicas de compresin, el tamao de una variable multidimensional depender del nmero de valores de cada una de las dimensiones por las que "se mueva" la variable, incluyendo los valores acumulados. Dada una variable multidimensional V dimensionada por D1, D2,... Dn V(D1, D2,... Dn) Siendo N[Di] el nmero de valores de cada dimensin, el nmero de celdas de la variable multidimensional NC[V] ser el producto de estos valores, es decir:

Por ejemplo, dada la variable multidimensional V.Ventas (<Artculo>, <Geografa>, <Tiempo>) Siendo N[<Artculo >] = 10 N[<Geografa>] = 50 N[<Tiempo>] = 20 Podemos calcular el nmero de celdas de la variable de la forma: NC[V] = N[<Artculo >] * N[<Geografa>] * N[<Tiempo>] = 10 * 50 * 20 = 10000 Para los anlisis posteriores nos ser de gran utilidad distinguir cuntas de estas celdas representan informacin acumulada y cuntas representan un detalle. Entendemos como celdas de detalle aquellas que son hojas en todas las dimensiones. Normalmente las variables multidimensionales como V.Ventas y sus dimensiones se definen de forma que las celdas de detalle de la variable puedan ser cargadas mediante la asignacin directa de cada una de las lneas de datos contenidas en el fichero de entrada. Un fichero que cargue nuestra variable de ejemplo podra tener el siguiente aspecto:

"1";"32";"199912";"325" "1";"48";"200001";"222"

"3";"32";"200001";"125" "3";"48";"200001";"1235" El formato de las lneas es: "<Artculo>";"<Geografa>";"<Tiempo>";"Unidades Vendidas"

Cada una de las lneas ledas de este fichero se imputar, en principio, a una celda de detalle. Asignaremos cada dato (el campo Unidades Vendidas) a una celda del cubo de V.Ventas, identificada por un valor de artculo, un valor de geografa y un valor de tiempo. Como ya se ha dicho, las celdas de detalle son aquellas que son hojas en todas las dimensiones. Las celdas de acumulados (o las celdas que no son de detalle) sern aquellas que no son hojas en todas las dimensiones, o lo que es lo mismo, que son celdas de acumulados por al menos una de las dimensiones. Aunque se trabaje con un nmero de dimensiones mayor que tres, las variables n-dimensionales se suelen representar mediante cubos, ya que estas figuras ofrecen una aproximacin intuitiva til a la n-dimensionalidad. Otra forma de ofrecer una visin intuitiva de las variables multidimensionales, esta vez incidiendo en el aspecto de las jerarquas de las dimensiones, es mediante pirmides.

Fig. Analoga piramidal de los datos En esta representacin, las caras de la pirmide que no son su base representan dimensiones, destacndose en ellas las jerarquas. Los valores de detalle corresponden con los bloques inferiores, que soportan al resto. Esta analoga tiene el inconveniente de ocultar el hecho de que existen datos indexados por cualquier valor de cualquier dimensin relacionado con cualquier otro de cada una de las dems, y no slo cada valor de dimensin con los de su mismo nivel jerrquico, como ocurre en la pirmide. Aunque pudiera parecer extrao, existen muchos casos en los que el nmero de datos calculados mediante agregacin es muy superior al de los datos simplemente cargados directamente en la base de datos. Es decir, es posible que el nmero de celdas de

acumulados sea superior al nmero de celdas de detalle, y tengamos una "pirmide invertida". Si suponemos que cada dimensin tiene una nica jerarqua, el nmero total de valores de una dimensin (Dt) ser la suma de los valores que sean padres, es decir, que tengan hijos (Dp) ms aquellos que no los tengan y sean por tanto nodos hoja (Dh). En la primera dimensin Dt1 = Dp1 + Dh1 En la segunda Dt2 = Dp2 + Dh2 En general Dti = Dpi + Dhi Ya que para que una celda se considere detalle, ha de serlo por todas las dimensiones, el nmero total de celdas de detalle (NCD) de una variable multidimensional ser el producto del nmero de valores hoja de cada dimensin

Podra parecernos que el nmero total de celdas acumuladas (NCA) sera el producto del nmero de valores acumulados por cada dimensin, pero esto no es as, ya que basta con que un valor de una dimensin no sea detalle para que todas las celdas referenciadas por ese valor de dimensin tampoco sean detalle. El nmero total de celdas acumuladas (NCA) lo podemos calcular restando del total de celdas (NC), las que son de detalle (NCD). NC[V] = NCD[V] + NCA[V] NCA[V] = NC[V] - NCD[V] El nmero de celdas acumuladas (NCA) ser mayor que el nmero de celdas de detalle (NCD) cuando: NCA[V] > NCD[V] NC[V] - NCD[V] > NCD[V] NC[V] > 2 * NCD[V] Mediante una combinacin de medidas analticas y estimaciones obtenidas de la experiencia, es posible predecir con suficiente calidad la ocupacin de una variable en cuanto a espacio en disco, as como el tiempo requerido para la agregacin de los valores de detalle. Ya que el tamao de las cargas no suele variar mucho de un mes a otro, es habitual realizar experimentos de carga y agregacin con algn reducido conjunto de valores de la dimensin , y extrapolarlos. Por ejemplo, si la carga del detalle de un mes ocupa

5 Mb, la agregacin de estos valores dura 1 hora y el tamao de la base de datos una vez agregados los datos se ha incrementado en 50 Mb, podemos multiplicar estos valores por 12 para una estimacin anual grosso modo. Una vez que hemos estimado el espacio en disco necesario para el almacenamiento de los datos, y el tiempo requerido para las agregaciones, es posible que estos valores superen los recursos disponibles. A continuacin se van a mostrar algunas posibles soluciones a estos problemas, aplicables en tiempo de diseo y en la gran mayora de casos. Para ello, se aprovecharn algunas particularidades del uso que se hace de estas variables.

Cmo reducir el tamao de una variable Las variables multidimensionales pueden estar comprimidas, por ejemplo, mediante la tecnologa sparse de Oracle Express. Sin embargo, es posible que por diversas razones no queramos utilizar una variable comprimida, o que a pesar de utilizar compresin, el espacio ocupado por la variable siga siendo excesivo. Las formas obvias de reducir el tamao de una variable son eliminar dimensiones y eliminar valores de dimensin. Por ejemplo, si podemos prescindir de un detalle diario, y nos basta la informacin semanal, podremos ahorrar mucho espacio en disco. Una vez que las dimensiones y valores de dimensin se han reducido al mnimo aceptable, y existiendo an problemas de espacio, siempre nos queda la opcin de eliminar algunos de los valores acumulados de la dimensin, ya que podrn ser calculados a partir de sus hijos. Pero no deberamos aplicar masivamente esta solucin, ya que entorpeceramos las consultas. Precisamente, las bases de datos multidimensionales pretenden, entre otras cosas, agilizar consultas disponiendo de valores precalculados. Lo ms adecuado es aplicar esta tcnica en dimensiones pequeas. Por ejemplo, si la variable posee alguna dimensin con tres valores, uno de ellos total, eliminando el valor total de la dimensin se ahorra un tercio del espacio, y los clculos realizados bajo demanda suponen sumas de pocos (dos) valores. En cambio, si el nmero de valores de la dimensin fuese elevado, el ahorro sera mucho menor, y los clculos ms lentos. En realidad podramos eliminar cualquiera de los tres valores, y ya que el total ser probablemente el ms consultado tal vez fuera mejor eliminar alguno de los hijos, aunque esto complicara los programas de carga de datos. Sin embargo, en cualquier caso el ahorro conseguido con este mtodo no es muy grande Podremos obtener ahorros mucho mayores sin perder el detalle en las consultas?

La respuesta es, en la mayora de los casos, s. Es muy probable que la variable que queremos comprimir tenga un elevado nmero de dimensiones, y stas a su vez, muchos valores de dimensin. Si tenemos problemas con el tamao de la variable, es porque sta es realmente grande. Ocurre que cuantas ms dimensiones y ms valores de dimensin tiene una variable, tanto menos probable es que algn usuario desee consultar algn valor de la variable que est indexado por valores de dimensin hoja en todas sus dimensiones. Recordemos que se trata de sistemas orientados a la toma de decisiones. En una variable de ocho dimensiones ser rarsimo querer consultar algn dato que no est acumulado en al menos una de las ocho dimensiones. Restringiendo un poco ms la hiptesis, podramos suponer que en todas las consultas a la variable, al menos por una de las dimensiones, se va a solicitar el valor acumulado total (el ms alto de la jerarqua). A continuacin veremos un ejemplo de esto con una variable de tres dimensiones. Esta solucin implica el uso de variables y frmulas multidimensionales. En las bases de datos multidimensionales se almacenan tanto variables como frmulas. Las variables contienen datos. Las frmulas en cambio, son expresiones o programas que acceden a variables y/o a otras frmulas, y que indican la manera de calcular los datos que sern presentados al usuario. Segn la solucin propuesta, en vez de almacenar una variable del tipo V(D1 D2 D3) Se almacenan tres variables: V1(D1 D2) V2(D1 D3) V3(D2 D3) Cuyas necesidades de espacio sern menores o iguales, siempre que se cumpla que NC[V] >= NC[V1] + NC[V2] + NC[V3] Es decir Dt1 * Dt2 * Dt3 >= Dt1 * Dt2 + Dt1 * Dt3 + Dt2 * Dt3 Siendo esta una condicin que se cumple habitualmente. Para el caso que nos ocupa, puede considerarse que se cumple siempre, ya que es condicin suficiente (aunque no necesaria) que en cada dimensin existan al menos tantos valores de dimensin como el nmero total de dimensiones de la variable, es decir, si n es el

nmero de dimensiones y Dti es el nmero de valores de la dimensin i, basta con que se cumpla:

Se construye una frmula F1(D1 D2 D3) que dependiendo del total consultado, extraiga los datos de una u otra variable, de la forma: F1 =

if D1 = 'T' V3 else if D2 = 'T' V2 else if D3 = 'T' V1 else NA Utilizando la analoga espacial, en vez de almacenar todo el cubo de datos, se almacenan slo los datos de las caras del cubo, ya que siempre al menos uno de los ejes (dimensiones) tiene el valor total (que se considera en el eje de coordenadas). Se almacenarn tantas caras de cubo como dimensiones existan, en este caso, slo tres. Por ejemplo, si el nmero de valores de cada dimensin fueran 10, 50 y 20 respectivamente, en vez de almacenar los datos en una variable de 10 * 50 * 20 celdas = 10000 celdas, tendramos tres variables de 10 * 50, 10 * 20 y 50 * 20 celdas, en total, 500 + 200 + 1000 = 1700 celdas. Si obligsemos a que al menos dos dimensiones se consulten como totales, estaramos almacenando las "aristas" del cubo o hipercubo. Por ejemplo, una variable de cinco dimensiones V(D1 D2 D3 D4 D5) Podra almacenarse en 10 variables, cuyo nmero corresponde con todas las combinaciones de las dos dimensiones que se consultarn a total:

D1 D2 D1 D3

D1 D4 D1 D5 D2 D3 D2 D4 D2 D5 D3 D4 D3 D5 D4 D5 O desde otro punto de vista, y dado que comb(n, m) = comb(n, n - m) se trata de todas las combinaciones de las tres de esas cinco dimensiones que no estarn a total:

V1(D1 D2 D3) V2(D1 D2 D4) V3(D1 D2 D5) V4(D1 D3 D4) V5(D1 D3 D5) V6(D1 D4 D5) V7(D2 D3 D4) V8(D2 D3 D5) V9(D2 D4 D5) V10(D3 D4 D5) Construyndose una frmula F1(D1 D2 D3 D4 D5) F1 =

if D1 = V10 else if V9 else if V8 else if V7 else if V6 else if V5 else if V4 else if V3 else if V2 else if

'T' and D2 = 'T' D1 = 'T' and D3 = 'T' D1 = 'T' and D4 = 'T' D1 = 'T' and D5 = 'T' D2 = 'T' and D3 = 'T' D2 = 'T' and D4 = 'T' D2 = 'T' and D5 = 'T' D3 = 'T' and D4 = 'T' D3 = 'T' and D5 = 'T' D4 = 'T' and D5 = 'T'

V1 else NA Esta implementacin afectara a los programas de carga, que deberan realizarse de forma que acumulen (y no slo imputen) cada uno de los datos en todas las variables. Si la variable fuese de dos dimensiones, y obligamos a que al menos una de ellas sea total, tendramos V(D1 D2) Almacenada mediante V1(D1) V2(D2) Que reduce el espacio ocupado siempre que Dt1 * Dt2 > Dt1 * + Dt2 Y crendose la formula F1(D1 D2) F1 =

if D1 = 'T' V2 else if D2 = 'T' V1 else NA Podemos aplicar este sistema con cualquier valor de dimensin y no slo con el valor total, simplemente incluyendo una nueva variable que implcitamente almacene los valores que correspondan con ese valor de dimensin, cuya dimensin ser precisamente la que esa variable no posee. Por ejemplo, dada una variable multidimensional de cuatro dimensiones: V(D1 D2 D3 D4) Si la dimensin D2 estuviese formada por un total T que tuviese dos hijos subtotales ST1 y ST2, y restringiramos las consultas de forma que se suponga que siempre se soliciten datos indexados por al menos un total o subtotal por alguna de las dimensiones, los datos se pueden almacenar en las variables:

V1(D1 D2 D3) Implcitamente supone D4 a T

V2(D1 D2 D4) Implcitamente supone D3 a T V3(D1 D3 D4) Implcitamente supone D2 a T V4(D2 D3 D4) Implcitamente supone D1 a T V5(D1 D3 D4) Implcitamente supone D2 a ST1 V6(D1 D3 D4) Implcitamente supone D2 a ST2 Crendose la frmula F1(D1 D2 D3 D4) F1 =

if D1 = V4 else if V3 else if V2 else if V1 else if V5 else if V6 else NA

'T' D2 = 'T' D3 = 'T' D4 = 'T' D2 = 'ST1' D2 = 'ST2'

Cmo reducir el tiempo de las agregaciones En algunas implementaciones de bases de datos multidimensionales, el tiempo necesario para precalcular todas las posibles agregaciones de una variable multidimensional es excesivo. Aunque hay espacio suficiente para poseerlas todas, no hay tiempo suficiente para calcularlas. Si el numero de agregaciones es excesivo, una solucin es no precalcularlas todas, y calcularlas bajo demanda. Es decir, simplemente podemos dejar de agregar en una dimensin, agregando en todas las dems y calcular en esa dimensin nicamente los valores solicitados por el usuario. Por ejemplo, si la dimensin D1 posee cuatro valores que son: T, V1, V2 y V3, siendo T el padre de V1, V2 y V3, una variable cualquiera dimensionada por D1, como por ejemplo V1(D1 D2 D3 D4 D5 D6 D7) podra no necesitar ser agregada por D1 siempre que, en vez de consultar directamente V1, se consultase una frmula F1 que calculase sobre la marcha el acumulado T en caso de solicitarse, es decir:

F1 =

if D1 = 'T' V1(D1 'V1') + V1(D1 'V2') + V1(D1 'V3') else V1 Si la estructura de la jerarqua fuese ms compleja, la frmula quedara ms compacta hacindola recursiva. Por ejemplo, si T tuviese dos hijos subtotales ST1 y ST2 los cuales a su vez, tuvieran los hijos, por una parte, ST1A, y ST1B y por otra ST2A, ST2B, y ST2C respectivamente, el total de la frmula podra calcularse a partir de los subtotales: F1 =

if D1 = F1(D1 else if V1(D1 else if V1(D1 else V1

'T' 'ST1') + F1(D1 'ST2') D1 = 'ST1' 'ST1A') + V1(D1 'ST1B') D1 = 'ST2' 'ST2A') + V1(D1 'ST2B') + V1(D1 'ST2C')

Podramos aplicar este mtodo por ms de una dimensin. Por ejemplo, si en la variable V1(D1 D2 D3 D4 D5 D6 D7) quisiramos realizar bajo demanda las agregaciones por D1 y D2, bastara con agregar por el resto de dimensiones y crear dos frmulas como F1 y F2, consultando F2 en vez de V1. F1 =

if D1 = 'T' V1(D1 'V1') + V1(D1 'V2') else V1 F2 =

if D2 = 'T' F1(D2 'V1') + V1(D2 'V2') + V1(D2 'V3') else F1

F2 realiza bajo demanda las agregaciones en D2 y para ello consulta F1, que es quien agrega D1 leyendo de V1. El principal problema de esta solucin es que las modificaciones de la dimensin debern reflejarse en estas frmulas. Para facilitar este trabajo, puede ser muy til construir un programa que recorra la estructura jerrquica de la dimensin y genere el texto de la frmula que refleja las relaciones entre valores. Resumiendo, si el tamao de una variable es excesivo, podemos reducirlo descomponiendo la variable en otras a las cuales le falte alguna de las dimensiones, consultando una frmula que extraiga cada vez la informacin de la variable correspondiente. Si las agregaciones son lentas, podemos no agregar por todas las dimensiones y calcular bajo demanda las agregaciones restantes. En este caso, es interesante que la dimensin excluida de la agregacin sea grande.

http://www.mindomo.com/es/mindmap/topicos-avanzados-de-bases-de-datos9c79a274f33e4d0eb9e5982ef187c052

Das könnte Ihnen auch gefallen