数据仓库

数据仓库

数据仓库(Data Warehouse)是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据存储集合,用于对企业管理决策过程的支持。

  1. 面向主题:数据仓库针对某个主题来进行组织
  2. 集成:需要整合多个数据源的数据
  3. 稳定:数据一般只进行查询操作
  4. 随时间变化:定期接收新的集成数据,反应最新的数据变化

面向分析的存储系统

数据仓库和操作型数据库区别

面向主题是数据仓库和操作型数据库的根本区别,操作型数据库是为了支持各个业务而建立,分析型数据为了从各种繁杂业务中抽象出来的分析主题进行分析而建立

差异项 数据库 数据仓库
特征 操作处理 信息处理
面向 事务 分析
用户 DBA、开发 经理、主管、分析人员
功能 日常操作 长期信息需求、决策支持
DB设计 基于ER模型,面向应用 星形/雪花模型,面向主题
数据 当前的、最新的 历史的、跨时间维护
汇总 原始的、高度详细 汇总的、统一的
视图 详细、一般关系 汇总的、多维的
工作单元 短的、简单事务 复杂查询
访问 读/写 大多为读
关注 数据进入 信息输出
操作 主键索引操作 大量的磁盘扫描
用户数 数百到数亿 数百
DB规模 GB到TB >=TB
优先 高性能、高可用性 高灵活性
度量 事务吞吐量 查询吞吐量、响应时间

数据仓库组件

数据仓库核心组件有4个:源数据库,ETL,数据仓库,前端应用

  1. 源数据库:业务系统数据,外部数据
  2. ETL:提取extraction、转换transformation、加载load。提取过程表示操作型数据库搜集指定数据,转换过程表示将数据转化为指定格式并进行数据清洗保证数据质量,加载过程表示将转换过后满足指定格式的数据加载进数据仓库。数据仓库会周期不断地从源数据库提取清洗好了的数据
  3. 前端应用:数据查询,展示

数据集市

包含单个主题的小型数据仓库,关注范围小(不关注全局)

  1. 独立数据集市:有自己的源数据库和ETL架构
  2. 非独立数据集市:没有自己的源数据库,数据来自数据仓库(是数据仓库的一个子集)

数据仓库建模

纬度建模是专门用于分析型数据库,数据仓库,数据集市建模的方法,属于关系建模方法,比操作型数据库的建模方法多了两个概念(维度表和事实表)

  • 维度表:表示对分析主题所属类型的描述,通常维度表比较固定且数据量小
  • 事实表:表示对主题分析的量度,事实表通常是数值类型,且记录数会不断增加,表规模迅速增长

纬度建模三种模式

  1. 星形模式(一个事实表和多个维度表)
  2. 雪花模式(对星形模式的扩展,每个维度表可向外连接多个子维度表)
  3. 星座模式(对星形模式的扩展,每个多个事实表)
1
2
3
4
5
6
7
8
        星形模式
|
---------------
| |
规范化设计 多个事实表
| |
| |
雪花模式 星座模式

数据仓库建模体系

  1. 规范化数据仓库
    规范化数据仓库
  2. 维度建模数据仓库
    维度建模数据仓库
  3. 独立数据集市
    独立数据集市

数据仓库建模体系对比
独立数据集市

数据仓库系统实现与使用

ETL(抽取,转换,加载)

ETL工作本质:从各个工作源抽取数据,对数据进行转化,并最终加载到数据仓库维度建模后的表中

  1. 抽取(Extract) 根据数据仓库主题从应用数据库抽取数据
  2. 转换(Transform) 对抽取的数据的结构进行转换,满足目标数据仓库模型的过程(数据清洗)
  3. 加载(Load) 将提前好的数据在确保数据质量后加载到目标数据仓库(首次加载和刷新加载)

OLAP/BI工具

OLAP:在线分析处理(On-line Analytical Processing)
OLAP专门用于纬度建模数据分析
BI工具将OLAP的结果以图表的方式展现出来

数据立方体

数据立方体是N维的
数据立方体五大操作:切片,切块,旋转,上卷,下钻

OLAP架构模式

ROLAP(Relational Online Analytical Processing)关系式OLAP

使用星形模式以及多个关系表对数据立方体进行模拟,所有查询都被转化为SQL语句执行,SQL语句涉及多个表之间的JOIN操作,速度慢
ROLAP
基于RDBMS技术,通过并行化/内存加速计算 Hive/Presto/Spark SQL/Dirll
ROLAP
优点:

1. 支持任意的SQL表达式
2. 无数据冗余和预处理

不足:

1. 大量数据/复杂查询下分钟/小时级响应
2. 低并发
3. 不支持实时数据

适用场景: 对灵活性要求不高的即席查询场景

MOLAP(Multidimensional Online Analytical Processing)多维度OLAP

生成一个多维数据集,构建一个实际数据立方体,常用查询被预先计算,每次查询都非常快速,但立方体更新比较慢
MOALP
预先聚合明细数据,系统中存储汇总数据 Kylin/Druid
MOALP
优势:

1. 支持超大原始数据集
2. 高性能高并发

不足:

1. 不支持明细数据查询
2. 需要预先定义维度和指标(度量)

适用场景:

1. 对性能要求非常高的OLAP场景
2. 交互式分析

搜索引擎Search Engines

基于搜索引擎技术,通过索引加速计算(Elasticsearch / Solr)
Search Engines
优势:

1. 强大的明细检索功能
2. 同时支持实时与离线数据

不足:

1. 大量数据/复杂查询下分钟/小时级响应
2. 复杂聚合计算下低并发
3. 不支持JOIN/子查询

适合场景:中小数据规模(~亿级)的简单OLAP分析

HOLAP(Hybrid Online Analytical Processing)

参考MOLAP和ROLAP的混合解决方案,将需要特别提速的查询放在MOLAP引擎,其他查询则调用ROLAP引擎

ROLAP MOALP HOLAP的对比
| 名称 | 描述 | 细节数据存储位置 | 聚合后的数据存储位置 |
| :—: | :—: | :—: | :—: |
| ROLAP(Relational OLAP) | 基于关系数据库的OLAP实现 | 关系型数据库 | 关系型数据库 |
| MOLAP(Multidimensional OLAP) | 基于多维数据组织的OLAP实现 | 数据立方体 | 数据立方体 |
| HOLAP(Hybrid OLAP) | 基于混合数据组织的OLAP实现 | 关系型数据库 | 数据立方体 |

OLAP引擎比较

OLAP引擎比较

OLAP引擎简介

Hive

ElasticSearch

Kylin

参考资料