database - star - snowflake schema
Star-Schema Design (8)
¿Es esencial un diseño Star-Schema para un almacén de datos? ¿O puede hacer almacenamiento de datos con otro patrón de diseño?
El esquema de estrella es un modelo de datos lógico para bases de datos relacionales que se ajusta a las necesidades de almacenamiento de datos regulares; si se proporciona el entorno relacional, un esquema de estrella o copo de nieve será un buen patrón de diseño, cableado en muchas metodologías de diseño de DW.
Sin embargo, también existen otros motores de bases de datos relacionales, y se pueden usar para un almacenamiento de datos eficiente. Los motores de almacenamiento multidimensional pueden ser muy rápidos para las tareas OLAP (TM1, por ejemplo); no podemos aplicar el diseño de esquema de estrella en este caso. Otros ejemplos que requieren modelos lógicos especiales incluyen bases de datos XML o bases de datos orientadas a columnas (por ejemplo, el C-store) experimental C-store) ).
El uso de esquemas de estrella para un sistema de depósito de datos le proporciona varios beneficios y, en la mayoría de los casos, es apropiado usarlos para la capa superior. También puede tener un almacén de datos operacional (ODS), una estructura normalizada que contiene el "estado actual" y facilita operaciones como la conformación de datos. Sin embargo, hay situaciones razonables en que esto no es deseable. Tuve la oportunidad de construir sistemas con y sin capas de ODS, y tuve razones específicas para la elección de la arquitectura en cada caso.
Sin entrar en las características de la arquitectura del almacén de datos o comenzar una guerra de llama Kimball vs. Inmon, los principales beneficios de un esquema de estrella son:
La mayoría de los sistemas de administración de bases de datos tienen facilidades en el optimizador de consultas para hacer ''Transformaciones de estrella'' que usan estructuras de índice de mapa de bits o Intersección de índice para una rápida resolución de predicados. Esto significa que la selección de un esquema en estrella se puede hacer sin tocar la tabla de hechos (que generalmente es mucho más grande que los índices) hasta que se resuelva la selección.
Partitioning un esquema en estrella es relativamente sencillo ya que solo la tabla de hechos necesita ser particionada (a menos que tenga algunas dimensiones bíblicamente grandes). La eliminación de partición significa que el optimizador de consultas puede ignorar las patrañas que posiblemente no podrían participar en los resultados de la consulta, lo que ahorra en E / S.
Las dimensiones que cambian lentamente son mucho más fáciles de implementar en un esquema en estrella que un copo de nieve.
El esquema es más fácil de entender y tiende a involucrar menos combinaciones que un esquema de ER o snowflake . Su equipo de informes lo amará por esto
Los esquemas de estrella son mucho más fáciles de usar y (lo que es más importante) funcionan bien con herramientas de consulta ad-hoc como Business Objects o Report Builder . Como desarrollador, usted tiene muy poco control sobre el SQL generado por estas herramientas, por lo que debe brindar tanta optimización como sea posible al optimizador de consultas. Los esquemas de estrella le dan al optimizador de consultas relativamente poca oportunidad de equivocarse.
Normalmente, su capa de informes utilizaría esquemas de estrella a menos que tenga una razón específica para no hacerlo. Si tiene varios sistemas de origen, es posible que desee implementar un Almacén de datos operativos con un esquema normalizado o de copo de nieve para acumular los datos. Esto es más fácil porque un ODS generalmente no hace historia. El estado histórico se rastrea en esquemas de estrella donde esto es mucho más fácil de hacer que con estructuras normalizadas. Un almacén de datos operacionales normalizado o con copos de nieve refleja el estado ''actual'' y no tiene una vista histórica por encima de cualquiera que sea inherente a los datos.
Los procesos de carga de ODS están relacionados con la depuración y el ajuste de datos, lo que es más fácil de hacer con una estructura normalizada. Una vez que tenga datos limpios en un ODS, las cargas de dimensiones y hechos pueden rastrear el historial (cambios a lo largo del tiempo) con mecanismos genéricos o relativamente simples de manera relativamente simple; esto es mucho más fácil de hacer con un esquema en estrella. Muchas herramientas ETL (por ejemplo) proporcionan instalaciones integradas para dimensiones que cambian lentamente y la implementación de un mecanismo genérico es relativamente sencilla.
La estratificación del sistema de esta manera proporciona una separación de responsabilidades: la lógica de limpieza de datos y negocios se trata en el ODS y las cargas del esquema en estrella tratan con el estado histórico.
Es posible prescindir de. Sin embargo, harás la vida más difícil para ti: tu organización querrá usar herramientas estándar que vivan encima de DW, y esas herramientas esperarán un esquema en estrella: se gastará mucho esfuerzo en ajustar una clavija cuadrada en una ronda. agujero.
Muchas optimizaciones de nivel de base de datos suponen que tiene un esquema en estrella; Pasarás mucho tiempo optimizando y reestructurando para que el DB haga "lo correcto" con tu diseño que no sea el de la estrella.
Asegúrese de que los pros superen los inconvenientes.
(¿Parece que he estado allí antes?)
-RE
Hay tres problemas que debemos resolver.
1) Cómo sacar los datos del sistema de origen operacional sin presionarlos indebidamente uniendo las tablas dentro y entre ellos, limpiando los datos a medida que extraemos, creando derivaciones, etc.
2) Cómo fusionar datos de fuentes dispares, algunos heredados, algunos basados en archivos, de diferentes departamentos en un todo integral, preciso y eficientemente almacenado que modela el negocio y no refleja las estructuras de los sistemas fuente. Recuerde, los sistemas cambian / son reemplazados relativamente rápido, pero el modelo básico del negocio cambia lentamente.
3) Cómo estructurar los datos para cumplir con los requisitos analíticos y de informes específicos para personas / departamentos específicos en el negocio de la manera más rápida y precisa posible.
La solución a estos tres problemas muy diferentes requiere diferentes capas arquitectónicas para resolverlos
Staging Layer Repetimos las estructuras de las fuentes, pero solo los datos modificados de las fuentes se cargan cada noche. una vez que los datos se toman de la capa de transición a la siguiente capa, los datos se descartan. Las consultas son consultas de tabla única con un simple filtro data_time. Muy poco efecto en la fuente.
Enterprise Layer Esta es una 3ra base de datos de forma normal orientada a negocios. Los datos se extraen (y luego se descartan) de la capa de transición a la capa empresarial, donde se limpian, integran y normalizan.
Capa de presentación (esquema de estrella) Aquí modelamos dimensionalmente para cumplir con los requisitos específicos. Los datos se desnormalizan deliberadamente para reducir el número de uniones. Las jerarquías que pueden ocupar varias tablas en la Capa Enterprise se colapsan en tablas de una sola dimensión, y varias tablas transaccionales se pueden fusionar en tablas de hechos únicos.
Siempre enfrentas estos tres problemas. Si elige eliminar la capa de la empresa, todavía tiene que resolver el segundo problema, pero tiene que hacerlo en la capa de esquema de estrella, y en mi opinión, este es el lugar equivocado para hacerlo.
Hay un debate en curso en la literatura de datawarehousing sobre dónde debe aplicarse el diseño Star-Schema en la arquitectura de datawarehouse.
En resumen, Kimball muy partidario de utilizar solo el diseño Star-Schema en el datawarehouse, mientras que Inmon primero quiere construir un Enterprise Datawarehouse utilizando un diseño 3NF normalizado y luego utilizar el diseño Star-Schema en los datamarts.
Además, aquí también se podría decir que el snowflake es otro enfoque.
Un cuarto diseño podría ser el enfoque de Model Vault Modeling .
Lo que pasa con los esquemas de estrella es que son un modelo natural para los tipos de cosas que la mayoría de la gente quiere hacer con un almacén de datos. Por ejemplo, es fácil producir informes con diferentes niveles de granularidad (mes o día o año, por ejemplo). También es eficiente insertar datos empresariales típicos en un esquema en estrella, una característica común e importante de un almacén de datos.
Ciertamente puede usar cualquier tipo de base de datos que desee, pero a menos que conozca muy bien el dominio de su empresa, es probable que sus informes no se ejecuten de la forma más eficiente posible si hubiera utilizado un esquema en estrella.
Los esquemas de estrella son un ajuste natural para la última capa de un depósito de datos. Cómo llegar es otra pregunta. Hasta donde yo sé, hay dos grandes campos, los de Bill Inmon y Ralph Kimball. Es posible que desee ver las teorías de estos dos tipos si / cuando decide ir con una estrella.
Además, algunas herramientas de informes realmente les gusta la configuración del esquema de estrella. Si está bloqueado en una herramienta específica de informes, eso podría impulsar el aspecto de la publicación de informes en su almacén.
Los esquemas en estrella se utilizan para permitir el acceso de alta velocidad a grandes volúmenes de datos. El alto rendimiento se habilita al reducir la cantidad de uniones necesarias para satsificar cualquier consulta que pueda hacerse en relación con el área temática. Esto se hace permitiendo redundancia de datos en tablas de dimensiones.
Debe recordar que el esquema de estrella es un patrón para la capa superior del almacén. Todos los modelos también implican esquemas de etapas en la parte inferior de la pila de almacenes, y algunos también incluyen un área de transición combinada persistente transformada donde todos los sistemas fuente se fusionan en un esquema modelado de 3NF. Las diversas áreas temáticas se encuentran por encima de esto.
Las alternativas a los esquemas de estrella en el nivel superior incluyen una variación, que es un esquema de copo de nieve. Un nuevo método que también puede respaldar algunas investigaciones es el modelo de Data Vault propuesto por Dan Linstedt.