数据仓库理论
- 基础理论
- 数据仓库
- 主要特征
- 面相主题
- 集成性
- 非易失性、非易变性
- 时变性
- OLTP、OLAP
- OLTP
- OLAP
- 对比
- 数据库与数据仓库的区别
- 数据仓库、数据集市
- 数据仓库分层架构
- 分层思想和标准
- 阿里巴巴数仓三层架构
- ODS层
- DW层
- DA层(ADS层)
- 分层的好处
- 好处
- ETL和ELT的区别
- ETL
- ELT
基础理论
数据仓库
数据仓库(Data Warehouse,简称数仓
、DW
),是一种用于存储。分析、报告的数据系统,其目的是构建面向分析
的集成化数据环境,分析结果为企业提供决策支持
数据集仓库本身并不生产任何数据
,其数据来源于不同外部系统。同时数据仓库自身也不需要消费任何的数据
,其结果开放给各个外部应用使用,这也是为什么叫做“仓库”而不叫做工厂的原因
数据仓库为何而来?
是为了分析数据而来,分析结果给企业决策提供支持
,企业中,信息总是用作两个目的:
- 操作型记录的保存
- 分析型决策的指定
主要特征
面向主题:主题是一个抽象的概念,是较高层次上数据综合、归并并进行分析利用的抽象
集成性:主题相关的数据通常会分布在多个操作性系统中,彼此分散、独立、异构,需要集成到数仓主题下
非易失性:也叫做非易变性,数据仓库是分析数据的平台,而不是创造数据的平台
时变性:数据仓库的数据需要随着时间更新,以适应决策的需要
面相主题
数据仓中,最大的特点是面向应用进行数据的组织
,各个业务系统可能是相互分离的,而数据仓库则是面向主题的
,主题是一个抽象的概念,是较高层次上企业信息系统中数据综合、归类并
进行分析利用的抽象,在逻辑意义上,他是对应企业中某一宏观分析领域所涉及的分析对象.操作型处理(传统数据)对数据的划分并不适用于决策分析,而基于主题组织的数据则不同,他们被划分为各自独立的领域,每个领域有各自的逻辑内涵单互不交叉,在抽象层次上对数据进行完整、一致和准确的描述
。
集成性
确定主题之后,就需要获取和主题相关的数据,当下企业中主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构
。因此在数据进入数据仓库之前,必然要经过统一与综合,对数据进行抽取、清理、转换和汇总
,这已不是数据仓库建设中最关键、最复杂的一部,所要完成的工作有:
- 要统一数据中所有矛盾之处,如字段的同名异义、异名同义、单位不同意、字长不一致等等问题
- 进行数据综合和计算,数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但是许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。
非易失性、非易变性
数据仓库是分析数据的平台,而不是创造数据的平台
,我们是通过束苍区分析数据中的规律,而不是去创造、修改其中的规律,因此数据进入数据仓库之后,他便稳定且不会改变。
操作型数据库主要服务于日常的业务操作,是的数据库需要不断的对数据实时更新,以便迅速获得当前最新数据,不至于影响正常的业务运作,在数据仓库中主要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据上也需要每隔一段时间把一批较新的数据导入到数据仓库
数据仓库的数据反映的是相当一段长时间内历史数据的内容
,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导入数据
数据仓库的用户对数据的操作大多数是数据查询或者比较复杂的挖掘,一旦数据进入数据仓库之后,一般情况下被长时间保留,数据仓库中一般有大量的查询操作,但是修改和删除操作很少
时变性
数据仓库包含各种粒度的历史数据,数据可能是某个特定日期、星期、月份、季度或者年份有关
虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是一成不变的,分析的结果只能反映过去的情况,当业务发生了变化,挖掘出的模式失去了时效性,因此数据仓库的数据需要随着时间更新,以适应决策的需要
,从这个角度讲,数据仓库建设是一个项目,更是一个过程
数据仓库随着时间变化表现在这几个方面:
- 数据仓库的数据时限一般要远远长于操作型数据的时限
- 操作性系统存储的是当前数据,二数据仓库中的数据是历史数据
- 数据仓库中的数据是按照时间顺序追加的,他们都带有时间属性
OLTP、OLAP
联机事务分析OLTP(On-Line Transaction Processing)。
联机分析处理OLAP(On-Line Analytical Processing)。
OLTP
操作型处理,叫联机事务分析OLTP(On-Line Transaction Processing),主要目标是做数据处理的骂他是针对具体业务在数据库练级的日常操作,通常对少数记录进行查询、修改
用户比较关心操作的响应时间、数据的安全性、完整性和并发支持用户数的问题
传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作处理型。
OLAP
分析型处理,叫联机分析处理OLAP(On-Line Analytical Processing)主要目标是做数据分析,一般针对某个主题的历史数据进行复杂的多维分析,支持管理决策。数据仓库是OLAP系统的一个典型示例,主要用于数据分析
对比
OLTP | OLAP | |
---|---|---|
数据源 | 仅包含当前运行日常业务数据 | 整合来自多个来源的数据,包括OLTP和外部来源 |
目的 | 面向应用,面向业务,支持事务 | 面向主题,面向分析,支持分析决策 |
焦点 | 当下 | 主要面向过去、面向历史,实时数仓除外 |
任务 | 读写操作 | 大量读而很少写操作 |
响应时间 | 毫秒级别 | 秒、分、小时或者天,取决于数据量和查询复杂度 |
数据量 | 小数据 MB、GB | 大数据 TB、PB |
数据库与数据仓库的区别
数据库与数据仓库的区别实际上就是OLTP和OLAP的区别
OLTP系统的典型应用就是RDBMS,也就是我们俗称的数据库,当然这里特别强调的是此数据库表示的是关系型数据库,NoSQL不在讨论范围内
OLAP系统的典型应用就是DW,也就是我俗称的数据仓库
数据仓库不是大型数据库,虽然数据仓库存储的数据规模很大
数据仓库的出现,并不是要取代数据库
数据库是面向事务的设计,数据仓库是面向主题设计的
数据库一般存储业务数据,数据仓库一般是历史数据
数据库是为了捕获数据而设计的,数据仓库是为分析数据而设计的
数据仓库、数据集市
数据仓库是面向整个集团组织的数据,数据集市(Data Mart)是面向单个部门使用的
可以认为数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库,数据集市通常指设计一个主题领域,因为他们较小更具体,所以他们通常更便于维护和管理,具有更灵活的结构
数据仓库分层架构
分层思想和标准
数仓的特点是本身不产生数据,也不最终消费数据,按照数据流如流出数仓的过程进行分层就显得水到渠成,每个企业根据自己的业务需求可以分成不同的层次,但是最基础的分层思想、,理论上分为三层:操作性数据层(ODS)、数据仓库层(DW)和数据应用层(DA)
企业在实际运用中可以基于这个基础分层之上添加新的层次来满足不同的业务需求
阿里巴巴数仓三层架构
ODS层
ODS(Operation Data Store)
操作性数据层,也称之为源数据层。数据引入曾、数据暂存曾、临时缓存层
此层存放未经过处理的原始数据之数据仓库,结构上与源系统保持一致,是数据仓库的数据准备区
主要完成操作数据引入到数仓的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化
DW层
DW层(Data Warehouse)
数据仓库层,由ODS层数据加工而成,主要完成数据加工与整合,建立一致性的维度,构建可以复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标,内部具体划分如下:
- 公共维度层(DIM):基于维度建模理念思想,建立整个企业一致性维度
- 公共汇总粒度事实层(DWS、DWB):以分析的主体对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共力度的汇总指标事实表,以宽表化手段物理化模型
- 明细粒度事实层(DWD):将明细事实表的重要维度属性字段做适当的荣誉,即宽表化处理
DA层(ADS层)
数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据
包括前端报表、分析图表等
分层的好处
分层的主要原因是在管理数据时,能对数据有一个更加清晰的掌控,,主要原因有这几个:
清洗数据结构:每一个数据分层都有他的作用域,在使用表的时候能更加方便地定位和理解
数据血缘追踪:简单的来说,我们最终给业务呈现的是一个能直接使用的业务表,但是它的来源有很多,如果一张表出问题,我们希望能够快速定位到这个问题并查清楚他的危害范围
减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
好处
把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层处理单一的步骤,比较简单和处容易理解,而且便于维护数据的准确性,当数据出现问题后,可以不用修复所有数据,著需要从有问题的步骤开始修复即可
屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就必须重新接入数据
ETL和ELT的区别
数据仓库从各个数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Excel、转化Transfer、装载Load)的过程
但是在实际操作中将数据加载到仓库却产生了两种不同的做法:ETL和ELT
ETL
ETL(Extract、Transform、Load)
首先从数据源池中提取数据,这些数据源通常是事务性数据库,数据保存在临时缓存数据库中(ODS),然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式,然后将结构化数据加载到仓库中,以备分析
ELT
Extract Load Transform
使用ELT,数据在从数据池中抽取出来后立即加载,没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中,数据在数据仓库系统中进行转换,以便于商业智能工具(BI 工具)一起使用,大数据时代的数仓这个特点非常明显