数据仓库模式:可以直接链接DWH中的事实表吗?

时间:2018-08-28 15:21:30

标签: data-warehouse

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

据我了解,在星系模式中,事实表没有链接,它们只有公用的维表。但是,如果有一个DWH模式假定直接链接它们?

3 个答案:

答案 0 :(得分:2)

IMO,即使可以,他们也不应这样做。事实表通常非常庞大,可能有数十亿行,并且以特定的粒度保存度量。

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

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

如果将事实合并到两个表中,一个人的维度是另一个人的维度的超集,那么最好将最精细的事实汇总到另一个人的粒度,然后应用上述解决方案。

如果两个维度集都不是另一个维度集的超集,那么您可能需要将两个维度汇总到一个公共级别。

我担任该职位的原因是,我宁愿在存储方面保持冗余并避免查询时间的计算,而不是让我的用户等待很长时间才能使这些联接产生结果。同样,非常大的联接需要大量的内存,通常这些内存比存储要昂贵。

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

对此有不同的看法,您很可能会对此有不同的看法。最后,两种方法各有利弊,研究两种方法,然后选择最适合自己的一种。

答案 1 :(得分:2)

否,直接链接事实表是不行的。

首先,如果正确地对事实表进行建模,则将无法以有意义的方式链接它们。唯一的例外是事实表具有1:1的关系,但是问题是-也许它们应该被建模为一个事实表。

第二,直接链接事实表与维度建模背后的核心思想背道而驰-该模型应反映基础业务的结构。通常,在维模型中,事实表表示特定的业务流程,而维表示其上下文。这是OLTP和维度数据库之间的主要区别-OLTP系统经过优化,可以高效,可靠地捕获事务,而维度模型经过优化,可以查询数据并从中获得业务价值。混淆这两个概念是错误的。

答案 2 :(得分:1)

答案是明显否,根据定义,通过事实表中的外键引用的任何表都是维度表

在Kimballs模型的另一方面,事实和维度之间没有严格的分界线-表格可以根据上下文扮演两种角色。

例如,一个包含服务使用情况的表是一个事实表,其维度为 time location 合同等。

合同本身可以建模为事实表,即该表包含正在更改合同的交易,并具有诸如时间客户之类的维度评估模型等(您可以将其称为尺寸变化缓慢的方法,但这只是事实表的替代说明)。

但是最重要的是,如果连接两个“事实”表的模型能够很好地描述业务,稳定,易于加载,抗故障并支持高效的报告查询,那么答案是显而易见的是,这是严格的模型。