09.1. 星型模型和雪花型模型
在维度建模中,根据事实表和维度表的关系,可以将常见的模型分为星型模型和雪花型模型。
09.1.1 概念解释
星型模型
- 是一种多维的数据关系,其组成是
- 一个事实表(Fact Table)
- 一组维表(Dimension Table)
- 每个维表都有一个维作为主键
- 所有这些维的主键组合成事实表的主键,理解为内容的唯一。
- 事实表的非主键属性称为事实(Fact)
- 它们一般都是数值或其他可以进行计算的数据(便于分析时的聚合操作)
示意图

说明
星型模型是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,所以数据有一定的冗余
雪花型模型
当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。
- 雪花模型是对星型模型的扩展
- 它对星型模型的维表进一步层次化
- 原有的各维表可能被扩展为小的事实表,形成一些局部的 “层次 ” 区域
- 这些被分解的表都连接到主维度表而不是事实表
示意图

说明
通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余。
09.1.2 优缺点
一般从4个角度进行比较
1、查询性能角度
OLTP-DW 环节,由于雪花型要做多个表联接,性能会低于星型架构;
DW-OLAP 环节,由于雪花型架构更有利于度量值的聚合,因此性能要高于星型架构。
2、模型复杂度角度
星型架构更简单方便处理
3、层次结构角度
雪花型架构更加贴近OLTP系统的结构,比较符合业务逻辑,层次比较清晰。
4、存储角度
雪花型架构具有关系数据模型的所有优点,不会产生冗余数据,而相比之下星型架构会产生数据冗余。
09.1.3 实践经验
根据项目经验,一般建议使用星型模型。
- 因为在实际项目中,往往最关注的是查询性能问题
- 至于磁盘空间一般都不是问题
当然,雪花型模型的几个前提
- 在维度表数据量极大,需要节省存储空间的情况下
- 或者是业务逻辑比较复杂、必须要体现清晰的层次概念情况下
09.1.4 小结
- 首选
星型模型,存储-磁盘不是瓶颈 - 关注 查询分析性能

浙公网安备 33010602011771号