数仓知识02:星型模型、雪花模型、星座模型

构建数仓的过程中,我们会接触到“星型模型”、“雪花模型”、“星座模型”的概念,对于在这个领域没有相关知识积累的人,可能会感觉到很困惑,今天就对这三个名词进行概念讲解,并简单说一下如何选择,期望大家看完能够有所帮助。

1. 星型模型、雪花模型、星座模型 基础概念

  • 星型模型

星型模型是所有维度表都是连接在一个事实表上面,雪花模型是将维度表拆分地更加详细,是多层次的。

数仓知识02:星型模型、雪花模型、星座模型_第1张图片

在星型模型的维度表里面,一张维度表储存了众多存在冗余的信息,为什么冗余,在哪里冗余,有一个简单的例子:

地域维表
国家a    GDP
国家b    GDP
国家a    省份a    GDP
国家a    省份b    GDP
国家a    省份c    GDP
国家a    省份a    市级a    GDP
国家a    省份a    市级b    GDP
国家a    省份a    市级c    GDP
  • 雪花模型

数仓知识02:星型模型、雪花模型、星座模型_第2张图片

 在雪花模型的表中,数据是这样存储:

国家表
国家a    GDP
国家b    GDP

国家a省份表
省份a    GDP
省份b    GDP
省份c    GDP

国家a省份a市表
市级a    GDP
市级b    GDP
市级c    GDP

这样有一部分信息只需要存储一次,减少了冗余信息。

  • 星座模型

数仓知识02:星型模型、雪花模型、星座模型_第3张图片

 星座模型基本上是很多数据仓库的常态,因为很多数据仓库都是多个事实表的。所以星座不星座只反映是否有多个事实表,他们之间是否共享一些维度表。

星座模型并不和前两个模型冲突。

2. 星型模型、雪花模型区别

星型模型 雪花模型
特点 非正规化;
多维数据集中的每一个维度都与事实表连接(通过主键和外键);
不存在渐变维度;
有冗余数据;
查询效率可能会比较高;
不用过多考虑正规化因素,设计维护较为简单
正规化;
数据冗余少;
有些数据需要连接才能获取,可能效率较低;
规范化操作较复杂,导致设计及后期维护复杂;

3. 模型的选择

首先就是星座不星座这个只跟数据和需求有关系,跟设计没关系,不用选择。星型还是雪花,取决于性能优先,还是避免冗余、灵活更优先。

在实际开发的过程中,不会绝对选择一种,根据情况灵活组合,甚至并存(一层维度和多层维度都保存)。我们可以在数据仓库架构中同时使用这些模型的混合体。比如中间处理层,可以用雪花模型降低冗余度,在数据集市层,采用星型模型方便提取数据,提高查询效率。

整体来看,更倾向于维度更少的星型模型。尤其是hadoop体系,减少join就是减少shuffle,性能差距很大。(关系型数据可以依靠强大的主键索引)

参考资料:

雪花模型、星型模型和星座模型

数据仓库架构星型模型VS雪花模型!

星型模型和雪花型模型比较

全方位解读星型模型,雪花模型及星座模型

了解星型架构及其对 Power BI 的重要性

你可能感兴趣的:(数据仓库,数据仓库,数据库,database)