数据仓库——数据建模

  • 数据建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。
  • 将经过系统分析后抽象出来的概念模型转化为物理模型
  • 性能:良好的模型能帮我们快速查询需要的数据,减少数据的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建模是面向应用,遵循第三范式,以消除数据冗余为目标的设计技术。
  • 维度建模是面向分析,为了提高查询性能可以增加数据冗余,反规范化的设计技术。

属性

维度模型

关系模型

数据总量



可读性

容易


表个数



查询速度



冗余度



对实时表的情况

增加宽度

字段比较少,冗余低

扩展性



实施难度

低,周期短

高,周期长

适用场景

快速变化行业、战术性投入、直接面向客户

成熟行业、战略性投入、不直接面向客户