维度建模简介
维度建模是一种将数据结构化的逻辑设计方法,因此它对业务用户来说很直观,并能提供较快的查询性能。
维度建模将客观世界分为事实和维度。
1、维度建模 VS 范式(3NF)建模
建模方法 | 开发周期 | 开发成本 | 数据冗余 | 维护成本 |
---|---|---|---|---|
维度建模(Kimball) | 短 | 低 | 有 | 高 |
范式建模(Inmon) | 长 | 高 | 无 | 低 |
在数仓模型架构设计中,维度建模以星型模型为主。
dw层通常采用范式建模,并可根据实际情况允许存在一些冗余。
dm层通常采用维度建模,因维度建模构建出的数据模型更复合普通人的认知,易被理解,从而有利于数据的推广使用。
2、维度建模的好处?
范式建模是一种想尽方法消除数据冗余的设计方法,数据被分成很多离散的实体,每一个实体在关系数据库中都对应一个数据表。即使简单的订单业务过程也会产生好几十个表。这种规范化方式对事务处理来说非常有好处,因这种情况下事务的加载和更新会比较简单和迅速。
维度建模的好处:
1.业务角度—可理解性
最主要原因。因信息都被分组到一致的业务分类(维)中,业务分类可以帮助用户查询模型。
2.技术角度—星型联接数据库的查询优化是简单、可预测、可控制的
大多数数据库优化器都是为星型联结设计的(先对维度表加上约束条件并查找满足查询条件的键,随后通过对相关维度键进行笛卡尔积操作来查询事实表)
注:笛卡尔积
设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积,记作AxB.
笛卡尔积的符号化为:
A×B={(x,y)|x∈A∧y∈B}
例如,A={a,b}, B={0,1,2},则
A×B={(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
B×A={(0, a), (0, b), (1, a), (1, b), (2, a), (2, b)}
3.优良的扩展性
来源:CSDN
作者:sexy_orange
链接:https://blog.csdn.net/sexy_orange/article/details/103845065