数据仓库——数据建模
- 数据建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。
- 将经过系统分析后抽象出来的概念模型转化为物理模型
- 性能:良好的模型能帮我们快速查询需要的数据,减少数据的IO吞吐
- 成本:减少数据冗余、计算结果复用、从而降低存储和计算成本
- 效率:改善用户使用数据的体验,提高使用数据的效率
- 改善统计口径的不一致性,减少数据计算错误的可能性
ER建模
- 数据仓库之父Bill Inmon推崇ER建模
- Bill Inmon希望达到的“single version of the truth”。
- 从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。
- 简而言之,第一范式就是无重复的列。
- 简而言之,第二范式就是非主属性完全依赖于主关键字。
- 简而言之,第三范式就是属性不依赖于其它非主属性。
- 优缺点
- 优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视
- 缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾。
维度建模
- 数据仓库大师Ralph Kimball 倡导维度建模
- 《The DataWarehouse Toolkit-The Complete Guide to Dimensona Modeling》,中文名《数据仓库工具箱》
- 维度建模以分析决策的需求构建模型,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。
- 维度建模中有一些比较重要的概念:
- 事实表
- 发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表行对应一个度量事件,反之亦然。
- 维度表
- 每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然,维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。
- 度量值
- 度量值是对一次行为的度量
- 优缺点
- 优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能
- 缺点:维度表的冗余会较多,视野狭窄
对比分析
- ER建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。
- 维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
属性 | 维度模型 | 关系模型 |
数据总量 | 多 | 少 |
可读性 | 容易 | 差 |
表个数 | 少 | 多 |
查询速度 | 快 | 慢 |
冗余度 | 高 | 低 |
对实时表的情况 | 增加宽度 | 字段比较少,冗余低 |
扩展性 | 差 | 好 |
实施难度 | 低,周期短 | 高,周期长 |
适用场景 | 快速变化行业、战术性投入、直接面向客户 | 成熟行业、战略性投入、不直接面向客户 |