大数据仓库理论(一)概念+架构+建模 - MissRong
大数据仓库理论(一)概念+架构+建模
一、关于数仓的一些概念
1、数仓定义
Bill Inmon — 数据仓库之父,数据仓库概念的创始人。
数据仓库是一个支持管理决策的数据集合,是面向主题的、集成的、稳定的、反应历史变化的。
其中,主题是一个抽象的概念,每一个主题对应一个宏观的分析领域。
数据仓库是所有操作环境和外部数据源的快照集合。
2、数仓发展史
1)数据库阶段
OLTP(联机事务处理)— 是传统的关系型数据库的主要应用。
主要是基本的、日常的事务处理,记录即时的增、删、改、查。
2)数仓阶段
OLAP(联机分析处理)–支持复杂的分析操作,侧重决策支持 并且提供直观的分析结果。
3)数据平台
分布式的实时或者离线的计算框架。建立计算集群,并在上面运行各种计算任务,
具有数据互联互通、支持多数据集实时同步、支持数据资源管理、实现多源异构数据的整合管控。
(平台更像是一个解决方案)
4)数据中台
从业务架构到模型设计,从数据研发到数据服务,做到数据可管理、可追溯、可规避重复建设。
强调的是数据业务化的能力。(更像是有一种体系)
3、ODS 与 DW的简介和比较
1)ODS
ODS(Operational Data Store)操作型数据仓库,早期的数据仓库模型。具有的特性:面向主题性、动态性、集成性、即时性、明细性等。
2)DW
DW (Data Warehouse) 数据仓库, 是为企业所有级别的决策制定过程 提供所有类型数据支持的战略集合。
3 )ODS和DW区别
(1) 数据的当前性
ODS 包括的是当前或接当前的数据,ODS反映的是当前页务条件的状态,ODS的设计与用户或业务的需要是有关联的;
DW则更多的反映业务条件的历史数据。
(2) 数据的更新或加载
ODS中的数据是可以进行修改的,而DW中的数据一般是不可进行更新的。
ODS的更新是根据业务的需要进行操作的,而没有必要立即更新,因此它需要一种实时或近实时的更新机制。
DW中的数据是按照正常的或预先指定的时间进行数据的收集和加载的。
(3) 数据的汇总性
ODS中的汇总数据生命周期比较短,所以可称作为动态汇总数据,如果细节数据经过了修改,则汇总数据同样需要修改。而DW中的数据可称为静态的汇总数据。
ODS主要是包括一些细节数据,但是由于性能的需要,可能还包括一些汇总数据,如果包括汇总数据,可能很难保证数据的当前性和准确性。
(4) 数据量
ODS只包括当前的数据,DW存储的是每一个主题的历史快照。
(5) 数据建模
ODS是站在记录层面访问的角度而设计的,DW或DM(数据集市Data Mart)则是站在结果集层面访问的角度而设计的。ODS支持快速的数据更新,DW作为一个整体是面向查询的。
(6) 用户
ODS主要用于策略型的用户,比如保险公司每天与客户交流的客服;
DW主要用于战略型的用户,比如公司的高层管理人员。
(7) 用途
ODS用于每一天的操作型决策,是一种短期的;
DW可以获取一种长期的合作广泛的决策。
ODS是策略型的,DW是战略型的。
(8) 查询的事务
ODS中的事务操作比较多,可能一天中会不断的执行相同的事务;
DW中事务的到达是可以预测的。
4、数据集市 Data Mart
DM-数据集市是完整的数据仓库的一个逻辑子集,可称为数据仓库中独立出来的一部分数据,也可以称为部门数据或主题数据。
数据仓库是由所有的数据集市有机组成而成的。
源系统–>ODS–>DW–>DM
5、ETL
ETL(Extract-Transform-Load)抽取、转换、加载。
抽取:将数据从各种原始的业务系统中读取出来。
转换:按照预先设计好的规则将抽取的数据进行转换、清洗以及处理一些冗余、歧义的数据,使本来异构的数据格式能够统一起来。
装载:将转换完的数据导入到数据仓库中。
6、OLAP-联机分析处理
1)ROLAP
Relational OLAP
利用关系数据库来存储和管理基本数据和聚合数据,并利用一些中间件来支持缺失数据的处理;
具有良好的可扩展性。
2)MOLAP
Multidimensional OLAP
利用多维数据库来存储和管理基本数据和聚合数据,其中需要对稀疏矩阵的处理技术;
对预综合的数据进行快速索引。
3)HOLAP
Hybrid OLAP
利用关系数据库来存储和管理基本数据,利用多维数据库来存储和管理聚合数据。
二、数仓架构
1、数仓架构图
2、数仓分层
1)ODS-操作数据层
2)DWD-明细数据层、DWS-汇总数据层
数据仓库层(DW),是数据仓库的主体。在这里,从 ODS 层中获得的数据按照主题建立各种数据模型。
数据仓库明细层DWD和数据仓库汇总层DWS是数据平台的主要内容。它们是通过ODS层经过ETL- 清洗、转换、加载 生成的。
基于维度建模理论来构建,通过一致性维度和数据总线来保证各个子主题的维度一致性。(就算数据表被删了也可以重新跑 从ODS恢复过来)
3)ADS-应用数据层
ADS(集市数据层,也称应用层):主要是各个业务方或者部门基于DWD和DWS建立的数据集市(DM),数据集市是相对于数据仓库来说的。
一般应用层的数据是来源于DW层,原则上是不能访问ODS层的。
对比于DW层,应用层只包含部门或业务方自己关心的明细层和汇总层的数据。(一般是将各个要用的表join起来形成宽表,供下游业务分析人员 select * )
三、数仓建模
1、ER模型
Bill Inmon — 数据仓库之父,数据仓库概念的创始人
1)第一范式
数据库表中不能出现重复记录,每个字段是原子性的不能再分。
EG:
2)第二范式
建立在第一范式基础上,要求非主键字段完全依赖主键字段,不能产生部份依赖。尽量不使用联合主键。
EG:
3)第三范式
建立在第二范式基础上,非主键字段不能传递依赖于主键字段。(不要产生传递依赖)
EG:
2、维度建模
Ralph Kimball — 数据仓库方面的知名学者
维度建模重点解决用户如何更快速完成分析需求,同时还较好的大规模复杂查询的相应性能.
维度模型是由一个规范化的事实表和反规范化的一些维度表组成的.
1)维度表
每一张维度表对应现实世界中的一个对象或者概念. EG: 客户, 产品, 日期, 地区, 商场.
(1) 维度表的特征:
- 包含众多描述性的列 (具有多个属性)
- 行数相对较少 (通常 < 10万条)
- 内容相对固定 (几乎就是一类查找表 或 编码表)
(2) 缓慢变化维 (SCD)
缓慢变化维指的是: 维度表里面的数据并非是始终不变的, 总会随着时间发生变化.
三种主要的设计方式:
- 与业务数据保持一致,为直接的update
- 保留历史变化,增加一条新的维度数据
- 增加一个字段来存储旧的维度数据
(3) 退化维度
退化维度通常被保留作为 操作型事务的标识符 .
比如 订单表中的订单明细ID,他没有任何的意义,只是作为订单明细表的标识符而已。
虽然没有任何分析的作用,但是还是要有的。
作用就是可以方便地查询订单明细ID。
(4)粒度
2)事实表
每一个事实表通常包含了处理所关心的度量值
(1) 每一个事实表的行包括:
- 具有可加性的数值型的度量值
- 与维表相连的外键 (通常有两个或两个以上的外键 , 外键之间表示维表之间多对多的关系)
(2) 事实表的特征:
- 非常的大 (包含巨万 , 几十万, 甚至几百几千万条的数据)
- 列数较少
- 经常发生变化
(3) 事务事实表
事务事实表记录事务层面的事实,保存的是最原子的数据, 也称”原子事实表”.
里面的数据会在事务事件发生后产生,数据粒度通常是每个事务的一条记录.
事务一旦被提交,事实表数据被插入,数据就不会再进行更改,其更新方式为 增量更新.
(4) 累计快照事实表
累计快照事实表代表的是完全覆盖一个事务或产品的生命周期的时间跨度,
它通常具有多个日期字段, 用来记录整个生命周期中的关键时间点.
另外, 它还会有一个用于指示最后更新日期的附加日期字段.
EG: 拉链表
(5) 周期性快照事实表
周期性快照事实表以具有规律性的 可预见的时间间隔来记录事实.
3)粒度
数据粒度指 数仓的数据中 保存数据细化程度或综合程度的级别.
4)建模类型
(1)星型模型
维度表直接跟事实表连接, 事实表被维度表包围, 且维度表没有被新的表连接.
(2)雪花模型
每一个维度都可以向外连接多个详细类别表.
(3)星座模型
事实星座模型需要多个事实表共享维度表,也称为星系模型.
维度表共用最大的作用就是可以保证数据的一致性。
5) 维度建模的设计过程
领域驱动建模设计,就是先要理解整个业务流程,然后根据业务的详细程度声明粒度。
3、总结 + 推荐工具和书籍
1) 总结
数据湖需要先有一个入湖的标准,否则会出现数据沼泽。使用的时候也是需要设置一个标准。
实现的就是存储和计算分离。比如CDH7或是更高版本的话,基本上就是类似的原理。
数据湖的容量会比数据仓库更大, 数据湖更注重数据的存储,数据的标准的设置,数据湖目前没有建模的标准,
但是数仓是要遵循一个严格的建模标准的。
2) 推荐在线建模工具
https://erdplus.com/standalone
3) 推荐的数仓书籍
阿里巴巴的大数据之路 (了解数仓的整条链路)
数据仓库、数据仓库工具箱(维度建模方面的)