首页 > 解决方案 > 数据仓库模式:可以直接链接 DWH 中的事实表吗?

问题描述

直接链接DWH中的事实表可以吗?

据我了解,在银河模式事实表中没有链接,它们只是有共同的维度表。但是,如果有假设直接链接它们的 DWH 模式?

标签: data-warehouse

解决方案


IMO,他们不应该,即使他们可以。事实表通常很大,可能有数十亿行,并且以一定的粒度保存度量。

链接两个或多个事实表可能需要连接数十亿行表,这太昂贵了。

如果您需要链接不同事实表中的事实(所有维度都是通用的),您最好只进行一次连接,存储结果并改用该结果表。如果这可以在 ETL 级别完成,您可以逐批加入,那就更好了。

如果您在两个表中加入事实,其中一个维度是另一个维度的超集,您最好将最细粒度的事实聚合到另一个的粒度并应用上述解决方案。

如果两个维度都不是另一个维度的超集,那么您可能需要在一个共同的级别上聚合两者。

我的立场背后的原因是,我宁愿在存储中有冗余并避免查询时间计算,而不是让我的用户等待很长时间让这些连接产生结果。此外,非常大的连接需要大量内存,这通常比存储更昂贵。

最后,请记住 DWH 通常具有由 ETL 进程加载的数据。它们成批运行,并且可以在每次运行时检查一致性,这与 OLTP 不同,在 OLTP 中,避免多次写入相同数据对于防止不一致至关重要。

对此有不同的看法,您很可能会对此事有不同的看法。最后,这两种方法都有其优点和缺点,研究两者并选择你最喜欢的一种。


推荐阅读