数据仓库

1 定义

数据仓库是一个用于报表和数据分析的系统,被认为是BI的核心组件。

img

是从不同数据源整合的数据的中心仓库,存储有当前和历史数据。ETL和ELT是构建数据仓库的两种主要方式。

img

img

(1) 基于ETL的数据仓库

分为staging、data integration和access层。

staging存储来自异构数据系统的原始数据。

integration从staging中读取并转换多种数据集到操作数据存储(ODS)中。数据被分为层次组,称为维度。and into facts and aggregate facts?facts和维度的结合,有时称为星型结构。

access帮助用户获取数据。

广义的数据仓库包括获取分析数据、ETL、目录管理方法及其工具。

示例工具:

IBM InfoSphere DataStage, Ab Initio Software, Informatica – PowerCenter

(2) 基于ELT的数据仓库

ELT方式staging包含在数据仓库中。数据在转换前,直接从多种数据源加载数据到仓库。转换操作也在数据仓库中完成。

img

思考:ETL和ELT都由Staging、Data Integration和Access三层结构组成。区别是数据转换是否在数据加载之前,前者为是,后者为否。

2 特性

(1) 优势

  • 整合多源数据,赋能单一数据查询引擎在ODS中展现数据,减少周转时间。同时提供ad-hoc(点对点)报表和查询
  • 缓解事务处理系统中分离的数据库中的锁竞争问题,当尝试运行海量、长时间和分析查询时
  • 维护数据历史
  • 在企业间赋能中心视野,尤其是企业合并壮大后
  • 提高数据质量,通过一致的代码和描述、标记,甚至修复坏数据
  • 一致地展示组织信息
  • 提供感兴趣数据的简单统一模型,不论数据来源
  • 重构数据,以服务商业用户
  • 重构数据,以便高效查询,并且不影响操作系统
  • 增加操作性商业系统价值,尤其是客户关系系统CRM
  • 简化决策支持查询
  • 组织并消歧义重复数据

(2) 劣势

  • 对非结构化数据不理想
  • 创建和实现耗时长
  • 过时相对快?
  • 难以变化数据类型和范围、数据源模式、索引和查询。
  • 对普通用户太复杂
  • 项目范围一致增长
  • 有时用户会产生不同的业务规则
  • 企业需要花费大量资源培训和实现目的

(3) 通用概念

数据仓库包含以下组成:

  • 数据源系统,用于提供原始数据,通常是操作性数据库,如关系型数据库
  • 数据整合技术,用于数据ETL
  • 数据存储架构,用于存储数据
  • 数据访问工具和应用,用于用户访问数据
  • 元数据、数据质量和治理工艺(governance processes)

3 相关系统

(1) 数据集市

数据集市是单一方面的数据仓库,如销售、经济或市场等,通常为部门所有。包含独立、非独立和混合型。

image-20200515145234169

(2) OLAP

联机分析处理以多维形式(通常星型)存储集合的历史数据。具有相对低的容量,但是查询通常复杂且包含聚合。被广泛用于数据挖掘中。包含三个关键操作:Roll-up(Consolidation)、Drill-down和Slicing&Dicing。

思考:合并、下钻和切片&切块?

对于OLAP系统,响应时间是一个有效的度量。通常为数小时,与数据集市(通常一天)接近。

(3) OLTP

联机事务处理包含详细的当前数据,采用entity模型存储(通常为第三范式)。具有大量短时在线事务(增、改、删),强调快速处理和维持并发访问的数据整体性。

效率通过每秒处理事务数量衡量。

(4) 预测分析

预测分析使用复杂的数学模型查找和量化数据中隐藏的模式。相比OLAP关注历史数据分析和响应性的,预测分析关注未来。

4 历史

20世纪80年代,IBM研究者Barry Devlin和Paul Murphy提出数据仓库概念,用于解决从操作型系统到决策支持环境中数据流问题。在此之前,需要大量的数据副本用于支持决策。在大型企业中,又有多个独立的决策支持系统,服务不同的用户,消费大同小异的数据。当出现新的决策支持需求时,对数据收集、清洗和聚合产生新的要求,影响用户使用。

image-20200515153738613

5 信息存储

(1) Facts

一个表示所管理实体或系统实际情况的数值或度量。

反应实体情况时,又称在原始等级。如一个通信基站收到1000个请求,接收其中820个,其余丢弃。其可以反馈一下3个fact:

