1、为什么要建模意义
图书,希望分门别类摆放,电脑桌面上文件希望是自己习惯组织方式。
数据模型:数据组织和存储方法。强调从业务、存取和使用角度合理存储。(烂程序员关心代码,好的程序员关系数据结构和他们间的关系)
重要性:
(1)性能:快速查询、减少IO。
(2)成本:降低计算和存储成本(减少数据冗余、结果复用)
(3)效率:提高查询效率(用户体验好)
(4)质量:改善口径不一致,减少计算错误可能性
2、关系数据库与数据仓库
目前仍大规模使用SQL加工处理,使用table存储数据,关系理论描述数据关系。大数据仅基于存储特点在关系模型的范式上有了新的选择。
OLTP和OLAP:OLTP数据操作随机读写,关注满足3NF的模型,事务处理中解决数据冗余和一致性问题。OLAP数据操作批量读写,关注数据整合和复杂查询的性能问题。
3、数据仓库建模方法论
(1)ER模型
Bill Inmon提出,从企业高度设计的一个3NF模型,用实体关系ER模型来描述企业业务,基本满足3NF理论。为数据分析决策服务,但不能直接用于分析决策。
与OLTP的3NF区别在于,站在企业角度面向主题抽象,而不是针对某一个业务流程的实体对象抽象。
三个特点:需全面了解企业业务和数据,实施周期长,成本高,模型人员要求高。
三个阶段:高阶模型(描述企业业务总体概况)、中层模型(高阶模型基础上细化数据项)、物理模型(中层模型基础上考虑物理存储和基于平台的性能物理属性设计)。
典型代表:Teradata金融行业的FS-LDM(Finacial Services Logical Data Model),10大主题。
(2)维度模型
Ralph Kimball提出,重点关注如何快速完成需求分析,同时复杂查询的响应性能。从分析决策需求出发构建模型,可直接用于分析决策。
设计步骤:选择分析决策业务过程,选择粒度,确定分析维度(维表),确定衡量指标(事实表)
典型代表:星形模型,特殊场景下使用雪花模型。
(3)Data Vault模型
Dan Linstedt提出,ER模型衍生,为实现数据整合,不能直接用于分析决策。
组成部分:hub(企业核心业务实体),Link(hub间的关系,与ER模型最大区别是将关系做为一个独立单元抽象,可提升扩展性),Satellite(hub的描述内容)
(4)Anchor模型
Lars Ronnback提出,高度可扩展模型,扩展只添加不修改。6NF,基本变成k-v结构化模型。增加非常多的join操作,主要适用于基于一小部分字段进行分析的查询,类似列式存储。
组成部分:Anchors(类似hub,业务实体,只有主键),Attributes(类似Satellite,一个表只有一个Anchors属性,k-v结构),Knots(可能会被Anchors使用的多个公共属性)
在各组成部分基础上,又细分历史和非历史。历史会以时间戳加多条记录方式,记录数据变迁历史。
4、阿里数据仓库模型建设发展阶段
(1)ODS+DSS
Oracle数据库,ODS贴源和DSS基于贴源的数据统计,无模型方法体系。
(2)ODL+BDL+IDL+ADL
MPP的Greenplum,希望使用模型改变烟囱式开发,提升数据一致性,减少冗余。ER模型+维度模型方式。
ODL(操作数据层)与源系统一致,
BDL(基础数据层)引入ER模型,进行数据整合,构建一致的基础数据模型。
IDL(接口数据层)引入维度模型,构建集市层。
ADL(应用数据层)完成应用个性化和基于展现需求的数据组装
经验总结:ER模型对于不成熟的、快速变化的业务不适用,风险特别大。
(3)维度建模为核心的公共层数据架构体系(One Data)
hadoop为代表的分布式存储计算平台,着力解决数据存储和数据共享问题。