目录
- 前言
- 维度建模
- 星型模型
- 小结
-
前言
维度建模是Kimball提出来的经典的数据仓库建模思想。维度建模提倡针对某一主题,通过建设维度和事实来快速建设数据仓库。与维度建模相对应的自然是Inmon的范式建模。在上篇也提到范式建模非常适合应用于中间明细层的建设,那么在DW/DM层为什么选择使用维度建模呢?这是第一个问题。维度建模的核心是总线架构,一致性维度,一致性事实。本篇的主题是总线架构,那为什么说维度模型是总线式架构?本篇通过维度建模和星型模型的讲解来分别解释这两个问题。
-
维度建模
维度模型之所以被选择在DW/DM层上来实现,是因为维度建模的如下特点:
- 易用性。数据仓库的目的是DSS,即决策支持系统(Decision Support System ,简称DSS),既然面向的的是分析用户,那么数据越容易理解,越能受用户欢迎,而维度建模包含具有描述特性的维度表可以让用户很容易理解数据,而不像范式建模,由于太过规范化而导致用户对数据的理解有一定的难度,需要对业务的很深很细的了解。
- 性能高。通过数据的处理,排序和整合,构建出来的维度表,不仅能够让用户很方便的理解数据,使用数据,而且在计算所需要的数据的时候,不需要关联太多的表,从而使得计算的性能很高。
- 扩展性。具有非常好的可扩展性,以便容纳不可预知的新数据源和新的设计决策。可以很方便在不改变模型粒度情况下,增加新的分析维度和事实,不需要重载数据,也不需要为了适应新的改变而重新编码。
-
星型模型
提起维度建模就不得不提星型模型和雪花模型之争,具体两种模型是什么,之前已经讨论过了http://www.cnblogs.com/benchen/p/6011721.html,而且网上也很容易找到,这里就不再赘述。在Kimball的理论中,星型模型备受推崇。原因有以下几点吧。
- 星型模型更具有易理解性,毕竟维度模型都是直接挂在事实表,没有额外的关联,所有的维度信息都汇集在维表中了。
- 星型模型性能更高。只需要一次的关联就能获取这一维度的所有描述信息。
- 冗余程度要更高,所有有层次关系的维度,都被设计成扁平化,有一定的冗余。但是维度表的冗余相比事实表毕竟不是一个数量级的。鉴于上面的两点,更多的偏爱于星型模型。
星型模型是针对的单一事实表的情形,当有多个事实表通过维度关联在了一起就形成了星座模型。星座模型可以是同一主题单不同粒度的事实表之间的关联,也可以是不同主题的事实表共用同一维表。毕竟是有全局的一致性维度。
-
小结
维度建模适合于DW/DM层建模,通过使用维度建模,用户可以得到很好的效果,只有用户满意了,数据仓库才能实现更大的价值。可以说维度建模的核心是星型模型,星型模型所拥有的特点正是用户方便使用的根源。
当然维度模型也有着一些缺点,比如数据的一致性很难保证,数据的冗余,大量的维度信息处理等,但这些相对于有点来讲都是可接受的,而且也可以通过其他方式避免和简化的。
以维表为总线,事实表以维表为基础的总线矩阵,意味着建设出来的架构正是总线式架构。
时间: 2024-10-07 04:21:56