一个或多个事实表?

时间:2012-03-19 13:03:37

标签: database-design data-warehouse business-intelligence extensibility fact-table

我正在尝试构建数据集市。

我有很多维度和一些措施 - 事实。每项措施都与业务方面的所有维度相关联。有一种标准方法,将有一个包含所有措施的重要事实表。

但我有一个想法:如果我为每个度量分别有事实表怎么办?它将如何处理数据库性能,解决方案扩展性等?

EDIT ::: 在真正复杂的企业环境中,基于olap立方体的巨大解决方案将会出现。因此,首先需要的是易于扩展和维护,然后是性能

2 个答案:

答案 0 :(得分:7)

悬崖说明:我看到了一个事实表/度量概念的可扩展性问题。

如果您的目标是“可扩展性和维护性”,那么您可以考虑遵循行业范围的标准方法......例如Kimball,首先按业务流程对事实进行分组,然后按照具有一致性维度的粒度进行分组。我很乐意争辩,这将提供最大的灵活性和可扩展性,同时还通过标准化确保可扩展性和维护。

另外,如果您为每个度量设计一个单独的事实表,那么您的SAN管理员会讨厌您的胆量,因为您通过度量数量有效地增加了空间需求...至少在最初所有度量当前适合的情况下单一事实表。

针对DW的查询性能也将是一个问题...报告和/或即席查询将必须扫描(或寻求... 如果您的管理员仍在与您交谈并且慷慨足以为您提供必要的空间,以便在需要合并多于1个度量时随时正确索引事实表的垃圾

我们还没有讨论过olap立方体,但我已经担心你会遇到的处理问题。全表扫描丰富...或分区扫描......如果你在事实表中实现分区......你现在应该使用SQL 2012 ......我正在看你的ColumnStore Index !! < / p>

答案 1 :(得分:2)

如果所有度量的粒度相同,则将它们保存在同一个表中。只有具有不同粒度级别的事实时,才开始使用多个事实表。看到你说你的所有事实都与你的所有维度相关联,那么在这个阶段看起来你只需要一个事实表。