一、为什么需要数据建模
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。
适合业务和基础数据存储环境的模型,大数据能获得以下好处:
- 性能:良好的数据模型能够帮助我们快速查询所需要的数据,减少数据的I/O吞吐。
- 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果服用,极大地降低大数据系统中的存储和计算成本。
- 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
- 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。
大数据系统需要数据模型方法来帮助更好的组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。
二、关系数据库系统和数据仓库
不管是Hadoop、Spark还是阿里巴巴集团的MaxCompute系统,仍然在大规模使用SQL进行数据的加工和处理,仍然在用Table存储数据,仍然在使用关系理论描述数据之间的关系,只是在大数据领域,基于其数据存取的特点在关系数据模型的范式上有了不同的选择而已。
三、从OLTP和OLAP系统的区别看模型方法论的选择
- OLTP(On-Line Transaction Processing 联机事务处理):面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题。
- OLAP(Online Analytical Processing 联机分析处理):面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能,因此它需要采用一些不同的数据建模方法。
四、典型的数据仓库建模方法论
1.ER模型
从全企业的高度设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式理论上符合3NF。数据仓库中的3NF与OLTP中不同过,有以下特点:
- 需要全面了解企业业务和数据
- 实施周期非常长
- 对建模人员对能力要求非常高
ER模型建设数据仓库的出发点是整合数据,为数据分析决策服务。建模步骤分为三个阶段:
- 高层模型:高度抽象,描述企业的业务总体概况。
- 中层模型:在高层模型基础上,细化主题的数据项。
- 物理模型:在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。
2.维度模型
维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型代表事星形模型,以及在一些特殊场景下使用的雪花模型。其设计步骤如下:
- 选择需要进行分析决策的业务过程:单个业务事件;某个事件的状态;一系列相关业务事件组成的业务流程。
- 选择粒度:预判所有分析需要细分的程度,从而决定选择的粒度,粒度是维度的一个组合。
- 识别维表:基于粒度设计维表,包括维度属性,用于分析师进行分组和筛选。
- 选择事实:确定分析需要衡量的指标。
3. Data Vault 模型
它是ER模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合。该模型由一下几部分组成:
- Hub:企业的核心业务实体,由实体key、数据仓库序列代理键、装载时间、数据来源组成。
- Link:代表Hub之间的关系。这里与ER模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。
- Satellite:Hub的详细描述内容,一个Hub可以有多个Satellite。
Hub可以想象成人的骨架,那么Link就是连接骨架的韧带,而Satellite就是骨架上面的血肉。
4.Anchor模型
Anchor对Data Vault模型做了进一步规范化处理,设计的初衷是一个高度可扩展的模型,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到6NF,基本变成了k-v结构化模型。组成如下:
- Anchors:类似于Data Vault的Hub,代表业务实体,且只有主键。
- Attributes:类似于Data Vault的Satellite,但是更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。
- Ties:类似于类似于Data Vault的Link,描述Anchors的关系。
- Knots:代表那些可能会在多个Anchors中公用的属性的提炼。
5.阿里巴巴数据模型实践综述
经历了多个阶段:
第一个阶段:完全应用驱动的时代,第一代数据仓库系统构建在Orcale上,数据完全以满足报表需求为目的。这时候的数据架构只有两层,即ODS+DSS。
-
第二个阶段:ER模型+维度模型方式,构建出一个四层的模型架构,即
- ODL(操作数据层):和源系统保持一致。
- BDL(基础数据层):引入ER模型,加强数据整合,构建一致的基础数据模型。
- IDL(接口数据层):基于维度建模的方法构建集市层。
- ADL(应用数据层):完成应用的个性话和基于展现需求的数据组装。
第三个阶段:大数据技术快速发展的背景下,选择了维度建模为核心理念的建模方法论,同时对其进行了一定的升级和扩展,构建了阿里巴巴集团的公共层模型数据架构体系。
(下章详述)