数据仓库入门

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数据库

  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

评论