1. 数据仓库是什么?
- 数据仓库(DataWarehouse / DW):是一个用于 存储、分析、报告 的数据系统。
- 目的:构建 面向分析 的集成化数据环境,以数据分析结果驱动决策。
注意:
- OLAP系统:
面向分析
处理的系统。故数据仓库只是OLAP系统的一种。 - OLTP系统:
面向业务
支持事务系统。
- 特点:
- 数据仓库本身不生产任何数据。从数据库或文件系统中拿数据并保存。【所以叫数据仓库,而不叫数据工厂】
- 数据仓库本身不消费任何数据。分析的结果不是给自己用而是用于驱动决策。
2. 为什么要引入数据仓库?
问:直接在OLTP环境中,即直接在Mysql、Oracle、HDFS等数据库或分布式文件系统上进行数据分析可以吗???
答:可以,但没必要。
- 因为这样会对数据库或分布式文件系统造成巨大的压力;另外OLTP存储数据的周期是一周或一个月,无法对更久时间的数据进行分析。
- 所以要建立一个既不影响OLTP系统运行,又专门面向分析的系统。因此,数据仓库产生了。
3. 数据仓库 vs 数据库
数据仓库不是大型的数据库。数据仓库并不是要取代数据库。
- 目标不同:数据仓库是为数据分析而设计,数据库是为捕获数据而设计。
- 存储数据不同(最重要的差别):数据库存储最新的业务数据,数据仓库存储不仅会存储最新数据还会存储历史数据。
- 操作不同:数据库支持CRUD,而数据仓库只支持查询。
4. 数据仓库 vs 数据集市
- 数据仓库 (DataWarehouse ):是面向整个公司组织的数据。
- 数据集市 (DataMart) :是面向某单个部门使用的。可以认为数据集市是数据仓库的子集。
数据集市通常只涉及一个主题,主要是这样更加的具体、易于维护,能更好的为数据分析提供支持。
5. 数据仓库分层架构
5.1 三层架构
由于数据仓库不产生数据,也不消费数据,所以很自然的按照输入、存储、输出分为三层:
- 操作数据层 (ODS):又叫 源数据层、临时数据层。主要负责临时存放从数据源中解耦出来数据,做为数据仓库的输入。
- 数据仓库层 (DW):主要负责对ODS层提供的数据进行加工与整合
- 数据应用层 (DA):面向业务为数据分析定制的数据
这是自然的分层,在实际开发中可在此基础上增加新的分层或删除某层都是可以的。
5.2 为什么数据仓库要分层?
- 结构更加清晰,降低耦合,减少重复开发
- 将复杂的问题简单化:将复杂问题分多步解决,每一步只进行单一的处理。
- 屏蔽业务的影响:不需要改一次业务就从新接入数据
等等。。。。。。。。。。。。。
5.3 ETL 与 ELT
数据在数据仓库中的流动都属于ETL,其中:
- E:代表 数据的抽取 Extra
- T:代表 数据的转化 Transfer
- L:代表 数据的加载 Load
ETL 与 ELT 代表数据在数据仓库中整体的处理流程不同:
- ETL
- ELT
ETL与ELT没必要区分的太清,在实际开发中,什么顺序对业务帮助更大就用哪种。