本文将通过如下几点阐述数仓建模方法论
一 什么是数据模型?
二 数仓建模历程.
三 为什么要数据仓库模型?
四 数据模型的建设能够给我们解决哪些问题?
五 如何建设数据仓库模型
1. 什么是数据模型
数据模型是抽象描述现实世界的一种工具和方法,是通过抽象的实体与实体之间联系的形式来表示现实世界中事务的相互关系的一种映射.
在这里,数据模型表现的抽象的是实体和实体之间的关系,通过对实体和实体之间关系的定义和描述,来表达实际的业务中具体的业务关系.
2. 整个数仓建模一般需要经历4个过程
1) 业务建模: 生成业务模型,主要解决业务层面的分解和程序化,主要包含以下几个部分:
a: 划分整个单位的业务,一般按照业务部分的划分,进行各个部门之间业务工作的界定,理清各业务部门之间的关系.
b: 深入了解各个业务部门的具体业务流程并将其程序化.
c: 提出修改和改进业务部门工作流程的方法并程序化.
d: 数据建模的范围界定,整个数据仓库项目的目标和阶段划分.
2) 领域建模: 生成领域模型, 主要是对业务模型进行抽象处理,生成领域概念模型,主要包含以下几个内容:
a: 抽取关键业务概念,并将之抽象化
b: 将业务概念分组,按照业务主线聚合类似的分组概念
c: 细化分组概念,理清分组概念内的业务流程并抽象化
d: 理清分组概念之间的关联关系,形成完整的领域概念模型
这里补充下,为什么要划分主题域呢?
划分主题域,是根据业务的应用和需要来划分的,是用来达到数据和业务紧耦合的目的,即数据和业务是密不可分的.
3) 逻辑建模: 生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化
对概念模型中的主体进行细化,定义实体与实体之间的关系,和实体的属性,即定义具体表的作用,表与表的约束,表的字段,形成E-R图, 主要包含以下几个部分:
a: 业务概念实体化,并考虑其具体的属性
b: 事件实体化,并考虑属性内容
c: 说明实体化,并考虑其属性内容
4) 物理建模: 生成物理模型,主要解决逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题
依照逻辑模型,在数据仓库中进行建表,设置主键等, 数据仓库为了满足高性能的需求,可以适当增加冗余,隐藏表之间的约束等反三范式操作.
这一阶段,主要针对的是数据仓库,硬件,性能,主要包含以下几个部分:
a: 针对特定物理化平台,做出相应的技术调整
b: 针对模型的性能考虑,对特定平台作出相应的调整
c: 针对管理的需要,结合特定的平台,作出相应的调整
d: 生成最后的执行脚本,并完善之.
这里补充下, 什么是三范式:
第一范式: 数据库表中的所有字段值都是不可分解的原子值
第二范式: 满足第一范式的基础上,数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖,即所有非关键字段都是完全依赖于任一候选关键字段
第三范式: 数据库表中如果不存在非关键字段对任一候选字段都是直接依赖,而非传递依赖,或者说是间接依赖
3. 为什么需要数据仓库模型?
数据仓库的建设和数据集市的建设的重要区别在于数据模型的支持,因此,数据模型的建设,对于我们数据仓库的建设,有着决定性的意义
数据仓库的发展大致经历了这样的三个过程:
1) 简单报表阶段: 这个阶段,系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据,这个阶段的大部分表现形式为数据库和前端报表工具.
2) 数据集市阶段: 这个阶段主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据
3) 数据仓库阶段: 这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的完全一致的业务报表数据,能够通过数据仓库生成对业务具有指导性的数据,同时,为领导决策提供全面的数据支持
4. 数据模型的建设能够给我们解决哪些问题呢?
1) 进行全面的业务梳理,改进业务系统
在业务模型建设的阶段,能够帮助我们的企业或者是管理机关对本单位的业务进行全面的梳理,通过业务建模的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们的业务部门的生产.
2) 建立全方位的数据视角,消灭信息孤岛和数据差异
通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是自己关注的数据,而是通过模型的建设,勾勒出部门之间内在的联系,帮助消灭各个部门之间的信息孤岛的问题,更为重要的是,通过数据模型的建设,能够保证整个企业的数据的一致性,各个部门之间数据的差异将会得到有效解决.
3) 解决业务的变动和数据仓库的灵活性
通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现,当上层业务发生变化时,通过数据模型,底层技术的实现可以非常轻松的完成业务的变动,从而达到整个数据仓库系统的灵活性.
4) 帮助数据仓库系统本身的建设
通过数据仓库的模型建设,开发人员和业务人员能够很容易的达成系统建设的范围界定,以及长期目标的规划,从而能够使整个项目组明确当前的任务,加快整个系统建设的速度.
5. 如何建设数据仓库模型?
数据仓库建模方法
1) 范式建模法
范式建模法其实是我们在构建数据模型常用的一个方法,主要解决关系型数据库的数据存储
使用的是一种技术层面上的方法,目前我们在关系型数据库中的建模方法,大部分采用三范式建模法
优点: 能够比较方便的实现数据库建模
缺点: 跟实际应用结合不太紧密,不够灵活,性能差
2) 维度建模法
其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市,这种方法是最为被人广泛知晓的就是星型模型
星型模型: 由一个事实表和一组维度表组成,维度表直接跟事实表连接,图形像星星, 星型模型也被称为维度建模
雪花模型: 一些维度表不是直接与事实表连接,而是通过维度表中转,所以图形看起来像雪花
优点: 维度建模非常直观,紧紧围绕着业务模型,可以直观的反映出业务模型中的业务问题,不需要经过特别的抽象处理,即可以完成维度建模
缺点: 由于在构建模式之前需要进行大量的数据预处理,因此会导致大量的数据处理工作,而且当业务发生变化,需要重新进行维度的定义时,往往需要重新进行维度数据的预处理,而在这些预处理过程中,往往也导致大量的数据冗余.
3) 实体建模法
实体建模发能够轻松的实现业务模型的划分,因此在业务建模阶段和领域概念建模阶段,实体建模法有着广泛的应用
优点: 便于实现业务模型的划分
缺点: 是一种抽象客观世界的思维方法,在具体建模时有局限性