image-20200515154431123

当被聚合到更高级别时,称为aggregates或summaries或aggregated facts。

如城市中有3个基站,集合到城市层面为:

image-20200515154645543

(2) 数据存储:维度vs规格化

数据仓库中数据存储最常用的两种方式:维度和规格化

维度方式使用 Ralph Kimball的维度/星型模型。

规格化方式(又称第三范式方式)使用Bill Inmon的E-R/规格化模型。

1) 维度

可以理解为数据立方体(data cube),维度是坐标,fact是值。

事务数据被分为facts(通常为数值型事务数据)和维度(facts的上下文参考信息)。如销售事务,可以分解为facts(订购的产品产品数量和支付总价),维度(订购日期、用户姓名、产品编号、收货方、开票方和销售人员)。

优势:

  • 易于用户理解和使用,facts与业务流程、运营系统相关,维度提供了相应的上下文信息。
  • 数据获取快速
  • 不必每次查询涉及关系型数据库,便于用户使用。

劣势:

  • 加载数据复杂,为了保持fact和维度的完整性
  • 结构难以修改

2) 规格化

数据按照数据库规格化规则存储。表按照主题领域分组,反映一般数据类别(如关于客户、产品和财务的数据)。数据分为多个实体,在关系型数据库中创建多个表。当应用到大型企业时,表现为大量表的连接网络。

优势:

  • 数据添加直接

劣势:

  • 难以从多个数据源连接表格
  • 难以访问数据,在对数据源和数据结构不了解的情况下

当包含连接的关系表时,规格化和维度模型都可以使用E-R图展示。两种方式的区别是规格化的程度。两者不是互不相容的,某种程度上,维度方式可以包含规格化数据。

在信息驱动业务中,Robert Hillard提出了一种基于业务问题的信息需求的比较方式。表明规格化模型保存的信息远大于等效的维度模型(即使两者使用相同的字段),但这是以可用性为代价的。

6 设计方法

(1) 自下而上

首先,针对特定业务流程创建数据集市。其次,聚合数据集市为综合的数据仓库。

数据仓库总线模型是一致的facts和一致的维度的集合。在多个数据集市中,facts通过特定的方式共享维度。

(2) 自上而下

是一个规格化的数据模型。

原子数据(即最详细的数据)存储在数据仓库中。从数据仓库创建包含特定业务流程或特定部门需要数据的维度数据集市。

(3) 混合

数据仓库通常类似集线器与分支架构。用于数据仓库的传统系统通常包含用户关系管理、企业资源规划,其产生大量数据。为了合并这些数据模型,促进ETL过程,数据仓库通常使用可操作的数据存储,其信息被解释到实际的数据仓库。为了减少数据冗余,大型系统通常以规格化方式存储,并在数据仓库上构建用于特定用途的数据集市。

混合模式数据仓库使用第三范式消除数据冗余。但是对于普遍维度建模的BI,普通关系型数据库效率不高。小型数据集市可以从合并的数据仓库中获取数据,并将过滤的特定数据用于所需的fact表和维度。假如有广泛的BI信息,数据仓库提供了数据集市可读的单一信息来源。混合结构允许数据仓库被替换为可操作性的、可保存非静态信息的主数据管理(master data management)。

data vault模型遵循集线器和分支架构,结合第三范式和星型模式,结合自上而下和自下而上。模型被严格设计为数据仓库,但是没有设计为终端用户可用。因为需要使用数据集市或星型模式。

image-20200515184100056

7 数据仓库特性

  • 面向主题

    与操作型系统不同,数据围绕企业主题。

  • 集成

    数据仓库中的数据是消除了不一致的。一致性包括命名约定、变量度量、编码结构和物理属性等

  • 时间变化

    存储历史数据,可用于数据挖掘和预测。

  • 非易失性

    数据只读,不可变更。

  • 归纳

    数据在不同等级上归纳。

8 数据仓库架构

架构主要组件包括硬件、软件和数据源。不同的需求有不同的模式。

  • 加载管理

    又叫前端组件,从操作型系统中提取并加载数据到仓库,包含入库前的数据转换。

  • 仓库管理

    管理数据。包含数据一致性分析、索引和视图创建、反向规格化和聚合更新、转换和合并原始数据、归档和备份数据。

  • 查询管理

    又叫后端组件。管理用户查询,直接访问表。

  • 终端用户访问工具

    包含以下五种组件:

    • 报表
    • 查询工具
    • 应用开发工具
    • EIS工具
    • OLAP工具和数据挖掘工具

