Diseño de un data warehouse: estrella y copo de nieve


Tras un paréntesis muy largo, volvemos con la teoría. Estamos bien encaminados. Poco a poco vamos asimilando los ricos conceptos de Business Intelligence y en particular aquellos relacionados con el diseño de un data warehouse. Es conveniente en estos momentos incidir que para el diseño debemos dejar de lado las formas normales. Debemos aprender de nuevo. En un data warehouse relacional encontramos esquemas en estrella y en copo de nieve que premian por encima de todo las consultas.

  • Esquema en estrella: Consiste en estructurar la información en procesos, vistas y métricas recordando a una estrella (por ello el nombre star schema). Es decir, tendremos una visión multidimensional de un proceso que medimos a través de unas métricas. A nivel de diseño, consiste en una tabla de hechos (lo que en los libros encontraremos como fact table) en el centro para el hecho objeto de análisis y una o varias tablas de dimensión (dimension table) por cada dimensión de análisis que participa de la descripción de ese hecho. En la tabla de hecho encontramos los atributos destinados a medir (cuantificar) el hecho: sus métricas. Mientras, en las tablas de dimensión, los atributos se destinan a elementos de nivel (que representan los distintos niveles de las jerarquías de dimensión) y a atributos de dimensión (encargados de la descripción de estos elementos de nivel). En el esquema en estrella la tabla de hechos es la única tabla del esquema que tiene múltiples joins que la conectan con otras tablas (foreign keys hacia otras tablas). El resto de tablas del esquema (tablas de dimensión) únicamente hacen join con esta tabla de hechos. Las tablas de dimensión se encuentran además totalmente denormalizadas, es decir, toda la información referente a una dimensión se almacena en la misma tabla.
  • Esquema en copo de nieve: El esquema en copo de nieve (snowflake schema) es un esquema de representación derivado del esquema en estrella, en el que las tablas de dimensión se normalizan en múltiples tablas. Por esta razón, la tabla de hechos deja de ser la única tabla del esquema que se relaciona con otras tablas, y aparecen nuevas joins gracias a que las dimensiones de análisis se representan ahora en tablas de dimensión normalizadas. En la estructura dimensional normalizada, la tabla que representa el nivel base de la dimensión es la que hace join directamente con la tabla de hechos. La diferencia entre ambos esquemas (star y snowflake) reside entonces en la estructura de las tablas de dimensión. Para conseguir un esquema en copo de nieve se ha de tomar un esquema en estrella y conservar la tabla de hechos, centrándose únicamente en el modelado de las tablas de dimensión, que si bien en el esquema en estrella se encontraban totalmente denormalizadas, ahora se dividen en subtablas tras un proceso de normalización. Es posible distinguir dos tipos de esquemas en copo de nieve, un snowflake completo (en el que todas las tablas de dimensión en el esquema en estrella aparecen ahora normalizadas en el snowflake) o un snowflake parcial (sólo se lleva a cabo la normalización de algunas de ellas).

Continuaremos en un próximo post hablando de slowly changing dimensions.

About these ads

