数据仓库Data Warehouse
数据处理方式
OLTP
- 全称是On-line Transaction Processing
联机事务处理 - 专注于事务,crud操作
OLAP
-
称是 On-line Analytical Processing
中文名称是联机分析处理 -
专注查询和分析
-
OLAP基本操作
-
上卷:roll-up drill-up
- 通过一个维的概念分层向上攀升或者通过维归约在数据立方体上进行聚集。
- 比如城市统计数据维度到省级统计数据维度。
-
下钻:drill-down
- 下钻是上卷的逆操作,由不太详细的数据到更详细的数据。
- 下钻可以通过沿维的概念分层向下或引入附加的维来实现。
-
切片:slice
- 对某一维度进行切分,只关注特定维度
-
切块 dice
- 对几个维度进行切分只关注特定维度
-
数据建模
关系建模
-
符合3NF
-
它更多是面向数据的整合和一致性治理
-
优点
- 规范性较好,冗余小,数据集成和数据一致性方面得到重视
-
缺点
- 需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾
维度建模
-
以分析决策的需求出发构建模型,构建的数据模型为分析需求服务
-
优点
- 技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能
-
缺点
- 维度表的冗余会较多,视野狭窄
维度表分类
维度表
-
一般是对事实的描述信息。每一张维度表对应现实世界中的一个对象或者概念
-
特征
- 维度表的范围很宽(具有多个属性、列比较多)
- 跟事实表相比,行数较少,(通常小于10万条)
- 内容相对固定
-
维度建模四部曲
- 选择业务处理过程 > 定义粒度 > 选择维度 > 确定事实
-
设计原则
- 维度属性尽量丰富,为数据使用打下基础
- 给出详实的、富有意义的文字描述
- 区分数值型属性和事实
- 沉淀出通用的维度属性,为建立一致性维度做好铺垫
事实表
-
表中的每行数据代表一个业务事件
-
事实表特征
- 非常的大
- 内容相对的窄
- 经常发生变化,每天新增很多
-
事实表分类
- 事务型事实表
- 周期型快照事实表
- 累积型快照事实表
数据组织类型
星型模型
- 由一个事实表(Fact Table)和一组维表(Dimension Table)组成
- 每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键
- 维数据集的每一个维度都直接与事实表相连接,所以数据有一定的冗余
雪花模型
- 当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型
- 雪花模型是对星型模型的扩展
- 通过最大限度地减少数据存储量以及联合较小的维表来改善查询性能。雪花型结构去除了数据冗余
星座模型
- 需要多个事实表共享维度表,因而可以视为星形模型的集合,故亦被称为星系模型
- 是很多数据仓库的常态,因为很多数据仓库都是多个事实表的
- 所以星座模型只反映是否有多个事实表,他们之间共享一些维度表
数仓特征
面向主题
- 数据仓库中的数据是按照一定的主题域进行组织
集成性
- 数据仓库中的数据是在对原有分散的数据库数据抽取、清理的基础上经过系统加工、汇总和整理得到的
- 必须消除源数据中的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息
不可更新
- 数据仓库的数据反应的是一段相当长的时间内的历史数据的内容
- 一旦某个数据进入数据仓库以后,一般情况下将被长期保留
- 也就是数据仓库中一般有大量的查询操作,但修改和删除操作很少,通常只需要定期的加载、刷新
时变性
-
数据仓库中的数据可能和特定的某个日期、星期、月份、季度和年份有关
-
据仓库的数据随时间的变化表现在以下几个方面
- 1.数据仓库的数据时效一般要远远长于操作型数据库数据的时效。
- 2.操作性数据库存库的是当前数据,而数据仓库中存储的是历史数据。
- 3.数据仓库中的数据是按照时间顺序进行追加的,它们都带有时间属性。
数据仓库分层
数仓分层原因
-
用空间换时间
- 通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量的冗余数据
-
增强扩展性
- 不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大
-
分层管理
- 通过数据分层管理可以简化数据清洗的过程
- 把原来的一步工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作
数仓分层好处
-
清晰数据结构
-
每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
- 方便数据血缘追踪
-
-
方便数据血缘追踪
-
减少重复开发
- 规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
-
把复杂问题简单化
- 将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解
-
屏蔽原始数据的异常
- 屏蔽业务的影响,不必改一次业务就需要重新接入数据
数仓分层明细
-
根据自己的业务需求可以分成不同的层次,最基础的分层思想分为三个层
-
ODS原始数据层
- Operate data store(操作数据-存储)
- 最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的ETL之后,装入ODS层
-
DW数据仓库层
-
Data warehouse(数据仓库)
-
该层从ODS层中获得的数据按照主题建立各种数据模型
-
四个概念
-
维度
- 维度表是事实表不可或缺的组成部分。维度表包含业务过程度量事件有关的文本环境。他用来描述与"谁、什么、哪里、何时、如何、为什么"有关的事件。
-
事实
- 事实涉及来自业务过程的度量,基本都以数量值表示。一个事实表行与粒度存在一对一关系
-
指标
- 指标是业务流程节点上的一个数值。比如销量,价格,成本等等
-
粒度
- 粒度就是业务流程中对度量的单位,比如商品是按件记录度量,还是按批记录度量
-
-
-
ADS数据服务层
- Application Data Service(应用数据服务)
- 该层主要是提供数据产品和数据分析使用的数据
- 一般会存放在ES、MySQL等系统*线上系统使用,也可能会存在Hive或者Druid*数据分析和数据挖掘使用
阿里数仓五层
ODS
-
功能
- ODS层是数据仓库准备区,为DWD层提供基础原始数据,可减少对业务系统的影响
-
建模方式及原则
- 从业务系统增量抽取、保留时间由业务需求决定、可分表进行周期存储、数据不做清洗转换与业务系统数据模型保持一致、按主题逻辑划分a
DW
-
DWD
-
功能
- 为DW层提供来源明细数据,提供业务系统细节数据的长期沉淀,为未来分析类需求的扩展提供历史数据支撑
-
建模方式及原则
- 数据模型与ODS层一致,不做清洗转换处理、为支持数据重跑可额外增加数据业务日期字段、可按年月日进行分表、用增量ODS层数据和前一天DWD相关表进行merge处理
-
-
DWS
-
功能
- 为DW、ST层提供细粒度数据,细化成DWB和DWS;
- DWB是根据DWD明细数据进行转换
- DWS是根据DWB层数据按各个维度ID进行高粒度汇总聚合,如按交易来源,交易类型进行汇合
-
建模方式及原则
- 聚合、汇总增加派生事实;
- 关联其它主题的事实表,DW层可能会跨主题域;
- DWB保持低粒度汇总加工数据,DWS保持高粒度汇总数据;
- 数据模型可能采用反范式设计,合并信息等。
-
-
DWT
-
功能
- 可以是一些宽表,是根据DW层数据按照各种维度或多种维度组合把需要查询的一些事实字段进行汇总统计并作为单独的列进行存储;
- 满足一些特定查询、数据挖掘应用
- 应用集市数据存储
-
建模方式及原则
- 尽量减少数据访问时计算(优化检索)
- 维度建模,星型模型;
- 分表存储
-
ADS
-
功能
- 层面向用户应用和分析需求,包括前端报表、分析图表、KPI、仪表盘、OLAP、专题等分析,面向最终结果用户
-
建模方式及原则
- 保持数据量小
- 维度建模,星形模型
- 各位维度代理键+度量
- 增加数据业务日期字段,支持数据重跑;
- 不分表存储
数据仓库规范设计
表命名规范
- 表名需要见名知意,通过表名就可以知道它是哪个业务域,干嘛用的,什么粒度的数据
开发规范
流程规范
常见概念描述
数据仓库
- 数据仓库是一个功能概念,是将企业的各业务系统产生的基础数据,通过维度建模的方式,将业务数据划分为多个主题(集市)统一存储,统一管理
数据集市
-
数据集市是一个结构概念,它是企业级数据仓库的一个子集,主要面向部门级业务,并且只面向某个特定的主题
-
分类
- 独立数据集市,这类数据集市有自己的源数据库和ETL架构;
- 非独立数据集市,这种数据集市没有自己的源系统,它的数据来自数据仓库。
数据孤岛
- 业务系统之间各自为政、相互独立造成的数据孤岛,体现在业务不集成、流程不互通、数据不共享
数据湖
- 数据湖是一种数据存储理念,存储企业各种各样的原始数据的大型仓库,包括结构化、非结构、二进制图像、音频、视频等等
- 数据流从源系统流向这个湖。用户可以在数据湖里校验,取样或完全的使用数据
- 以大数据技术为基础有多样化数据结构海量大数据存储需求,也可作为数据仓库或者数据集市的数据源
数据中台
-
概念
- 数据中台是指通过企业内外部多源异构的数据采集、治理、建模、分析,应用,使数据对内优化管理提高业务,对外可以数据合作价值释放,成为企业数据资产管理中枢。数据中台建立后,会形成数据API,为企业和客户提供高效各种数据服务。
-
特点
- 利用大数据技术,对海量数据进行统一采集、计算、存储,并使用统一的数据规范进行管理
- 据中台不是一套软件,也不是一个信息系统,而是一系列数据组件的集合
-
数据中台是一个逻辑概念,为业务提供服务的主要方式是数据API,它包括了数据仓库,大数据、数据治理领域的内容
宽表窄表
宽表
- 从字面意义上讲就是字段比较多的数据库表。
- 通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表
- 由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范
- 数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷
- 这种宽表的设计广泛应用于数据挖掘模型训练前的数据准备
窄表
- 严格按照数据库设计三范式
- 方便扩展,能适应各种复杂的数据结构(树形、继承等),无论有多少配置,都不用修改表结构
ETL
概念
-
ETL是将业务系统的数据经过抽取(Extract)、清洗转换(Transform)之后加载(Load)到数据仓库的过程
-
的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据
-
五大模块
- 数据抽取、数据清洗、库内转换、规则检查、数据加载。
- 各模块可灵活进行组合,形成ETL处理流程
模块介绍
- 数据抽取
- 数据清洗
- 数据转换