数据仓库入门
1. 诞生背景
- 历史数据积存: 历史数据使用频率低,堆积在业务库中,导致性能下降。
- 企业数据分析需要: 各个部门自己建立独立的数据抽取系统,导致数据不一致。
2. 数据仓库特点
- 面向主题:为数据分析提供服务,根据主题将原始数据集合在一起。
- 集成:原始数据来源于不同数据源,要整合成最终数据,需要经过抽取、清洗、转换的过程。
- 非易失:保存的数据是一系列历史快照,不允许被修改,只允许通过工具进行查询、分析。
- 时变性:数仓会定期接收、集成新的数据,从而反映出数据的最新变化。
3. 数据仓库概念
由数据仓库之父比尔·恩门(Bill Inmon)提出, 数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合。 主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持,构建商业智能(就是将企业中现有的数据转化为知识,帮助企业做出明智的业务经营决策的工具,而将数据转化为知识,就需要使用数据仓库,OLAP工具和数据挖掘机器学习等工具)。
4. OLTP和OLAP
4.1 OLTP和OLAP区别
当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。
- OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
- OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。
对比属性 | OLTP | OLAP |
---|---|---|
读特性 | 每次查询只返回少量记录 | 对大量记录进行汇总 |
写特性 | 随机、低延时写入用户的输入 | 批量导入 |
使用场景 | 用户,Java EE项目 | 内部分析,为决策提供支持 |
4.2 OLAP分类
OLAP分为ROLAP(Relation OLAP)和MOLAP(Multidimensional OLAP)
对比属性 | ROLAP | MOLAP |
---|---|---|
组成 | 基于关系数据库 | 基于多维数据集 |
预计算 | 不需要 | 需要预计算 |
MOLAP由多维数据集组成,其中一个多维数据集称为一个OLAPCube
5. 数据仓库VS数据库
- 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计。
- 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。
特点 | 数据库 | 数据仓库 |
---|---|---|
面向 | 事务 | 分析 |
数据类型 | 细节、业务 | 综合、清洗过的数据 |
数据特点 | 当前的、最新的 | 历史的、跨时间维护 |
目的 | 日常操作 | 长期信息需求、决策支持 |
设计模型 | 基于ER模型,面向应用 | 星形/雪花模型,面向主题 |
操作 | 读/写 | 大多为读 |
数据规模 | GB到TB | >=TB |
6. 数据仓库建设方案
6.1 传统数据仓库
由关系型数据库组成MPP(大规模并行处理)集群。传统数仓中常见的技术架构,将单机数据库节点组成集群,提升整体处理性能;节点间为非共享架构(Share Nothing),每个节点都有独立的磁盘存储系统和内存系统;每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供服务;设计上优先考虑C(一致性),其次考虑 A(可用性),尽量做好P(分区容错性)。
架构优点
- 运算方式精细,延迟低、吞吐低
- 适合中等规模的结构化数据处理
架构缺点
- 存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行。
- 并行计算时,单节点瓶颈会成为整个系统短板,容错性差。
- 分布式事务的实现会导致扩展性降低。
6.2 大数据数据仓库
利用大数据天然的扩展性,完成海量数据的存放,将SQL转换为大数据计算引擎任务,完成数据分析。大数据中常见的技术架构,也称为Hadoop架构/批处理架构;各节点实现场地自治(可以单独运行局部应用),数据在集群中全局透明共享; 每台节点通过局域网或广域网相连,节点间的通信开销较大,在运算时致力减少数据移动;优先考虑的是P(分区容错性),然后是A(可用性),最后再考虑C(一致性)。
- 架构特点
- 解决了单点故障问题,会将出错的任务调度到其他副本节点。
- 运算方式粗犷,吞吐量大。
- 扩展性极强,适合处理非结构化、半结构化数据。
- 需要将中间结果进行存储,且数据移动开销较大。
- 架构缺点
- 相比数据库,SQL支持率低。
- 基本不支持事务。
6.3 MPP+分布式架构
- 数据存储采用分布式架构中的公共存储,提高分区容错性。
- 上层架构采用MPP,减少运算延迟。
7. 数据集市与数据仓库区别
数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。
数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段。