Sql server OLAP和OLTP之间的关系完整性

Sql server OLAP和OLTP之间的关系完整性,sql-server,olap,data-integrity,oltp,snowflake-schema,Sql Server,Olap,Data Integrity,Oltp,Snowflake Schema,我一直在回顾一个客户机的体系结构,特别是他们的OLAP系统,它只是SQL Server上一个普通的雪花模式。事实和维度是从其他事务系统(如ERP)中进行ETL的 我突然想到的一件事是,在同一个数据库中,为多个附加OLTP应用程序增加了几个表。这些表与雪花模式中的维度表具有FK关系 OLTP系统中有很多维度数据的连接,因此性能不是最好的 我根本不是OLAP专家;但这感觉不对。我已经做了一些搜索,但在互联网上找不到太多关于这方面的支持或反对意见。这样做的好处是什么?有吗?潜在问题呢?我会尽量避免OL

我一直在回顾一个客户机的体系结构,特别是他们的OLAP系统,它只是SQL Server上一个普通的雪花模式。事实和维度是从其他事务系统(如ERP)中进行ETL的

我突然想到的一件事是,在同一个数据库中,为多个附加OLTP应用程序增加了几个表。这些表与雪花模式中的维度表具有FK关系

OLTP系统中有很多维度数据的连接,因此性能不是最好的


我根本不是OLAP专家;但这感觉不对。我已经做了一些搜索,但在互联网上找不到太多关于这方面的支持或反对意见。这样做的好处是什么?有吗?潜在问题呢?

我会尽量避免OLTP和OLAP数据之间出现任何显式外键。将外键从OLTP添加到OLAP会阻止您在业务中添加新实体,并且可能需要首先在OLAP中定义实体,而标准是仅单向运行ETL流程—始终从OLTP到OLAP。而且,将外键从OLAP保存到OLTP会阻止您在数据仓库中保存与当前业务无关的历史数据,但这些数据对于分析来说可能很有趣


当然,在某些情况下,你违反规则是有原因的。也许有一个。客户端是否有人解释了为什么按照您描述的方式实现此功能?

在OLTP和OALP之间共享维度表并不常见。至少有两个原因:(1)OLTP和OLAP中感兴趣的属性可能非常不同。(2) 争论和随之而来的性能问题


另一方面,OLTP和ODS共享维度的完全相同副本并不少见(但有些高级)。这通常被称为“黄金拷贝”。我经常把这样设计的ODS称为主动ODS。当维度有多个副本时,我称之为被动ODS。您提到的OLAP可能不是真正的OLAP,而是某种形式的战术报告,在这种情况下,共享同一维度表并不少见

等等,事实表链接到OLTP系统,而不是雪花中的?不,维度表链接到OLTP系统。事实表似乎与任何东西都没有关系——很肯定这也是错误的。有人告诉我“维护”——维护一个数据库对所有东西都更容易。@JoãoBragança好吧,如果有适当的ETL过程,那么就不需要对OLAP部分进行手动维护,假设或多或少有一个OLTP源,其数据质量也足以进行OLAP分析。