Вы находитесь на странице: 1из 17

CMO DISEAR GRANDES VARIABLES EN BASES DE DATOS MULTIDIMENSIONALES

Manuel de la Herrn Gascnhttp://www.eside.deusto.es/profesores/mherran/


Ingeniero Informtico por la Universidad de Deusto
Vicent Castellar-Bus http://www.uv.es/~buso/
Doctor en Matemticas por la Universidad de Valencia
(continuacin...)
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. 1 - Variables con una dos y tres dimensiones.

Una variable unidimensional podra ser el cambio de la peseta con el dlar, que slo vara en la
dimensin <tiempo>. Los cubitos seran, por ejemplo, los meses 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 que se ha 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 archivos 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 archivo 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.
CMO DISEAR GRANDES VARIABLES EN BASES DE DATOS MULTIDIMENSIONALES
Manuel de la Herrn Gascnhttp://www.eside.deusto.es/profesores/mherran/
Ingeniero Informtico por la Universidad de Deusto
Vicent Castellar-Bus http://www.uv.es/~buso/
Doctor en Matemticas por la Universidad de Valencia
(continuacin...)
Clculo del tamao de una variable multidimensional
En lo que sigue supondremos que trabajamos con un sistema M-OLAP. 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:

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:
// Las lineas 1,2 y 3 son de cabecera, y los datos reales comienzan en la
linea 4
// La linea 3 es un comentario que describe el formato de los datos
// "<Artculo >";"<Geografa>";"<Tiempo>";"Unidades Vendidas"
"1";"32";"199912";"325"
"1";"48";"200001";"222"
"3";"32";"200001";"125"
"3";"48";"200001";"1235"
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. 2.- 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 (D p) 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
<Tiempo>, 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 (http://www.oracle.com/olap/html/oes.html). 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 D ti 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 = 'T' and D2 = 'T'


V10
else if D1 = 'T' and D3 = 'T'
V9
else if D1 = 'T' and D4 = 'T'
V8
else if D1 = 'T' and D5 = 'T'
V7
else if D2 = 'T' and D3 = 'T'
V6
else if D2 = 'T' and D4 = 'T'
V5
else if D2 = 'T' and D5 = 'T'
V4
else if D3 = 'T' and D4 = 'T'
V3
else if D3 = 'T' and D5 = 'T'
V2
else if D4 = 'T' and D5 = 'T'
V1else
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 = 'T'
V4
else if D2 = 'T'
V3
else if D3 = 'T'
V2
else if D4 = 'T'
V1
else if D2 = 'ST1'
V5
else if D2 = 'ST2'
V6
else
NA

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 nmero 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 =
f 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 = 'T'
F1(D1 'ST1') + F1(D1 'ST2')
else if D1 = 'ST1'
V1(D1 'ST1A') + V1(D1 'ST1B')
else if D1 = 'ST2'
V1(D1 'ST2A') + V1(D1 'ST2B') + V1(D1 'ST2C')
else
V1
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

Wait for McKinley. We've heard that mantra over and over the past few years, with McKinley
expected to deliver much better performance than Itanium, and really show off the IA-64
architecture. You may recall Intel formally dubbed the McKinley processor "Itanium 2" back on April
25, 2002, and you probably already know the basics of McKinley architecture given information
leaks earlier this year, combined with white papers and performance info recently released by Intel
at this link. Intel also provided a very informative developer manual in June, that includes juicy
details of McKinley's microarchitecture. To boot, there were significant McKinley facts disclosed at
the last few Intel Developer Forums.
So what's the big deal today if so much information is already available? Today is the formal launch
of Itanium 2 volume shipments, with server and workstation products now announced and orderable
from vendors such as HP, Unisys, and IBM.
The Itanium processor line is targeted at high-end server and workstation DISCUSSIONS
applications that require 64-bit features, such as a very large address
space and 64-bit data manipulation. Strong floating point capability is an
important feature in many high-end workloads too. Itanium 2 must
NormanGC: I think that
overcome the performance bottlenecks and fairly weak acceptance of the there are way too many
releases of chips. In order to
original Itanium processor (codenamed Merced). Itanium lacked in integer woo the businesses and the
performance (though it delivered excellent floating point power), it topped public, there should be
significant increases in
out at a modest 800MHz, and it was an expensive package with up to
performance between new
4MB of external L3 cache. Itanium was introduced in a few workstation
architectures. New chips,
version 2, should NOT start
products mid-last year, with a relatively small number of units shipped.
at 1 ghz when there version
Multi-processor servers were also shipped in low volumes. Dell actually
1 chips are already a 1.5 or
halted workstation shipments due to lack of sales, and Compaq
even 2 ghz.
experienced technical problems with Itanium microcode causing many
view full post
months of workstation shipment delay. Itanium actually arrived two years
later than expected--see this Intel press release. (For a recent and
enlightening news analysis of Itanium's difficult history and the Itanium 2 launch and near term
prospects, check out eWeek's story by Ken Popovich).
And here's Intel's IA-64 roadmap.

Unfortunately, we do not yet have real shipping Itanium 2 workstation or server products to test, but
we expect some soon. Even with a shipping system, comparatively testing 64-bit applications
across competitive 64-bit RISC architectures is a serious challenge, and we'll work alongside PC
Magazine attempting to develop testing methods that do not simply repeat Intel's performance
marketing campaign. But for this overview, we will echo Intel's performance data, as it is germane
when comparing Itanium 2 to Itanium, given they are running the same workloads and test
applications.

We'll refrain from delving into Intel's EPIC (Explicitly Parallel Instruction Computing) technology,
which is the foundation of the IA-64 architecture. You can check out our large story on 64-bit
Computing, which covers EPIC and Itanium (Merced) in substantial detail. We will rehash some of
the basic technical facts, which have been available publicly prior to this writing.
The following slide provided by Intel shows the basic architectural differences of Itanium versus
Itanium 2, and it's the formal version of a slide leaked earlier this year. Note that the earlier slide
mentioned 221 million transistors on Itanium 2, and that's missing from this slide. You can
immediately see big differences in front-side bus architecture and performance, with a 400 MHz
data rate (200MHz clock) and a 128-bit wide interface yielding 6.4GB/sec. (The E8870 (i870)
chipset supports DDR-200 arrangements for matching 6.4GB/sec bandwidth). You can also see
more issue ports and more integer units, and the ability to perform two loads and two stores, versus
two loads or two stores.

Itanium 2 is currently fabricated on a .18 micron process, similar to Itanium, and will initially ship at
900MHz and 1GHz. While top clock speed is only 25% faster than the Itanium, Intel is
demonstrating 1.5X application performance improvements over Itanium (see below) on identical
binaries for various applications without recompiling, and up to 2X with Itanium 2 optimizations.
Performance increase is due to both Itanium 2's microarchitectural improvements and chip/platform
bandwidth enhancements. As noted in the slide above, one of the biggest changes and
performance enhancers is the L3 cache being on-die in Itanium 2 versus off-die in Itanium, which
significantly reduces latencies and increases bandwidth. Here's a quick comparison of cache
hierarchy particulars for Itanium and Itanium 2.

Cache Feature

Itanium (Merced)

L3 Size
2-4MB
L3 Onboard Processor Die (Yes/No)
No
L3 Line Size
64 bytes
L3 Associativity
4-way
L3 Integer Latency
21 cycle minimum
L3 Floating Point Latency
24 cycle minimum
L3 Bandwidth
12.8 GB/sec
L2 Size
96 KB
L2 Line Size
64 bytes
L2 Associativity
6-way
L2 Integer Latency
6 cycle minimum
L2 Floating Point Latency
9 cycle minimum
L1 I-Cache Size
16 KB
L1 I-Cache Line Size
32 bytes
L1 I-Cache Associativity
4-way
L1 I-Cache Latency
1 cycle
L1 D-Cache Size
16 KB
L1 D-Cache Line Size
32 bytes
L1 D-Cache Associativity
4-way
L1 D-Cache Latency
2 cycles

Itanium 2 (McKinley)

1.5-3MB
Yes
128 bytes
12-way
12 cycle minimum
13 cycle minimum
32 GB/sec
256 KB
128 bytes
8-way
5 cycle minimum
6 cycle minimum
16 KB
64 bytes
4-way
1 cycle
16 KB
64 bytes
4-way
1 cycle

Itanium 2 uses an 8-stage pipeline versus 10 stages in Itanium,and branch mispredict latencies
have Itanium 2 rated at 6+ cycles versus Itanium at 9 cycles. Itanium 2 can only process six
instructions (two bundles of three instructions each) at once, similar to Itanium, but Itanium 2 can
handle more diverse groupings of instructions. Though IA-64 supports a 64-bit address space, and
Itanium 2 supports 64-bit virtual memory addressing, it only supports 50-bits of physical address
pins, which is still huge, and larger than the 44 bits of physical addressing on the Itanium. There are
numerous other interesting Itanium 2 enhancements over Itanium, so we suggest you read this
developer manual if you really want all the gory techie details.
Regarding operating systems, expect to see an initial version of 64-bit Windows for Itanium 2 in the
next few weeks, followed by versions later this year possibly with .NET naming. Also available are
HP-UX, Red Hat Linux, SuSE Linux, Caldera, and Turbolinux.
Intel provided this slide highlighting some of the broader features of the E8870 (i870) chipset, as
they are trying to communicate the scalability possible in server architectures. Note the scalability
building blocks enable 64-processor MP designs. We'll dive more deeply into this chipset in a
subsequent story as it's not due to roll out until fall. You may also want to check out Mark
Hachman's story on Intel's and various other Itanium 2 chipsets.

Вам также может понравиться