1、前言
从各个业务线的数据到运营决策的报表,数据在流转过程中,如何安全、高效、准确的流转,这是数据仓库需要解决的问题。
关于建模的方式主要有两种流派,分别有两本书
1、inmon的关系建模,《数据仓库第四版》
2、kimball的维度建模,《数据仓库工具箱》
因为维度建模更适用与现在互联网公司的快速迭代、敏捷开发,所以,我们以《数据仓库工具箱》的维度建模为主要学习参考
2、维度模型基础
数据仓库的最终目的:
- DW/BI系统要能方便的存取信息
- DW/BI系统要以一致的形式展示信息
- DW/BI系统要适应变化
- DW/BI系统要能及时的展示信息
- DW/BI系统要能保证信息安全
总结下来就是:使用方便、一致性、可扩展性、及时性、安全性、准确性、业务适用性
维度建模按表可分为事实表和维度表,
事实表
事实表中的每行对应一个度量事件,每行中的数据是一个特定级别的细节数据,称为粒度,粒度可划分为三类:事务、周期性快照、累积快照
事实表的事实数值可分为三种:
- 可加性
在维度建模中,对于大数据量的处理,一般累加起来是最简单也是比较直观的统计,例如销售额、成本等
- 半可加
不能按时间维度汇总,例如账户结余
- 不可加
例如单价、不可以相加统计
维度表
维度表包含与业务过程度量事件有关的文本环境,用于描述谁、什么、哪里、何时、如何、为什么等有关事件
与事实表比较,维度表一般包含较少的行,但是可能列数较多
区别
事实表 | 维度表 |
---|---|
一般有多个外键 | 单一主键,用来和维度关联 |
一般多个值,可计算 | 一般有限个枚举值,通常用来过滤、分组 |
区别并不绝对,例如物品的单价,有时可能认为是商品的维度属性,但是有些物品的单价可能波动较大,从这一点看可以看作是事实的属性,所以具体的分类需要根据具体的需求来建立恰当的模型
3、维度模型和关系模型
维度模型
如下图,将数据仓库分为四部分,操作性源数据、etl系统、展现区、bi应用
操作性源数据指业务线上数据或其他产生的原始数据
etl这一步包括抽取数据,分割转换事实和维度字段,载入展示区的维度模型
展示区一般按星型模型或OLAP多维数据库存储,供bi应用查询调用,一般最好使用原子数据,包含最细粒度,满足无法预料的随意查询
维度建模的基础,也就是使用一致性维度,这个是维度建模把整个数据仓库串起来的基础
关系模型
在关系模型的数据仓库中etl最后载入的是满足三范式的数据库,这种规范、原子的数据的仓库被称为EDW(企业数据仓库)
如上图,关系模型借助规范化的EDW来满足用户分析和报表的需求,工程师更多的是从不同源获取数据,按三范式载入EDW
不管关系模型还是维度模型,都强调企业所有数据的同步、集成,这也是仓库的含义,而不是单一的库,不同的是关系模型强调用规范化的EDW(企业数据仓库)来承担这一任务,而维度模型强调适用一致性维度来实现整个企业数据的互通
混合模型
如下图,虽然也有EDW,但是更多的是作为维度模型的数据来源部分,展示区依然是采用更加灵活的维度建模方式供用户查询分析
总结
关系模型更强调满足三范式的EDW来实现查询分析需求,但是这种方式不够灵活,维度模型分事实数据和维度数据,能更方便的新增减少维度属性,更强调使用一致性维度来整合串联所有数据
参考资料
数据仓库工具箱第一章