数据仓库概念、起源
概念
- 数据仓库(Data Warehouse,简称数仓、DW),是一个用于存储、分析、报告的数据系统。
- 数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(Decision Support)。
- 数据仓库本身并不“生产”任何数据,其数据来源于不同外部系统;
- 同时数据仓库自身也不需要“消费”任何的数据,其结果开放给各个外部应用使用;
数据仓库的主要特征
- 面向主题:主题是一个抽象的概念,是较高层次上数据综合、归类并进行分析利用的抽象
- 集成性:主题相关的数据通常会分步在多个操作型系统中,彼此分散、独立、异构。需要集成到数仓主题下。
- 非易失性:也叫非易变性。数据仓库是分析数据的平台,而不是创造数据的平台。
- 时变性:数据仓库的数据需要随着时间更新,以适应决策的需要。
OLTP、OLTP区别
概念
- 联机事务处理 OLTP(On-Live Transaction Processing)。
- 联机分析处理 OLAP(On-Live Analytical Processing)。
OLTP
- 操作型处理,叫联机事务处理 OLTP(On-Live Transaction Processing),主要目标是做数据处理,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。
- 用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。
- 传统的关系型数据库系统(RDBMS)作为数据管理的主要手段,主要用于操作型处理。
OLAP
- 分析型处理,叫联机分析处理 OLAP(On-Live Analytical Processing),主要目标是做数据分析。
- 一般针对某些主题的历史数据进行复杂的多维分析,支持管理决策。
- 数据仓库是OLAP系统的一个典型示例,主要用于数据分析。
对比
数据仓库、数据集市
区别
- 数据仓库(Data Warehouse)是面向整个集团组织的数据,数据集市(Data Mart)是面向单个部门使用的。
- 可以认为数据集市是数据仓库的子集,也有人把数据集市叫做小型数据仓库。数据集市通常只涉及一个主题领域,例如市场营销或销售。因为它们较小且更具体,所以它们通常更易于管理和维护,并具有更灵活的结构。
数据仓库分层思想与架构
分层思想和标准
- 数据仓库的特点是本身不生产数据,也不最终消费数据。按照数据流入流出数仓的过程进行分层就显得水到渠成。
- 每个企业根据自己的业务需求可以分成不同的层次。但是最基础的分层思想,理论上分为三层:操作型数据层(ODS)、数据仓库层(DW)和数据应用层(DA)。
- 企业在实际运用中可以基于这个基础分层之上添加新的层次,来满足不同的业务需求。
ODS层(Operation Data Store)
- 操作型数据层,也称之为源数据层、数据引入层、数据暂存层、临时缓存层。
- 此层存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
- 主要完成基础数据引入到数仓的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化。
DW层(Data Warehouse)
数据仓库层,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。内部具体划分如下:
- 公共维度层(DIM):基于维度建模理念思想,建立整个企业一致性维度。
- 公共汇总粒度事实层(DWS、DWB):以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型
- 明细粒度事实层(DWD):将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。
DA层(或ADS层)
- 数据应用层,面向最终用户,面向业务定制提供给产品和数据分析使用的数据。
- 包括前端报表、分析图表、KPI、仪表盘、OLAP专题、数据挖掘等分析。
分层的好处
分层的主要原因是在管理数据的时候,能对数据有一个更加清晰的掌控,详细来讲,主要有下面几个原因∶
- 清晰数据结构:每一个数据分层都有它的作用域,在使用表的时候能更方便地定位和理解。
- 数据血缘追踪:简单来说,我们最终给业务呈现的是一个能直接使用业务表,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
- 把复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
- 屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就需要重新接入数据。
ETL、ELT
背景
- 数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra,转化Transfer,装载Load)的过程。
- 但是在实际操作中将数据加载到仓库却产生了两种不同做法︰ETL和ELT。
ETL
Extract,Transform,Load ETL
首先从数据源池中提取数据,这些数据源通常是事务性数据库。数据保存在临时暂存数据库中( ODS )。然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式。然后将结构化数据加载到仓库中,以备分析。
ELT
Extract,Load,Transform ELT
使用ELT,数据在从源数据池中提取后立即加载。没有专门的临时数据库(ODS ),这意味着数据会立即加载到单一的集中存储库中。数据在数据仓库系统中进行转换,以便与商业智能工具(BI工具)一起使用。大数据时代的数仓这个特点很明显。