中国统计网数据仓库基础知识,「5分钟+8角度」帮你搞定!( 四 )


1. 星型模型
当所有维表都直接连接到事实表上时 , 整个图解就像星星一样 , 故将该模型称为星型模型 。
中国统计网数据仓库基础知识,「5分钟+8角度」帮你搞定!
本文插图
星型架构是一种非正规化的结构 , 多维数据集的每一个维度都直接与事实表相连接 , 不存在渐变维度 , 所以数据有一定的冗余 , 如在地域维度表中 , 存在国家A 省B的城市C以及国家A省B的城市D两条记录 , 那么国家A和省B的信息分别存储了两次 , 即存在冗余 。
2. 雪花模型
当有一个或多个维表没有直接连接到事实表上 , 而是通过其他维表连接到事实表上时 , 其图解就像多个雪花连接在一起 , 故称雪花模型 。 雪花模型是对星型模型的扩展 。 它对星型模型的维表进一步层次化 , 原有的各维表可能被扩展为小的事实表 , 形成一些局部的层次 区域 , 这些被分解的表都连接到主维度表而不是事实表 。
如图所示 , 将地域维表又分解为国家 , 省份 , 城市等维表 。 它的优点是:通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能 。 雪花型结构去除了数据冗余 。
中国统计网数据仓库基础知识,「5分钟+8角度」帮你搞定!
本文插图
星型模型因为数据的冗余所以很多统计查询不需要做外部的连接 , 因此一般情况下效率比雪花型模型要高 。 星型结构不用考虑很多正规化的因素 , 设计与实现都比较简单 。 雪花型模型由于去除了冗余 , 有些统计就需要通过表的联接才能产生 , 所以效率不一定有星型模型高 。
正规化也是一种比较复杂的过程 , 相应的数据库结构设计、数据的 ETL、以及后期的维护都要复杂一些 。 因此在冗余可以接受的前提下 , 实际运用中星型模型使用更多 , 也更有效率 。
3. 星型模型和雪花模型对比
星形模型和雪花模型是数据仓库中常用到的两种方式 , 而它们之间的对比要从四个角度来进行讨论 。

  • 数据优化:雪花模型使用的是规范化数据 , 也就是说数据在数据库内部是组织好的 , 以便消除冗余 , 因此它能够有效地减少数据量 。 通过引用完整性 , 其业务层级和维度都将存储在数据模型之中 。 相比较而言 , 星形模型使用的是反规范化数据 。 在星形模型中 , 维度直接指的是事实表 , 业务层级不会通过维度之间的参照完整性来部署
  • 业务模型:在雪花模型中 , 数据模型的业务层级是由一个不同维度表主键-外键的关系来代表的 。 而在星形模型中 , 所有必要的维度表在事实表中都只拥有外键
  • 性能:第三个区别在于性能的不同 。 雪花模型在维度表、事实表之间的连接很多 , 因此性能方面会比较低 。 举个例子 , 如果你想要知道一个用户的详细信息 , 雪花模型就会进行若干表的join最终汇总结果 。 而星形模型的连接就少的多 , 在这个模型中 , 如果你需要对应信息 , 你只要将维度表和事实表连接即可
  • ETL:雪花模型加载数据集市 , 因此ETL操作在设计上更加复杂 , 而且由于附属模型的限制 , 不能并行化 。 星形模型加载维度表 , 不需要再维度之间添加附属模型 , 因此ETL就相对简单 , 而且可以实现高度的并行化
  • 【中国统计网数据仓库基础知识,「5分钟+8角度」帮你搞定!】总结:雪花模型使得维度分析更加容易 , 比如针对特定的广告主 , 有哪些客户或者公司是在线的? 星形模型用来做指标分析更适合 , 比如给定的一个客户他们的收入是多少?


推荐阅读