文章目录
1. 背景
- 数据仓库(Data Warehouse,简称数仓,DW),是一个用于存储、分析、报告的数据系统。
- 数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
- 数据仓库本身并不生产任何数据,其数据来源于不同外部系统;
- 数据仓库自身也不需要消费任何数据,其结果开放给各个外部应用使用;
1.1 数仓为何而来
1.1.1 为了分析数据
在企业中,信息用作两个目的:操作型记录保存,分析型决策制定。联机事务处理系统(OLTP:On-Line Transaction Processing)正好满足上述业务需求开展,其主要任务是执行联机事务处理。其基本特征是前台接受的用户数据可以立即传送到后台进行处理,并在很短的时间内给出处理结果。关系型数据库(RDBMS)是OLTP典型应用,比如Oracle、MySQL、SQLServer等。随着业务数据越来越多,基于业务数据开展数据分析,基于分析的结果给决策提供支撑,可以实现数据驱动决策制定。
1.1.2 数据分析环境
OLTP环境可以开展分析,但是没有必要。
- OLTP系统的核心是面向业务,支持业务,支持事务。所有的业务操作可以分为读、写两种操作。一般来说读的压力明显大于写的压力。
- 数据分析也是对数据进行读取操作,会让读取压力倍增。
- OLTP仅储存周数据或者月数据。
- 数据分散在不同系统不同表中,字段类型属性不统一。
集成统一的数据分析平台 - 当数据规模小,在业务低峰期时可以在OLTP系统上开展直接分析。为了更好的进行各种规模的数据分析,同时也不影响OLTP系统运行,此时需要构建一个集成统一的数据分析平台。
- 该平台目的:面向分析,支持分析,并且和OLTP系统解耦,这就是数据仓库的雏形。
1.2 数据仓库体系
我们把面向分析,支持分析的系统称之为联机分析处理系统(OLAP:On-Line Analytical Processing)。数据仓库是OLAP的一种。
1.2.1 主要特征
- 面向主题(Subject-Oriented):主题是一个抽象的概念,是较高层次上数据综合、归类并进行分析利用的抽象
- 集成性(Integrated):主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构,需要集成到数仓主题下。
- 非易失性(Non-Volatile):也叫非易变性。数仓是分析数据的平台,而不是创造数据的平台。
- 时变性(Time-Variant):数仓的数据需要随着时间更新,以适应决策的需要。
1.2.2 数据库和数据仓库的区别
- 数据仓库不是大型的数据库,虽然数据仓库存储的数据规模很大。
- 数据仓库的出现,并不是要取代数据库。
- 数据库是面向事务的设计,数据仓库是面向主题的设计。
- 数据库一般存储业务数据, 数据仓库一般存储历史数据。
- 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。
1.2.3 数据仓库和数据集市的区别
- 数据仓库(Data Warehouse)是面向整个集团组织的数据,数据集市(Data Mart)是面向单个部门使用的。
- 可以认为数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库。数据集市通常只涉及一个主题领域,它们较小且更具体,所以他们通常更易于管理和维护,并具有更灵活的结构。
- 各种操作型系统数据和包括文件在内的等其他数据作为数据源,经过ETL(抽取转换加载)填充到数据仓库中;数据仓库中有不同主题数据,数据集市则根据部门特点面向指定主题,比如采购、销售、库存等。
- 用户可以基于主题数据开展各种应用:数据分析、数据报表、数据挖掘。
2. 数据仓库分层架构
- 每个企业根据自己的业务需求可以分成不同的层次。最基础的分层思想,理论上分为三层:操作型数据层(ODS)、数据仓库层(DW)、数据应用层(DA)。
- 企业实际运用中可以基于这个基础分层之上添加新的层次,来满足不同业务的需求。
2.1 ODS层(Operation Data Store)
- 操作型数据层,也称之为源数据层,数据引入层、数据暂存层、临时缓存层。
- 此层存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
- 主要完成基础数据引入到数据仓库的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化。
2.2 DW层(Data Warehouse)
数据仓库层,由ODS数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。
- 公共维度层(DIM):基于维度建模理念的思想,建立整个企业一致性维度。
- 公共汇总粒度事实层(DWS、DWB):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。
- 明细粒度事实层(DWD):将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理
2.3 DA层(ADS层)
- 数据应用层,面向最终用户,面向业务制定提供给产品和数据分析使用的数据。
- 包括前端报表、分析图表、KPI、仪表盘、OLAP专题、数据挖掘等分析。
2.4 分层的好处
- 清晰的数据结构,每一个数据分层都有它的作用域,在使用表的时候能更方便底定位和理解
- 数据血缘追踪,出现问题时可以快速定位到问题,并清楚危害范围。
- 减少重复开发,开发一些通用的中间层数据,可以极大的减少重复计算。
- 把复杂的问题简单化,每一层只处理单一步骤,出现问题时可以从有问题的层次开始修复。屏蔽原始数据的异常,不必改一次业务就重新接入数据。
3. ETL和ELT
数仓从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取EXtra,转化Transfer、装载Load)的过程。在实际操作中将数据加载到仓库却产生了两种不同的做法:ETL和ELT
3.1 ETL
首先从数据源池中提取数据,这些数据源通常是事务性数据库。数据保存在临时暂存库中(ODS)。然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式。然后将结构化数据加载到仓库中,以备分析。
3.2 ELT
数据从源数据池中提取后立即加载,没有专门的临时数据库(ODS),这意味着数据会立即加载到单一的集中存储库中。数据在数据仓库系统中进行转换,以便与商业智能工具(BI工具)一起使用。大数据时代的数仓这个特点很明显。