数仓建模入门及常用方法

Posted on 2021-03-13 19:20  SinkingInBigData  阅读(281)  评论(0)    收藏  举报

目的

1.提高性能:帮助快速查找数据,减少I/O吞吐

2.降低成本:减少数据冗余,实现计算结果复用

3.提高效率:提高数据使用效率

4.提高质量:改善数据统计口径的不一致性,减少数据计算错误的可能性

 

范式建模

1.3NF范式:

i.原子性。每个属性必须唯一,不具有多义性(不能拆分成其他几列)

ii.必须存在主键。每个非主属性必须完全依赖于主键,而非主键的一部分。

iii.消除传递依赖。另外非主键列必须直接依赖于主键,不能存在传递依赖

2.3NF模型基本组成:

i.实体:相同特征和性质的属性抽象,用抽象的实体名和属性名共同刻画的逻辑实体

ii.关系:实体之间的关系

iii.属性:实体的某种特性

3.ER模型:

整合数据,将各个系统中的数据以整个企业的角度按主题进行相似性组合和合并,并进行一致性处理

4.建模步骤:

高层阶段:一个高度抽象的模型,描述主要的主题及主题间的关系

中层阶段:在高层模型的基础上,细化主题的数据项

物理阶段:也叫做底层模型,在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也 可能做一些表的合并、分区的设计等

5.特点:

实施周期长,需要全面了解业务数据,对建模人员要求高

 

 

维度建模(kimball)

1.特点:

i.一个规范化的事实表和反规范化的一些维度表

ii.表跟表之间的关系通过关键字和外键来定义

iii.不考虑修改的性能

2.维度表:

i.每一张维表对应现实世界中的一个对象或者概念。如:客户、产品、日期、地区、商场

ii.多属性大宽表

iii.行数较少

iv.内容很少变化

3.事实表:

i.每一个事实表通常包含了处理所关系的度量值

ii.具有可加性的数值型的度量值

iii.数据量大,很少变化

4.维度建模的三种方式:

i.星型模型:面向主题建模,由一个事实表和多个一维维度表组成,适用于面向主题的数据集市建模

特点:a.维度表只和事实表关联,维度之间没有关联

b.每个维表的主码为单列,且该主码放置在事实表中,作为两边连接的外码

c.以事实表为核心,维表围绕很呈星型分布

ii.雪花模型:在星型模型的基础上继续向外扩展,每个维度表可以向外连接多个字表

特点:a.耦合性低、冗余小

b.查询麻烦,跨表查询性能低

c.相当于拆分星型模型的维度表,减少数据冗余。但是数据冗余在数仓中并不严重

iii.星座模型:星型模型的扩展,存在多个事实表并可以共用一个维度表,适用于企业级数据仓库

特点:大多数业务发展最终形态。

 

 

Data Vault 模型

1.中心表(Hub):

中心表用来保存一个组织内的每个实体的业务主键,业务主键唯一标识某个业务实体

表内包括几个关键字段:代理主键(Surrorgate Key),即hub表的主键;业务实体主键(Business Key),记录业务 键值;装载时间(Load Data/Time Stamp),记录该业务键值的记录时间;数据源(Record Source),记录该业务 键值的来源,以追踪数据

2.链接表(Link):

链接表是中心表之间的链接。一个链接表意味着两个或多个中心表之间有关联。一个链接表通常是一个外键,它代表 着一种业务关系

3.附属表:

附属表用来保存中心表和链接表的属性,包括所有的历史变化数据。一个附属表总有一个且唯一一个外键引用到中心 表或链接表。

Hub表中业务主键所对应的业务描述,即业务实体的属性信息,这些信息具有时效性,随时间变化而可能产生变化, 因此,Satellite组件内的记录均具有时间维,可记录实体属性的历史变化情况。根据实体属性变化频率的不同,可将 一类实体的业务属性分为若干Satellite表,通过向Satellite分表追加记录,以实现在更小粒度下,实现第二类渐变维的保存历史数特性。

4.Point-In-Time辅助表:

用于同一Hub的多个Satellite组件间的时间同步。因为同一业务实体的不同类型属性的更新频率不同,因此同一Hub 的多个Satellite组件基本不会同步更新,因此,只需要在PIT表中记录在同一时点同时有效的Satellite组件描述信息即 可,以保证查询到的数据是查询时点的实体状态。通过PIT表中的记录,可以清晰的分析业务实体属性的变化频率及频 率差异