Database design 一个或多个事实表?

Database design 一个或多个事实表?,database-design,data-warehouse,business-intelligence,extensibility,fact-table,Database Design,Data Warehouse,Business Intelligence,Extensibility,Fact Table,我正在尝试建立一个数据集市 我有很多维度,还有一些度量——事实。就业务而言,每个度量都与所有维度相关联。有一种标准的方法,即将有一个包含所有度量的大型事实表 但我有一个想法:如果我为每个度量值都有单独的事实表呢?它将如何处理数据库性能、解决方案扩展性等 编辑::: 在非常复杂的公司环境中,将有基于olap多维数据集的巨大解决方案。因此,首先需要易于扩展和维护,然后是性能如果所有度量的粒度都相同,则将它们保留在同一个表中。只有在具有不同粒度级别的事实时,才开始使用多个事实表。正如您所说,您的所有事

我正在尝试建立一个数据集市

我有很多维度,还有一些度量——事实。就业务而言,每个度量都与所有维度相关联。有一种标准的方法,即将有一个包含所有度量的大型事实表

但我有一个想法:如果我为每个度量值都有单独的事实表呢?它将如何处理数据库性能、解决方案扩展性等

编辑:::
在非常复杂的公司环境中,将有基于olap多维数据集的巨大解决方案。因此,首先需要易于扩展和维护,然后是性能

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

cliff注意:我看到了一个事实表/度量的概念带来的大量可伸缩性问题。

如果你的目标是“可扩展性和维护性”,那么你可以考虑遵循一个全行业的标准方法…比如KimBand,首先将你的事实按业务流程进行分组,然后再按符合粒度的粒度进行分组。我很高兴地指出,这将提供最大的灵活性和可伸缩性,同时通过标准化确保可扩展性和维护性


另外,如果您为每个度量值设计一个单独的事实表,您的SAN管理员会非常讨厌您,因为您正在通过度量值的数量有效地增加空间需求……至少在一开始,您的所有度量值都可以放在一个事实表中

针对DW的查询性能也将是一个问题…报告和/或特殊查询将必须在需要组合多个度量值的任何时候进行扫描(或查找…如果您的san管理员仍在与您交谈,并且足够慷慨地为您提供必要的空间以正确索引一堆事实表)


我们甚至还没有讨论olap多维数据集,但我已经担心您将遇到的处理问题。完整表扫描大量…或分区扫描…如果您在事实表中实现分区…现在SQL 2012即将面世,您应该实现分区…我正在查看您的ColumnStore索引

每个度量的单独事实表?您能更具体地说明您的想法吗?每个度量值都有单独的事实表意味着将有与度量值一样多的事实表-每个度量值都只有一个度量值,否则可能有一个包含所有度量值的大事实表。可能会有各种更改请求,如使维度更细粒度,添加事实,添加维度,在这些更改请求的基础上,需要新的ETL,ETL可能会在很长一段时间内消耗大量cpu资源—数百万行将再次计算等等。因此,我更倾向于这样看—尽可能简化可扩展性和维护。更改维度粒度,添加事实,添加diemsnison…所有这些都需要ETL开发工作,无论您是否在单独的事实表中隔离每个事实。