9 对比操作型系统

操作型系统通过数据库规格化(Codd’s 12 rules)和E-R模型优化数据完整性保存和快速记录。完全规格化的数据库导致数据被存储在众多表中。关系型数据库擅长处理表之间的管理。由于影响范围下,能够快速增改数据。为了提高性能,旧版本的数据被删除。

数据仓库优化了分析访问。分析访问通常包含选择特定的字段,几乎从不使用操作型数据库中的“select *”。由于访问模式的差异,操作型数据库(宽松地,OLTP)受益于基于行的DBMS,分析型数据库受益于基于列的DBMS。与维护业务快照的操作型数据库不同,数据仓库通常维护无限的历史数据,通过ETL过程周期性地从操作型系统迁移数据到数据仓库中。

10 变革

数据仓库的复杂等级如下:

  • 离线操作型

    周期性(通常每天、每周或每月)从操作型系统更新数据,存储在面向报表的数据库中。

    仅从操作型系复制数据,数据处理不影响操作型系统。

  • 离线

    数据基于常规基线(regular basis)从操作型系统更新,存储在利于报表的数据结构中。数据被映射转换为数据仓库所需。

  • 实时

    在线继承数据仓库表示,对于来源数据的每次事务操作,更新数据仓库阶段数据。

  • 集成

    收集不同业务领域的数据,用户可以在多个系统间查找数据。当操作型系统执行事务时,持续更新。

11 概念对比

数据仓库的概念

image-20200516113020531

image-20200516113038290

数据仓库适合历史数据分析。

数据湖适合低成本存储、非关系数据。

image-20200516113116976

12 数据仓库类型

  • 企业数据仓库

    中心化的仓库,提供决策支持,提供统一的数据分类、组织和展示方式。

  • ODS

    实时刷新,通常用于日常活动。

  • 数据集市

    数据仓库在特定方面的子集。

13 数据仓库实现步骤

规避业务风险的三种策略:

  • 企业策略

    确定当前架构和工具。确定facts、维度、属性、数据映射和转换。

  • 分阶段交付

    基于主题领域分阶段。先分领域实现,再集成。

  • 迭代原型

    迭代开发和测试

    image-20200518114728518

14 数据仓库最佳实践

  • 制定计划以测试数据的一致性,准确性和完整性。
  • 数据仓库必须良好集成,良好定义并加盖时间戳。
  • 在设计Datawarehouse时,请确保使用正确的工具,忠于生命周期,注意数据冲突,并准备好学习自己的错误。
  • 切勿更换运营系统和报表
  • 不要在提取,清理和加载数据上花费太多时间。
  • 确保让所有利益相关者(包括业务人员)参与到Datawarehouse实施过程中。确定数据仓库是一个联合/团队项目,毕竟你不想创建对终端用户无用的数据仓库。
  • 为终端用户准备培训计划。

15 未来展望

  • 法规约束变化可能限制融合多源数据的能力
  • 规模不断增长,现有软硬件难以支持在线海量数据
  • 相比文本数据,多媒体数据难以操作。

16 数据仓库工具

(1) MarkLogic

使用企业特性数组简化并加速数据集成。支持对文档、关系和元数据等的复杂查询操作。

(2) Oracle

提供本地和云端部署,通过提升操作效率提升用户体验。

(3) Amazon RedShift

使用标准SQL和已有BI工具分析所有类型数据的简单经济的工具,允许对PB级别数据复杂查询。

17 总结

  • 数据仓库用作中央存储库,其信息来自一个或多个数据源。
  • 数据仓库的三种主要类型:企业数据仓库,运营数据存储和数据集市。
  • 数据仓库的一般状态是脱机操作数据库,脱机数据仓库,实时数据仓库和集成数据仓库。
  • 数据仓库的四个主要组件:加载管理,仓库管理,查询管理和终端用户访问工具
  • 实施Datawarehosue是3分策略,即:企业战略,分阶段交付和迭代原型设计。
  • 数据仓库使业务用户可以在一处快速地从多个来源快速访问关键数据。

参考资料

Data warehouse

What is Data Warehouse? Types, Definition & Example

20 Best ETL / Data Warehousing Tools in 2020

第三范式:所有数据元素被主关键字唯一标识,且相互之间不存在函数关系。