data-warehouse - 数据仓库模式:可以直接链接 DWH 中的事实表吗?
问题描述
直接链接DWH中的事实表可以吗?
据我了解,在银河模式事实表中没有链接,它们只是有共同的维度表。但是,如果有假设直接链接它们的 DWH 模式?
解决方案
IMO,他们不应该,即使他们可以。事实表通常很大,可能有数十亿行,并且以一定的粒度保存度量。
链接两个或多个事实表可能需要连接数十亿行表,这太昂贵了。
如果您需要链接不同事实表中的事实(所有维度都是通用的),您最好只进行一次连接,存储结果并改用该结果表。如果这可以在 ETL 级别完成,您可以逐批加入,那就更好了。
如果您在两个表中加入事实,其中一个维度是另一个维度的超集,您最好将最细粒度的事实聚合到另一个的粒度并应用上述解决方案。
如果两个维度都不是另一个维度的超集,那么您可能需要在一个共同的级别上聚合两者。
我的立场背后的原因是,我宁愿在存储中有冗余并避免查询时间计算,而不是让我的用户等待很长时间让这些连接产生结果。此外,非常大的连接需要大量内存,这通常比存储更昂贵。
最后,请记住 DWH 通常具有由 ETL 进程加载的数据。它们成批运行,并且可以在每次运行时检查一致性,这与 OLTP 不同,在 OLTP 中,避免多次写入相同数据对于防止不一致至关重要。
对此有不同的看法,您很可能会对此事有不同的看法。最后,这两种方法都有其优点和缺点,研究两者并选择你最喜欢的一种。
推荐阅读
- c# - 从表单文本框中打印文档副本
- angularjs - 如何在导航到另一个视图时保持活动选项卡?
- javascript - onPlayerReady() 未触发,播放器仅部分初始化
- c# - 无法在统一 3D 中重新启动场景
- node.js - 如何在节点(快递)作为后端和 vue 作为客户端的情况下使用护照 SAML
- mysql - (mysql查询性能问题)大型历史股价数据库的索引
- c# - .net core 2.2 MVC:Razor 模型返回空引用异常
- visual-studio-code - 活动栏/侧边栏中的 VSCode 自定义片段列表 - 扩展推荐?
- javascript - D3.js - 根据内部文本调整工具提示宽度
- javascript - jQuery一页导航标记错误的菜单项