Skip to content

数据仓库入门

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是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。
对比属性OLTPOLAP
读特性每次查询只返回少量记录对大量记录进行汇总
写特性随机、低延时写入用户的输入批量导入
使用场景用户,Java EE项目内部分析,为决策提供支持

4.2 OLAP分类

OLAP分为ROLAP(Relation OLAP)和MOLAP(Multidimensional OLAP)

对比属性ROLAPMOLAP
组成基于关系数据库基于多维数据集
预计算不需要需要预计算

MOLAP由多维数据集组成,其中一个多维数据集称为一个OLAPCube

5. 数据仓库VS数据库

  1. 数据库面向事务设计,属于OLTP(在线事务处理)系统,主要操作是随机读写;在设计时尽量避免冗余,常采用符合范式规范来设计。
  2. 数据仓库是面向主题设计的,属于OLAP(在线分析处理)系统,主要操作是批量读写;关注数据整合,以及分析、处理性能;会有意引入冗余,采用反范式方式设计。
特点数据库数据仓库
面向事务分析
数据类型细节、业务综合、清洗过的数据
数据特点当前的、最新的历史的、跨时间维护
目的日常操作长期信息需求、决策支持
设计模型基于ER模型,面向应用星形/雪花模型,面向主题
操作读/写大多为读
数据规模GB到TB>=TB

6. 数据仓库建设方案

6.1 传统数据仓库

由关系型数据库组成MPP(大规模并行处理)集群。传统数仓中常见的技术架构,将单机数据库节点组成集群,提升整体处理性能;节点间为非共享架构(Share Nothing),每个节点都有独立的磁盘存储系统和内存系统;每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供服务;设计上优先考虑C(一致性),其次考虑 A(可用性),尽量做好P(分区容错性)。

  1. 架构优点

    • 运算方式精细,延迟低、吞吐低
    • 适合中等规模的结构化数据处理
  2. 架构缺点

    • 存储位置不透明,通过Hash确定数据所在的物理节点,查询任务在所有节点均会执行。
    • 并行计算时,单节点瓶颈会成为整个系统短板,容错性差。
    • 分布式事务的实现会导致扩展性降低。

6.2 大数据数据仓库

利用大数据天然的扩展性,完成海量数据的存放,将SQL转换为大数据计算引擎任务,完成数据分析。大数据中常见的技术架构,也称为Hadoop架构/批处理架构;各节点实现场地自治(可以单独运行局部应用),数据在集群中全局透明共享; 每台节点通过局域网或广域网相连,节点间的通信开销较大,在运算时致力减少数据移动;优先考虑的是P(分区容错性),然后是A(可用性),最后再考虑C(一致性)。

  1. 架构特点
    • 解决了单点故障问题,会将出错的任务调度到其他副本节点。
    • 运算方式粗犷,吞吐量大。
    • 扩展性极强,适合处理非结构化、半结构化数据。
    • 需要将中间结果进行存储,且数据移动开销较大。
  2. 架构缺点
    • 相比数据库,SQL支持率低。
    • 基本不支持事务。

6.3 MPP+分布式架构

  • 数据存储采用分布式架构中的公共存储,提高分区容错性。
  • 上层架构采用MPP,减少运算延迟。

7. 数据集市与数据仓库区别

数据集市则是一种微型的数据仓库,它通常有更少的数据,更少的主题区域,以及更少的历史数据,因此是部门级的,一般只能为某个局部范围内的管理人员服务。
数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段。
Alt text