KDT#77 维度建模中不要只有汇总数据
很多人对维度建模有一个误解,认为维度建模是为了管理和战略分析的需要而建立的汇总数据。事实上,这是一种错误的观点。
维度建模应该保存最细的原子粒度的数据。这样才能满足用户的不确定的需求。出于性能的考虑,数据库管理员要建立一些汇总事实表(也称聚集事实表,Aggregated Fact Table)。这类表每一条记录保存的是选定的几个维度及在这几个维度上汇总的事实值。这些表可以是物理表,也可以是物化视图(materialized views)。但是这些汇总表不能代替原子事实表,而只能是原子事实表的补充。
如果没建立原子事实表而只有汇总事实表的话,会有很多问题。汇总事实表只能回答用户特定的需求,当需求改变时,数据模型和ETL系统都需要跟着改变。汇总事实表限制了用户查询的灵活性。
有一种批评维度建模的观点:维度建模是针对特定需求进行建模,只能支持可预测的用途,所以是不灵活的。事实上,这种观点说的就是汇总事实表,而不是维度建模。Kimball的维度建模中是一定要保存原子数据的。
另外,MSTR对用物理表实现的汇总事实表的支持能力较强。