大数据:ER、维度、Data Vault 模型简述

 一、为什么需要建立数据模型

  • 数据模型是组织和存储数据的方法;
  • 适合业务和基础数据存储环境的模型,具有以下几点好处:
  1. 性能:快速查询所需要的数据,减少数据的 I/O 吞吐;
  2. 成本:减少不必要的数据冗余,实现计算结果复用,降低数据系统中的存储和计算成本;
  3. 效率:改善用户使用数据的体验,提高使用数据的效率;
  4.  质量:改善数据统计口径的不一致性,减少数据计算错误的可能性;

二、关系数据库系统、数据仓库、OLTP和OLAP 系统区别

  • 大量的数据仓库系统依托强大的关系数据库能力存储和处理数据,其采用数据模型方法也是基于关系数据库理论;
  • OLTP 系统:通常面向的主要数据操作是随机读写,主要采用满足 3NF 的实体关系型存储数据,从而在事务处理中解决数据的冗余和一致性问题;
  • OLAP 系统:面向的主要数据操作是批量读写,不关注事务处理的一致性,主要关注数据的整合,以及在一次性的复杂数据查询和处理中的性能;

三、典型的数据仓库建模方法论

1、ER(Entity Relationship 实体关系) 模型

  • 数据仓库之父 Bill INmon 提出的建模方法:从全企业的高度设计一个 3NF 模型,用实体关系(ER)模型描述企业业务,在范式理论上符合 3NF。
  • 数据仓库中的 3NF 和 OLTP 系统中的 3NF 的区别:数据仓库的 3NF 是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象;
  • 数据仓库的 3NF 特点:
  1. 需要全面连接企业业务和数据;
  2. 实施周期非常长;
  3. 对建模人员的要求较高;
  • 采用 ER 模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但并不能直接用于分析决策;
  • ER 模型建模步骤:
  1. 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况;
  2. 中层模型:在高层模型的基础上,细化主题的数据项;
  3. 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,或者做一些表的合并、分区设计;

2、维度模型

  • 维度模型:从分析决策的需求出发构建模型,为分析需求服务,重点关注用户如何更快速的完成需求分析,具有较好的大规模复杂查询的响应性能;
  • 维度模型的典型代表:星形模型,以及在一些特殊场景下使用的雪花模型;
  • 维度模型设计步骤:
  1. 选择需要进行分析决策的业务过程;
  2. 选择粒度:在数据分析中,要预判所有分析需求要细分的程度,决定选择的粒度。(粒度是维度的一个组合)
  3. 识别维表:基于选择好的粒度设计维表,包括维度属性,用于分析时进行分组和筛选。
  4. 选择事件:确定分析需要衡量的指标;

3、Data Vault 模型

  • Data Vault 模型:
  1. ER 模型的衍生,为了实现数据的整合,但不直接用于数据分析决策;(比 ER 模型更容易设计和产出,Data Vault 模型的 ETL 加工可实现配置化)
  2. 强调建立一个可审计的基础数据层,强调数据的历史性、可塑性、原子性,而不要求对数据进行过度的一致性处理和整合;
  3. 基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性;
  • Data Vault 模型组成:
  1. Hub:企业的核心业务实体,由实体 key、数据仓库序列代理键、装载时间、数据来源组成;
  2. Link:代表 Hub 之间的关系。与 ER 模型最大的区别是将关系作为一个独立的单元抽象,提升模型的扩展性。可以直接描述 1:1、1:n、n:n 的关系,不需要作任何变更。由 Hub 的代理键、装载时间、数据来源组成。
  3. Satellite:是 Hub 的详细描述内容。一个 Hub 可以由多个 Satellite 。由 Hub 的代理键、装载时间、来源类型、详细的 Hub 描述信息组成;
  • 如果 Hub 是人的骨架,那么 Link 就是连接骨架的韧带,Satellite 就是骨架上的血肉;

4、Anchor 模型

  • Anchor 模型:一个高度可扩展的模型,核心思想是所有的扩展知识添加而不是修改,因此将模型规范到 6NF,基本变成了 k-v 结构化模型;
  • Anchor 虽增加的扩展性,也增加了非常多的查询 join 操作
  • Anchor 模型组成:
  1. Anchors:代表业务实体,且只有主键;(类似于 Data Vault 的 Hub)
  2. Attributes:功能类似于 Data Vault 的 Satellite,但是其更加规范化,将其全部 k-v 机构化,一个表只有一个 Anchors 的属性描述;
  3. Ties:Anchors 之间的关系,单独用表类描述,类似于 Data Vault 的 Link,可以提升整体模型关系的扩展能力;
  4. Knots:代表可能在多个 Anchors 中公用的属性的提炼;(比如性别、状态等这种枚举类型且被公用的属性)

五、阿里数据模型实践综述

  • 阿里的数据仓库模型经历了多个发展阶段:

1、 第一个阶段:完全应用驱动。

  • 阿里第一代数据仓库系统建在 Oracle 上,数据完全以满足报表需求为目的,将数据以与源数据结构相同的方式同步到 Oracle(称作 ODS 层),数据工程师基于 ODS 层数据进行统计,基本没有系统化的模型方法体系,完全基于对 Oracle 数据库特性的利用进行数据存储和加工,部分采用一些维度建模的缓慢变化维方式进行历史数据处理。这时候的数据架构只有两层:ODS + DSS;

2、第二个阶段

  • 数据量增加,性能成为最大问题;
  • 引入 MPP 架构体系的 Greenplum ,同时优化数据架构,希望通过模型技术改变烟囱式的开发模型,消除冗余,提升数据的一致性;
  • 尝试应用 ER 模型 + 维度模型,构架一个四层模型架构:ODL(操作数据层)+ BDL(基础数据层)+ IDL(结构数据层)+ ADL(应用数据层);
  1. ODL 和源系统保持一致;
  2. BDL 引入 ER 模型,加强数据的整合,建立一致的基础数据层;
  3. IDL 基于维度模型方法构建集市层;
  4. ADL 完成应用的个性化和基于展现需求的数据组合;
  • 问题:业务发展较快,ER 模型产出较慢;(在不太成熟、快速变化的业务面前,构建 ER 模型的风险非常大,不太适合构建 ER 模型)

3、第三个阶段

  • 出现了以 Hadoop 为代表的分布式计算平台,同时阿里自主研发分布式计算平台 MaxCompute;
  • 建设自己的第三代模型架构:以 Kimball 的维度模型建模为核心的建模理论方法,构建阿里的公共层数据模型体系;
  • 数据公共层建设目的:解决数据存储和分布式计算的共享;
  • 阿里数据公共层建设的指导方法是一套统一化的集团数据整合及管理的方法体系(阿里内部称为“OneData”),其中包括一致性的指标定义体系、模型设计方法体系、配套工具;
原文地址:https://www.cnblogs.com/volcao/p/13409186.html