编辑推荐: |
本文主要介绍华为鸿蒙OS有什么创新,是否自主研发完全开源,本文带你深入鸿蒙的世界,希望本文对您的学习有所帮助。
本文来自腾讯技术工程,由火龙果软件Alice编辑、推荐。 |
|
一、关于数仓的一些概念
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-操作数据层
ODS 全称是 Operational Data Store,是最接近数据源中数据的一层。 就是原始数据层,数据源头表通常会原封不动的存储一份。 实现对数据源中数据的 抽取、清洗、传输。
2)DWD-明细数据层、 DWS-汇总数据层
数据仓库层(DW),是数据仓库的主体。在这里,从 ODS 层中获得的数据按照主题 建立各种数据模型 。
数据仓库 明细层 DWD 和数据仓库汇 总层DWS 是数据平台的主要内容。 它们是通过ODS层经过ETL- 清洗、转换、加载 生成的。
基于维度建模理论来构建,通过一致性维度和数据总线来 保证各个子主题的维度一致性 。(就算数据表被删了也可以重新跑 从ODS恢复过来)
3)ADS-应用数据层
数据产品层(APP),这一层是提供为 数据产品 使用的 结果数据 。
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
- 保留历史变化,增加一条新的维度数据
- 增加一个字段来存储旧的维度数据
退化维度通常被保留作为 操作型事务的标识符 .
实际上可以将订单号作为一个属性加入到事实表中。
比如 订单表中的订单明细ID,他没有任何的意义,只是作为订单明细表的标识符而已。
虽然没有任何分析的作用,但是还是要有的。
作用就是可以方便地查询订单明细ID。
(4)粒度
数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 数据粒度影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。
2)事实表
每一个事实表通常包含了处理所关心的 度量值
(1) 每一个事实表的行包括 :
- 具有可加性的数值型的 度量值
- 与维表相连的外键 (通常有两个或两个以上的外键 , 外键之间表示维表之间多对多的关系)
(2) 事实表的特征:
- 非常的大 (包含巨万 , 几十万, 甚至几百几千万条的数据)
- 列数较少
- 经常发生变化
(3) 事务事实表
事务事实表 记录事务层面的事实,保存的是最原子的数据, 也称"原子事实表".
里面的数据会在事务事件发生后产生,数据粒度通常是每个事务的一条记录.
事务一旦被提交,事实表数据被插入,数据就不会再进行更改, 其更新方式为 增量更新.
(4) 累计快照事实表
累计快照事实表代表的是 完全覆盖一个事务或产品的生命周期的时间跨度 ,
它通常具有多个日期字段, 用来记录整个生命周期中的关键时间点.
另外, 它还会有 一个用于指示最后更新日期的附加日期字段 .
EG: 拉链表
(5) 周期性快照事实表
周期性快照事实表 以具有规律性的 可预见的时间间隔来记录事实.
3)粒度
数据粒度指 数仓的数据中 保存数据细化程度或综合程度的级别 .
数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 数据粒度影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。
4)建模类型
(1)星型模型
维度表直接跟事实表连接, 事实表被维度表包围, 且维度表没有被新的表连接.
(2)雪花模型
每一个维度都可以向外连接多个详细类别表.
(3)星座模型
事实星座模型需要多个事实表共享维度表 ,也称为星系模型.
维度表共用最大的作用就是可以保证数据的一致性。
5) 维度建模的设计过程
领域驱动建模设计,就是先要理解整个业务流程,然后根据业务的详细程度声明粒度。
3、总结
1) 总结
数据湖需要先有一个入湖的标准,否则会出现数据沼泽。使用的时候也是需要设置一个标准。
实现的就是存储和计算分离。比如CDH7或是更高版本的话,基本上就是类似的原理。
数据湖的容量会比数据仓库更大, 数据湖更注重数据的存储,数据的标准的设置,数据湖目前没有建模的标准,
但是数仓是要遵循一个严格的建模标准的。
|