一些关于维度建模的xxxx(做数仓项目前看看)

572 阅读4分钟

维度建模通常又分为星型模型、 雪花模型、星座模型。


星型模型

当所有维表都直接连接到 "事实表"上时,整个图解就像星星一样,故将该模型称为星型模型.星型架构是一种非正规化的结构,多维数据集的每一个维度都直接与事实表相连接,不存在渐变维度,所以数据有一定的冗余。

image.png

雪花模型

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 " 层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。

image.png

image.png 星型模型和雪花模型主要区别就是对维度表的拆分, 对于雪花模型, 维度表的涉及更加规范, 一般符合3NF; 而星型模型, 一般采用降维的操作, 利用冗余来避免模型过于复杂, 提高易用性和分析效率。

冗余

雪花模型符合业务逻辑设计, 采用3NF设计, 有效降低数据冗余; 星型模型的维度表设计不符合3NF, 反规范化, 维度表之间不会直接相关, 牺牲部分存储空间。

性能

雪花模型由于存在维度间的关联, 采用3NF降低冗余, 通常在使用过程中, 需要连接更多的维度表, 导致性能偏低; 星型模型反三范式, 采用降维的操作将维度整合, 以存储空间为代价有效降低维度表连接数, 性能较雪花模型高。

ETL

雪花模型符合业务ER模型设计原则, 在ETL过程中相对简单, 但是由于附属模型的限制, ETL任务并行化较低; 星型模型在设计维度表时反范式设计, 所以在ETL过程中整合业务数据到维度表有一定难度, 但由于避免附属维度, 可并行化处理。

星座模型

星座模式是由星型模式延伸而来,星型模式是基于一张事实表,而星座模式是基于多张事实表,而且共享维度表信息。在业务发展后期,绝大部分维度建模都采用的是星座模式。

image.png 无论星型模型、雪花模型还是星座模型,都是针对维度上的区别而来,星座模型实质上还是星型模型,只是共用了维度。

如何选择模型:

  • 实际项目中,多个模型组合并存。
  • 星型模型性能更高。
  • 雪花模型维度细,更灵活。
  • 从整体性能考虑,星型模型要远远高于雪花模型,实际更倾向于星型模型。

关于DataVault

Data Vault是在ER模型的基础上衍生而来, 模型设计的初衷是有效的组织基础数据层, 使之易扩展、 灵活的应对业务的变化, 同时强调历史性、 可追溯性和原子性, 不要求对数据进行过度的一致性处理; 并非针对分析场景所设计。
Data Vault模型是一种中心辐射式模型, 其设计重点围绕着业务键的集成模式。 这些业务键是存储在多个系统中的、 针对各种信息的键, 用于定位和唯一标识记录或数据。

中心表-Hub

唯一业务键的列表, 唯一标识企业实际业务, 企业的业务主体集合。

只包含业务主键信息以及数据装载的描述, 不包含非键值以外的业务数据属性本身; 比如中心表商品, 在DataVault下的设计。

image.png

链接表-Link

表示中心表之间的关系, 通过链接表串联整个企业的业务关联关系。

链接表用来描述中心表间的关联关系, 亦不包含业务键值以及数据装载描述以外的任何非键值数据, 比如教师授课链接表。

image.png

卫星表- Satellite

历史的描述性数据, 数据仓库中数据的真正载体。

数仓中数据的主要载体, 包括对链接表、 中心表的数据描述、 数值度量等信息, 中心表商品、 订单明细的卫星表分别如下:

image.png

image.png