¿Estrella o Copo de Nieve?

22 10 2007

Plato

Cada vez que comenzamos un proyecto nuevo siempre es lo mismo ¿Estrellas o copos de nieve?¿que es mejor? Es una decisión dificil de tomar.

A mi me gusta trabajar más con estrellas. El tiempo de respuesta del servidor es más rápido debido a que se involucran menos tablas en los querys. Sin embargo tienen la desventaja que hay que programar más. Los programas que se encargarán de estar manteniendo los catálogos (o puntas de la estrella) al día son más complejos.

La ventaja que yó le veo a los copos de nieve es que la información se puede pasar casi siempre tal cual viene. O sea que en un 2×3 podemos tener lista la parte del modelo referente a los catálogos.

Respecto al trabajo que se requiere para llenar la tabla de hechos no hay diferencia entre un modelo y el otro.

No son verdades absolutas. En un modelo estrella, cuando el catálogo que representa una dimensión que tiene demasiados registros, involucrar esta tabla no es tán eficiente. No se requiere ser un genio para darse cuenta que si tengo una estrella donde se usa la dimensión cliente con 500,000 registros y si el sexo de nuestro cliente es una columna más de la tabla de clientes, entonces hacer un query que nos dé las compras por el sexo del cliente (¿quién compra más, las mujeres o los hombres?) hará que la base de datos recorra 500,000 registros del catálogo para sacar los valores diferentes de sexo. Esto hará que el servidor trabaje más; aquí el modelo copo de nieve sería más eficiente.

Si usted tiene Redbrick, entonces no se preocupe, puede hacer todo como una estrella perfecta y crearle agregados a los catálogos. Sí, Redbrick recorre las tablas de la estrella y coloca en una tabla de agregados los valores diferentes de las dimensiones (sexo) dentro de la grán dimension (clientes). Si no estoy mal, lo mismo debe suceder con Oracle.

Lo siento, no he tenido la oportunidad de verificar si otras marcas de base de datos tienen esta capacidad.

Si usted tiene el tiempo suficiente para hacer todo como debe de ser digamos que la regla sería: 

Si los valores de las dimensiones son pocos (los catálogos) use el modelo estrella. Para dimensiones gigantescas use el modelo copo de nieve.

¿qué es gigantesco y qué no lo es? La experiencia y el hardware de su servidor lo dirán.

Como vé, en muchos proyectos no se pueden tener estrellas ó copos de nieve. A veces lo que se requieren son híbridos, mitad y mitad.


Acciones

Information

6 responses

19 12 2007
Pedro Sanchez

En oracle es viatas materializadas y se crean con CREATE MATERIALIZED VIEW

16 01 2009
Alexis Villagra

Discrepo con la sugerencia, para mi es mas eficiente el modelo estrella.

En el mismo caso que estás plantenando puedes crear un indice en la columna sexo. Si tomas una base de datos como Sybase IQ, que almacena la información de las tablas por columnas. Crear un indice en la columna, hará mucho mas eficiente las querys.

La recomendación en este tipo de base de datos es indexar la mayor cantidad de columnas que necesites, tomando en cuenta el tipo de indice que necesitas en la columna.

Está comprobado la eficiencia en tiempos de respuestas muy superiores a los de oracle y además una mayor facilidad de administración.

En cuanto al espacio requerido, trabaja con una compresión de registros, lo cual reduce el espacio requerido y aun así el tiempo de respuesta está muy por ensima de oracle.

Saludos

10 06 2009
Francisco Cespedes

Discrepo de tu consejo. Las razones para utilizar copo de nieve es evitar la redundancia y el ahorro de espacio. Si el tiempo de respuesta es lo fundamental, entonces claramente debe privilegiarse el modelo estrella….por que son menos JOINS y las consultas son indexadas mas facilmente.

El problema descrito con respecto al campo Sexo y a la tecnica que aplica Redbrick y otros motores de datos no es mas que una implementacion propia de las llamadas ‘mini-dimensiones’. Si tu pones el campo sexo en una dimension y estas pensando realizar muchas consultas filtrando por sexo entonces tu modelo estrella esta mal diseñado y no es problema de rendimiento del modelo estrella en si.

Las mini-dimensiones son descritas en variadas bibliografia sobre modelamiento multidimensional (un buen autor es Ralph Kimball)

13 03 2011
Ramon Robles

En el caso que hablas sobre la interrogación sobre la columna SEXO (y otra de valores cardinales pre-definidos), Oracle, para ello, tiene la posibilidad de definir ‘indices BITMAP’.
INternamente realiza comparaciones ‘binarias’ para encontrar la información.
El tiempo de respuesta es enormemente superior que el que propocionan otras BB.DD. para este tipo de información.

24 03 2011
Adrian

entiendo que solo puedes hacer un indice bitmap por tabla, es correcto?

8 09 2011

Deja un comentario