@[toc]
数据仓库
概念
数据仓库,英文名称为Data Warehouse
,可简写为DW
或DWH
。用于数据存储,数据分析和数据决策的系统。 【重点是分析数据,为了企业提供决策支持 Decision Support
】
意义
为什么会出现它,过去的关系数据库不能用于数据分析吗?
像一些OLTP
(On-Line Transaction Processing
)联机事务处理系统 :MySQL
、Oracle
……是否可以进行查询分析吗?
- 可以但是没必要,因为读的压力比写的压力大 通常事务处理的优先级⽐分析系统⾼,所以如果分析系统和事务 处理运⾏在同⼀硬件之上,分析系统往往性能很差。
OLTP
存储的时间短,只有月、周- 数据格式,字段不统一;例如不同的
RDBMS
关系数据库管理系统(Relational Database Management System:RDBMS
) - 某些业务数据由于安全或其他因素不能直接访问。
所以,衍生出OLAP
联机分析处理 Online Analytical Processing
特点
数据仓库描述是⼀个⾯向主题的、集成的、随时间变化的、⾮易失的数据集合,⽤于⽀持管理者的决策过程。
- 面向主题:数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。
- 集成的:企业内不同业务部门数据的完整集成。 对于企业内所有数据的集成要注意一致性(假设财务系统中对于性别使用 F/M,而 OA 系统对性别使用 A/B,这就是数据不一致,如果想搭建企业级的数据仓库,需要数据具有一 致性)。
- 随时间变化的:数仓里会完整的记录某个对象在一段时期内的变化情况。
- 非易失:⼀旦进⼊到数据仓库中,数据就不应该再有改变。
分层
分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因:
- 清晰数据结构:每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解。
- 数据血缘追踪:简单来说,我们最终给业务呈现的是-个能直接使用业务表,但是它的来源有很多,如果有- -张来源表出问题了 ,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
- 减少重复开发:规范数据分层, 开发一些通用的中间层数据 ,能够减少极大的重复计算。
- 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一-层只处理单-的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
- 屏蔽原始数据的异常:屏蔽业务的影响,不必改- -次业务就需要重新接入数据
ODS
(Operation Data Store): 原始数据层,未经任何加工处理的原始业务层数据, 操作型数据层 ,也称之为源数据层、数据引入层、数据暂存层、临时缓存层。常见的ODS数据有业务日志数据(Log)和业务DB数据(DB)。主要完成基础数据引入到数仓的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化。DWD
(Data Warehouse Detail): 数据明细层,对数据进行规范化,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。DWS
(Data Warehouse Service):数据服务层。对数据进行轻度汇总 以分析的主题对象作为建模驱动,基于.上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型.ADS
(Application Data Store): 数据应用层,为各种数据提供报表服务。数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据。包括前端报表、分析图表、KPI、 仪表盘、OLAP
专题、 数据挖掘等分析。DM
(data Mart): 数据集市,狭义ADS
层。
该方案由以下四层构成:
ODS
层:Binlog
和流量日志以及各业务实时队列。- 数据明细层:业务领域整合提取事实数据,离线全量和实时变化数据构建实时维度数据。
- 数据汇总层:使用宽表模型对明细数据补充维度数据,对共性指标进行汇总。
- App 层:为了具体需求而构建的应用层,通过
RPC
框架对外提供服务。RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务
ETL、ELT
- 数据仓库从各数据源获取数据及 在数据仓库内的数据转换和流动都可以认为是ETL (抽取
Extra
,转化Transfer
, 装载Load
)的过程。 - 但是在实际操作中将数据加载到仓库却产生 了两种不同做法: ETL和ELT。
OLTP 和 OLAP
OLTP
是Online Transaction Processing的简称;联机事务处理
也就是我们常见的关心型数据库,MySQL
OLAP
是OnLine Analytical Processing的简称;联机分析处理
也就是我们的数据仓库,数据仓库也分为离线和实时数据仓库
区别 | OLTP | OLAP |
---|---|---|
数据源 | 当前的运行的业务 | 多个数据来源 |
目的 | 面向应用,面向业务 捕获数据 |
面向主题,面向分析 分析数据 |
焦点 | 当下 | 历史过去。当时目前的实时仓库也支持当下分析 |
任务 | 读和写 | 读多写少。 |
响应时间 | 毫秒 | 小时 分钟 秒 天等 |
数据量 | 小 MB,GB | 大 TB,PB;这里的大是处理的数据规模大; 不是说大型数据库 |