Pregunta

Estoy diseñando las tablas de hechos y dimensiones para un almacén de datos que actualmente usa SQL Server, SSIS y SSAS. ¿Obtendré algún beneficio real al programar las relaciones entre las dimensiones y las tablas de hechos en SQL? ¿O es mejor que defina las relaciones manualmente cuando llegue el momento de crear los cubos?

Parece que es más fácil cargar y transformar los datos si no tengo ninguna restricción sobre mi inserción de datos en las tablas y, por lo tanto, omito las relaciones.

¿Fue útil?

Solución

Estoy interpretando " programando las relaciones " como significado para poner restricciones de clave externa en las tablas.

No, en un almacén de datos no debe imponer restricciones de clave primaria o clave externa en las tablas de hechos.

Usted ha mencionado algunos problemas, y otro problema es que estas restricciones ponen una sobrecarga de rendimiento al insertar filas, lo que hará que el proceso ETL sea más costoso.

Para alguien que solo tenga experiencia en el diseño de bases de datos transaccionales, esto podría ir en contra de todo lo que aprendió y experimentó. Las restricciones de clave externa son vitales para las bases de datos donde tiene múltiples procesos que modifican datos al mismo tiempo. Existe el riesgo definitivo de que dos procesos arruinen los datos de alguna manera, a pesar de los mejores esfuerzos de los desarrolladores. Las restricciones son una red de seguridad fundamentalmente vital.

En un modelo dimensional, la base de datos solo está poblada por el único proceso ETL, y de una manera altamente controlada. Esto disminuye significativamente el riesgo de que los datos se corrompan, hasta el punto en que el costo adicional de las restricciones simplemente no vale la pena.

Otros consejos

Creo que necesitamos tener restricciones FK, ya que las actualizaciones de DW están controladas "en su mayoría" pero no siempre. Por ejemplo, las correcciones manuales de datos ocurren en caso de problemas de datos y tal. [Idealmente, esto no debe suceder, pero ... :)]

Para garantizar que las claves no afecten el rendimiento, podemos desactivarlas antes de cargarlas y activarlas nuevamente. Esto puede darnos la confianza de que los datos son correctos y también eliminar cualquier problema de rendimiento durante la carga. Otra cosa para recordar es que los tiempos de procesamiento no son una limitación importante para la mayoría de los Data Warehouses.

Si considera el tiempo necesario para solucionar posibles problemas de integridad de datos, vale la pena tener FK.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top