50 comentarios en “Diseño de un data warehouse: estrella y copo de nieve

  1. Hola, Mariana.

    Efectivamente, las tablas de hecho no están normalizadas. La estructura que creamos está destinada y optimizada para la consulta. El objetivo es hacer el menor número de joints posibles.

    Un saludo

  2. Muchísimas gracias por la rápida respuesta!
    Si no es molestia, podría hacer otra pregunta?

    Es posible obtener el mismo resultado de una consulta OLAP a partir del OLTP que le dio origen al mismo?

    Gracias nuevamente por su ayuda!!!
    Saludos!!!

  3. Hola de nuevo.

    En definitiva lo que construimos es un data warehouse relacional (es decir una base de datos). Podría conectarse el sistema OLAP al OLTP y hacer la consulta. Pero claro, el sistema OLTP no está optimizado para la consulta y claro entonces es probable que los rendimientos esperados para las consultas no fueran conseguidos y, a parte, haríamos un uso intensivo del sistema OLTP que podría derivar en afectar a los sistemas de producción. Por supuesto eso no es deseable.

    Un saludo

  4. Buenas,

    Sabes de páginas con información detallada sobre el diseño en estrella? Encuentro definiciones, pero pocos sitios donde se pueda aprender con casos prácticos o con pasos a seguir para un buen diseño.

    Gracias.

  5. Hola, Yesenia.

    Supongo que con tu pregunta sobre los elementos que intervienen en una base de datos, te refieres a lo siguiente:

    Una base de datos es una colección de tablas que describen un modelo de negocio. Cada tabla (que puede representar un concepto o relaciones entre ellos) contiene campos de los cuales alguno(s) de ellos forma la clave primaria (por la que identificamos de manera única un elemento) y el resto son atributos (en definitiva los atributos de un concepto). Las tablas entre ellas pueden estar relacionadas (o no) y si lo están entonces es a través de claves foráneas (es decir, una clave foránea de una tabla es la clave primaria de otra y sería otro atributo en la tabla).

    Espero haber resulto tu pregunta. Si no es así me lo comunicas.

    Un saludo

  6. Hola,
    Quisiera saber de donde bajarme un manual de BI, Analisis Services, por favor tu ayuda ya que debo aprender de urgencia.

    saludos
    Lucía

  7. Compañeros:

    Necesito saber de alguna compañía que se dedique a diseñar dataware houses, de preferencia en el norte del país…

    Saben de alguien??

    Saludos.

    Rubén

  8. holas tengo un proyecto sobre datawarehouse en oracle y weno me descargue programa de datawarehouse de oracle pero noc como se utiliza asi me decidi a hacer en pl/sql y la cuestion es q si me puedes mandar algunos codigos o manuales q tengas sobre pl/sql para poder realizar consultas y crear la estrella

  9. La pregunta es la siiguente??
    cuando hablan de las tablas de dimension ??
    se refieren a el conjunto de tablas que se relacionan en una solucion o es que solo una de ellas es la que toma el nombre de Tabla de Dimension???

    Espero su ayuda
    muchas gracias

  10. Hola,
    He visto ejemplos en el que la tabla de hechos tiene los datos de las dimensiones, no foreing keys a tablas de dimensiones. Por ejemplo, en una tablas de hechos de ventas, incluir como campo el nombre del vendedor, no una clave externa a la tabla de vendedores.
    ¿esta práctica es correcta?
    ventajas e inconvenientes
    Gracias.

  11. A Juan Sanchez:

    Una tabla de dimensión hace referencia a los puntos de vista de un proceso de negocio. Por ejemplo, una venta (que es un proceso y tenemos entonces una tabla de hecho) puede analizarse desde el punto de vista del producto vendido, lugar donde se ha vendido, el dia que se ha vendido,… (y todo eso son dimensiones).

    En el momento de diseñar el Data Warehouse, cada dimensión es una tabla así como cada tabla de hecho.

    A José Luis:

    Repito la respuesta que ya he dado en otro post.

    Si es posible. Esa forma de proceder es típica en las dimensiones degeneradas. Me explico. Es una dimensión con muy poca información. Por ejemplo, pensemos en la dimensión sexo. Sólo tenemos los valores hombre y mujer. ¿Es necesario tener una tabla con primary key y el valor? Inicialmente no dado que así evitamos un joint en nuestras consultas. Pero al final depende del diseño que se realiza.

    En el ejemplo que comentas… inicialmente seguro que tienes más información interesante de vendedores y convertirla en degenerate dimension significa perder parte de la información. Pero si no es el caso, puedes diseñarla como indicas.

    Espero haber respondido a vuestras preguntas.

    Un cordial saludo.

  12. Hola,

    Estoy trabajando en un proyecto de data warehouse y que ría saber cual de los dos esquemas optimizan mejor las consultas, el esquema estrella o el de copo de nieve

    Muchas gracias

  13. Hola Eduardo.

    Inicialmente el mejor diseño es el de estrella. Sin embargo debes tener en cuenta que hay veces que necesariamente se debe usar el diseño en forma de copo de nieve.

    Al final es cuestión de realizar el diseño en función del objetivo buscado.

    Un saludo.

  14. Inicialmente el mejor diseño es el de estrella.Sin embargo debes tener en cuenta que hay veces que necesariamente se debe usar el diseño en forma de copo de nieve.

  15. Estoy trabajando en un Datawarehouse y me he encontrado con el problema de que tengo registros duplicados, que al hacer agregados, no me devuelven los datos que deberían.

    Os pongo un ejemplo de lo que me ocurre y a continuación los datos que debería devolver. La tabla de ejemplo sería:

    IDLinea IDSCH IDISBN IDFLD NumMuestras
    ——- ——— —————- —————– ——————–
    1 738 1486 1085 300
    2 738 2279 1151 5438
    3 738 2279 1153 5438
    4 738 3091 1215 389
    5 739 1290 1151 364
    6 739 2279 1153 560

    En este caso, por ejemplo si necesitamos saber el NumMuestras por escuelas nos debe devolver:

    738 –> 300+5438+389 (ya que se repite un registro dos veces por culpa de pertenecer esas muestras a 2 FLD distintos). He aquí el problema, tal y como está ahora devolvería 300+5438+5438+389
    739 –> 364+560

    En el caso de necesitar saber el NumMuestras por ISBN, nos debe devolver:

    1486 –> 300
    2279 –> 5438+560 He aquí el problema, tal y como está ahora devolvería 5438+5438+560
    3091 –> 389
    1291 –> 364

    En el caso de necesitar saber el NumMuestras por FLD, nos debe devolver:

    1085 –> 300
    1151 –> 5438 + 364
    1153 –> 5438 + 560
    1215 –> 389

    En el caso de esta dimensión si que lo haría bien porque es la que está haciendo que se dupliquen los registros.

    Muchas gracias por vuestra ayuda.
    Un saludo.

  16. hola me gustaria saber cual formula es la que determina el area y perimetro en la figura del copo de nieve, la cual debe cumplir con la sub divicion n y demostrarlo por induccion de ante mano muchas gracias

  17. Hola Josep,

    estoy desarrollando un proyecto para una empresa (tesis), en donde tengo el siguiente problema:

    la empresa tiene varias áreas departamentales por ejemplo departamento de ventas, financiero, producción y otros. en donde para realizar un análisis se ha enfocado a tres departamentos en este caso ventas, financiero y producción.

    1. tengo requerimientos por cada departamento.
    2. en cada departamento solo podrán ver información referente a su área.

    mis preguntas son:
    1. trabajo con datawarehouse o datamart , poq hasta donde tengo entendido si desarrollo 1 dwh todos podrán ver los datos de todas las área mientras que si desarrollo un datawarehouse solo ciertas áreas?
    2. si trabajo con datamart tendría que desarrollar 1 estrella o copo de nieve por cada datamart?
    3. no importa si ciertas tablas que utilizo en departamento de ventas use tambien en el de producció por ejemplo. solo es un ejemplo.
    4. para desarrollar cubos cada datamert seria un datasource diferente?.

    Porfa necesito que me ayude y desde ya mil gracias por su respuesta

    Gracias,

    Elizabeth

  18. A Elisabeth:

    La elección de una estructura de data marts o un data warehouse responde a diferentes necesidades. En el caso de necesitar cruzar datos lo natural es crear un data warehouse. En el caso que cada departamento deba tener su información independiente es posible desarrollar sólo data marts independientes. Sin saber nada más, lo natural sería crear un data warehouse.

    Por otra parte, para cada proceso de negocio identificado en el departamento lo natural es diseñar una tabla de hecho, sus vistas de negocio o dimensiones e identificar también las métricas.

    Como conoces el detalle de las necesidades, será fácil identificar las dimensiones conformadas y compartidas para conocer cómo a posteriori cruzar la información.

    Es finalmente importante que tengas en cuenta que la política de acceso de los usuarios a la información puede definirse de forma independiente al diseño. Dicho punto concierne a la herramienta usada para acceder a la información.

    En función de la estructura escogida y las necesidades tendrás dimensiones repetidas en data marts o no.

    Espero haberte ayudado.

    Un cordial saludo.

  19. Hola, Josep

    un gusto conocerle y mil gracias por su ayuda de verdad no pensé que me iba responder tan pronto :), voy a volver a revisar todos los requerimientos y e base a ello voy a identificar las metricas, dimensiones y tablas de hecho, y cualquier duda le escribo otra vez sip.

    Hasta mañana, y cuidese mucho.

    Gracias

    Elizabeth

  20. Hola Josep,

    Sabe que he revisado los requerimientos y ya plantee mi dwh pero nose me gustaría que me de su punto de vista referente al modelo del dwh, pero no se si me puede facilitar su email para enviarlo xfa sip.

    gracias por su ayuda.

  21. Hola por fa me gustaria que me ayuden con un modelo multidimensional para el area de produccion de una empresa.

    Que tablas necesito (sus dimensiones) y la tabla de hecho.

    Lo necesito de urgencia

    Gracias por su comprension y ayuda.

    Juliana

  22. Hola josep Soy Elizabeth la chica a la q le proporciono informacion sobre roles de pentaho, mi cuenta anterior me bloquearon y mi nueva dir es eeiy@hotmail.com, he tratado de bajarme los intaladores de poentaho para windows pero no consiguo pentaho version 2 . exe sino solo demos xfa si puede envieme las url para poder descargarme mil gracias y faciliteme su email, poq no lo tengo

    Gracias

  23. Mi pregunta es: ya tengo mis modelado estrella de mis tablas pero como los relaciono con mis bases de datos operacionales de mis sistemas para poder extraer la informacion para mi datawarehouse mis bases de datos estan en sql, es la parte que no entiendo tengo mis bases de datos operacionales tengo mi modelado como se van a relacionar estos ayudaaaaaaaa!!!!!! urgente
    Gracias!!!!!!!!!!

  24. Hola Jorge,

    Lo que debes es crear procesos ETL para extraer la información de las bases de datos operacionales u otras fuentes, transformarlas conforme las necesidades y cargarla en el data warehouse.

    Un saludo.

  25. Hola yo molestandolo de nuevo pero tengo un pregunta porfa ayudeme: para el desarrollo de un datawarehouse se tiene que aplicar una metodologia ahora yo lei sobre la de Kimball pero no estoy seguro de que sea una metodologia establecida o ya esta establecida como metodologia saqueme de dudas porfa gracias de antemano!!!!

  26. Hola a todos, soy nuevo en esto de los DW, pero como ejercicio me han pedido que modele un DW para una Termoelectrica y que recoja todos los datos que pueda brindarme dicha termoelectrica, que pueden ser temperatura, tiempo, presión y otras, pero siempre caigo a modelar una BD operacional, pq es lo que se hacer, alguien podria darme un norte de como entrar en el tema, sin perderme de nuevo??????

    HELP!!!!!!!!!!!!!!!!!!!!!!!!!

    • Crear un star schema te permite determinar los procesos de negocio de una organización, los puntos de vista de dicho proceso de negocio y los resultados (métricas) de dicho proceso. Es por lo tanto, una forma de dotar de orden. De entender de forma más fácil cómo funciona un proceso y descartar lo que no es un proceso.

  27. Saludos soy nuevo en este tema de inteligencia de negocio. quisiera un ejemplo de como llevar mi base de datos OLTP a un datawarehouse. lei las definiciones de estrella y copo de nieve, pero aun no capto como hacer lo yo. quisiera un ejemplo con unas tablas de BD OLTP Y DEPUES LLAVADO A DATAWAREHOSE es decir la estructura fisica de como deber quedar aplicando copo de nieve y estrella al diseñar el datawarehouse

    Gracias de antemano
    Adelmo

  28. Gracias viejo, en 2 horas rindo Sistema de Soporte a las Decisiones y me faltaba alguien que me explique este tema clarito para decirlo tal cual XD

  29. Hola:
    Requiero de ayuda para crear la tabla de hecho y las de dimension ” Modelo estrella” para una encuesta de satisfacción. DW como me prodrían ayudar.?

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s