数仓建模基本类型

主要的建模思想大致有三类,三范式,纬度建模,还有datavalt。

三范式

熟悉关系型数据库的都知道,三范式建模主要可以避免数据冗余。如果数据仓库中采用这种建模方式,还有另外的好处就是可以直接将关系型数据库中数据直接导入数仓,减少了很多的建模工作。三范式建模的一个显而易见的缺点就是查询性能,因为需要跨表查询。如今存储成本已经不再是限制大数据发展的主要因素了,所以个人认为增加冗余而减少查询开销是有必要的。

Inmon 坚持三范式建模的原因还有:

  1. 数据仓库中的数据应该不违反任务业务规则
  2. 数仓本身使用的技术包括建模应该越通用越好
  3. 必须尽可能将数据装入数据仓库,因此冗余性降低利于提高速度

维度建模

维度建模是大师kimball的观点,和关系型建模相反,维度建模通过增加冗余来增加查询速度,他将业务主题对应的多个实体冗余记录,将共有维度,变化缓慢的属性抽出形成维度表。与关系型建模面向实体,维度建模主要面向业务。在数仓建模中,维度建模用的最多。
一般的建模流程:

  1. 选择业务流程
  2. 确定粒度
  3. 确定事实
  4. 确定维度

有些时候,会对维度进一步的细化,就成了雪花模型

Data Vault

DataVault相当于上面两种建模的折中。用的比较少,至少我没接触过。
DataVault包含3种类型的表,中心表,链接表,附属表(描述表,在我看来就是维度表)。

和关系型建模相比,每个中心表对应业务的每个实体,这点没有变。但是中心表不再包含属性键值,属性键被写到附属表,只包含业务主键。实体之间的联系不再由外键约束,而是在链接表定义。将关系型数据导出也很方便,不需要做太多建模工作,只需要3中表抽出即可。

个人比较喜欢维度建模,简单易懂,当然还需要针对不同场景区分

你可能感兴趣的:(数仓建模基本类型)