2.数仓建模理论

建模理论:关系建模(ER建模)、纬度建模(DIM建模)

关系建模严格遵守三范式(3NF)理论 ,也因为三范式的特性,使关系模型较为松散、零碎、物理表数量多,数据冗余低,数据一致性容易得到保证,但是在大数据场景查询效率较低

1. 属性不可分割:单表一个字段的数据不可分割成多个字段,即数据原子性要求。如商品字段值为 2台手机,可以分割为 商品、数量两个字段。

2. 不能存在部分函数依赖:单表不能存在非主键字段数据,只依赖主键的一部分。例分数表的 主键(学号,课程),有一个字段为学院,学院只依赖学号,不依赖课程。

3. 不能存在传递依赖:单表中不能存在 A --> B(B ! --> A) -->C,A映射到B,再通过B映射到C,且要求B不能映射到A。

三范式

  目的:降低数据的冗余,因为数据冗余会增加存储成本,和修改数据时维护数据一致性的成本(只要存在一个字段的数据有重复,都称之为冗余)

  缺点:数据查询时候需要join多表,影响性能。

纬度建模以数据分析作为出发点,不遵循3NF,故数据存在一定冗余。纬度模型面向业务,将业务用事实表和维度表呈现出来。表结构简单,查询效率较高(join的表较少)。

事实表和纬度表区别:

事实表分类:事务型事实表(发生后不再改变)、周期性快照事实表(类似于周期统计表)、累积型快照事实表(工单流转记录表,会随时间和操作而发生变更)

纬度模型分类:星型模型、雪花模型、星座模型

雪花模型和星型模型的区别:雪花模型会对维度表进一步细分和规范化。

雪花模型和星座模型区别:星座模型有多个事实表,而雪花模型只有一个事实表。

如何选择建模类型:

  首先星座是跟设计无关,跟需求和数据有关,且并不与前两者冲突,不用选择。

  星型还是雪花取决于性能有限还是灵活优先,实际企业开发中不会绝对选一种,根据实际情况灵活组合,甚至并存。但整体而言,倾向于维度更少的星型,尤其是Hadopp生态,

减少Join即可减少MR的shuffle,性能差距大。关系型数据库则依靠强大的主键索引。

 维度建模步骤:

选择业务过程:告警业务、工单业务...一条业务对应一张事实表

声明粒度:一条记录的最小粒度,告警事实表的一条记录是一个已发生的告警。

确认维度:维度的作用是用于描述业务事实。

确认事实:业务中的度量值。

DWD层时候以业务驱动,DWS、DWT、ADS以需求驱动,和维度建模已经没有关系。

DWS、DWT都是面向主题建宽表,主题是观察问题的角度,对应维度。

posted on 2022-01-20 15:29  挣扎的发际线  阅读(221)  评论(0编辑  收藏  举报

导航