数据建模方法论
传统的数据仓库一般是搭建在关系型数据库上,数据建模大多基于ER模型;现代互联网公司一般是搭建在大数据环境(cdh、hadoop)上,数据建模大多基于维度模型建设的。这些建模有什么不同?数据仓库又为需要需要数据建模呢?下面就从近期的学习学到的内容予以讲述。
为什么需要数据建模
随着大数据时代互联网的到来,数据增长速度以爆发式发展,如何将这些数据进行有序、有结果地分类组织和存储是我们面临的一个挑战。
如果把数据看作图书馆里的书,我们希望看到它们在快回上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。
建模的好处
大数据就能获得以下好处。
- 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。
- 成本:良好的数据模型能极大减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本 。
- 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
- 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。
因此,毋庸置疑,大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡。
数据仓库建模方法论
ER模型
是从企业的高级设计一个3NF模型,用实体关系(Entity Relationship,ER)模型描述企业业务,在范式上符合3NF。
数据仓库中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。其具有以下几个特点:
1.需要全面了解企业业务和数据。
2.实施周期非常长。
3.对建模人员的能力要求非常高。
采用ER模型建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不能直接用于分析决策。
其建模步骤分为三个阶段:
- 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总和概况。
- 中层模型:在高层模型的基础上,细化主题的数据项。
- 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。
维度模型
维度模型是当前最流行的建模方法类。维度建模从分析决策的需要出发构建模型,为分析需要服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤。
1.选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生的情况,还是当前状态或是事件流转效率。
2.选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
3.识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。
4.选择事实。确定分析需要衡量的指标。
Data Vault模型
DV模型是ER模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对源系统变更的扩展性。Data Vault模型由以下几部分组成。
1.Hub:是企业的核心业务实体,由实体key、数据仓库序列代理键、装载时间、数据来源组成。
2.Link:代表Hub之间的关系。这里与ER模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述1:1、1:n和n:N的关系,而不需要做任何变更。它由Hub的代理键、装载时间、数据来源组成。
3.Satellite:是Hub的详细描述内容,一个Hub可以有多个Satellite。它由Hub的代理键、装载时间、来源类型、详细的Hub描述信息组成。
Data Vault模型比ER模型更容易设计和产出。它的ETL加工可实现配置化。通过Dan Linstedt的比喻更能理解Data Vault的核心思想:Hub可以想象成人的骨架,那么Link就是连接骨架的韧带,而Satellite就是骨架上面的血肉。
Anchor模型
Anchor模型是Data Vault模型的进一步规范化,核心思想是所有的扩展只是添加而不会修改,因此将模型规范到6NF,基本变成了k-v结构化模型。
我们看一下Anchor模型的组成。
1.Anchors:类型于Data Vault的Hub,代表业务实体,且只有主键。
2.Attributes:功能类型于Data Vault的Satellite,但是它更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。
3.Ties:就是Anchors之间的关系,单独用表来描述,类似于Data Vault的Link,可以提升整体模型关系的扩展能力。
4.Knots:代表那些可能会在多个Anchors中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。
参考
阿里巴巴《大数据之路》