该系列博文为《数据仓库 Building the Data Warehouse》一书的读书笔记,笔者将书中重点内容进行概括总结。大致保留书中结构,一部分根据自己的理解进行调整。如发现问题,欢迎批评指正。
《数据仓库》读书笔记:第3章 设计数据仓库
数据仓库是在启发方式
下建造的,一个阶段的开发完全依赖于上一阶段的结果,需求只有在装载部分数据并开始使用才能弄清楚。
建造数据仓库主要包含两个部分的工作:
① 与操作型系统接口的设计
;
② 数据仓库本身的设计
。
1. 需求与Zachman框架
数据仓库不是由处理需求建造,是由企业需求建造。Zachman框架是保证企业的所有方面都在系统开发中得到考虑的便捷工具。
从Zachman框架到数据仓库开发的发展过程如下图:
2. 数据仓库建模
2.1 操作型系统和数据仓库模型
过程模型:需求驱动,仅仅适用于操作型环境。
数据模型:既可适用于操作型环境,又可适用于数据仓库环境。
企业数据模型是操作型数据模型与数据仓库数据模型的共同起源
。
企业模型应用于操作型系统需要做的改动非常少;
企业模型应用于数据仓库需要做较多改动,如下:
① 去除纯粹用于操作型环境中的数据;
② 关键字结构中增加时间元素;
③ 将导出的数据加到企业数据模型中,导出数据作为公用并只进行一次计算;
④ 在数据仓库中将操作型系统中的数据关系转变为“人工关系”;
⑤ 进行稳定性分析,即根据各个数据属性是否经常变化进行属性分组。
2.2 数据模型的三个层次
数据模型分为三个层次:
- 高层建模(称为实体关系图,或ERD)
高层建模特征:实体
与关系
。
在ERD层,实体处于最高抽象层,集成范围
定义了数据模型的边界。- 中间层建模(称为数据项集或DIS)
- 对高层模型标识出的每个实体或主要主题域都进一步扩展,建立各自中间层模型。
- 中间层数据模型的四个基本构造:
① 主要数据分组:每个主要主题域有且只有一个,包含主要主题域的的属性和关键字。
② 二级数据分组:包含每个主要主题域可能存在多次的数据属性。
③ 连接器:表示两个主要主题域间的关系。
④ 数据的“类型”。- 一般来讲,数据模型的每个数据分组都将产生一个在数据库设计过程中定义的表。
- 底层建模(称为物理模型)
- 扩展中间层模型,使模型中包含关键字和物理特性。 物理模型为一系列的表,有时称为关系表。
- 设计数据仓库:确定
粒度
和分区
,物理设计工作
(核心为I/O使用情况)。
节省I/O的技术:
① 物理合并大量数据模型输出的小表;
② 创建数据分组
③ 有意引入冗余
④ 当访问率悬殊,对数据做进一步分离(分表)
⑤ 引入导出(即已计算出的)数据
⑥ 创造性索引和创造性概要文件
⑦ 参照完整性(操作型环境中,为数据表之间的动态链接;数据仓库环境中,数据关系采用人工关系表示)
在最低层次的数据库设计中,可以进行轻度反向规范化
:
① 创建数据分组;
② 有意引入冗余;
③ 创造性索引和创造性概要文件。
2.3 数据模型在迭代式开发中作用
① 数据模型在数据仓库的每一遍开发中起着路标的作用
。不仅告诉开发者需要做什么,且指明如何将开发步骤之间集成在一起。
② 所有开发基于一致的数据模型,将产生一个内聚的
,高度和谐的整体
。
3. 数据在操作型环境与数据仓库的流动
3.1 从操作型环境到数据仓库
数据从操作型环境到数据仓库的问题:
- 对现有历史系统的集成
- 将未经集成的数据载入到数据仓库是一个极端的错误,几乎挖掘不出数据仓库的任何潜力。
数据缺乏集成导致的一致性问题
:
① 数据编码不一致,需要转换;
② 字段语义的转换;
③ 原有数据在不同的DBMS下可能以多种不同格式存储。
- 访问现有系统数据的效率
- 从操作型环境到数据仓库的三种装载工作:
① 装载档案数据
(由于成本问题,企业经常不做这项工作,即使装载,也只需一次);
② 装载在操作型系统中的现有数据
(只需装载一次);
③ 装载从上次数据仓库刷新以来在操作型环境中不断更新的数据
(最为困难,需有效捕捉不断发生的日常变化并进行处理)。- 扫描现有文件系统时,限制扫描的操作型数据量的常用五种技术:
① 扫描在操作型环境中那些被打上时间戳的数据;
② 扫描增量文件;
③ 扫描事务处理所产生的日志文件或者审计文件;
④ 修改应用代码程序
⑤ 比较“前”一个映像文件与“后”一个映像文件。
- 数据从操作型环境到数据仓库时要经历的时基变化
操作型数据通常为当前值数据,当前值数据在访问时刻时准确有效的,而且是可更新的。但数据仓库中这些数据是不可更新的
,需要附加上时间元素
。- 对传入数据仓库中数据规模进行管理
数据在抽取和进入数据仓库都要进行压缩
,以控制仓库中的数据量。有时需要对操作型数据的粒度级别进行调整。
数据从操作型系统到数据仓库环境的所经历的复杂转换:
3.2 从数据仓库到操作型环境
特殊情况下,存在这种数据回流,技术上也是可行的。
4. 数据仓库中的数据
4.1 数据组成
快照
:每个数据仓库内部都以快照的数据结构为中心来组织。
- 数据仓库中记录的创建由操作型环境中发生的活动或事件触发。
① 时间触发快照;
② 事件触发快照。
由事件触发的快照有四个基本组成部分:
元数据
:元数据与指向数据仓库内容的索引相似,处于数据仓库的上层,并且记录数据仓库中对象的位置。
参照数据
:数据仓库中,一般文件构成支柱,还需要参照数据。
参照数据也需要时间元素反应其事变特征。使用参照数据可以显著减少数据仓库中数据量。
数据周期
:操作型环境中的改变感知时,不用立刻反应到数据仓库中,这个变化反应所用时间称为数据周期(时间间隔)。
- 时间间隔存在的原因:
① 操作型环境与数据仓库之间结合越紧密,所需技术越昂贵复杂 ;
②时间间隔给环境加了一个特殊限制,不必在这两个环境中作对方的操作;
③ 在转入数据仓库之前,数据能达到稳定。
概要记录
:由许多不同的历史活动组成的复合记录。为最终用户访问分析提供了一种紧凑,方便的数据组织形式。
- 概要记录存在的原因: 数据仓库中的数据有时不稳定且经常变化,且有些历史记录不需要特别详细。
- 数据仓库中单个活动代表单一事件,概要记录代表多个事件(表示数据的快照)。
4.2 数据管理
数据管理方式 | 优点 | 缺点 |
---|---|---|
建立概要记录 | 降低数据量级 | 丢失细节数据 |
建立概要记录的同时建立历史细节的备用层 | — — | — — |
创建多个概要记录(可以放入数据仓库,操作型数据存储区,数据集市) | — — | — — |
4.3 数据访问
- 直接操作型访问
由操作型环境对数据仓库环境进行直接数据访问。这种访问的一些限制如下:
① 请求必须忍受冗长响应时间;
② 对数据的请求必须是最小量的;
③ 管理数据仓库与操作型环境所用到技术一致,如容量,协议;
④ 数据仓库取得的,准备到操作型环境数据必须不做(或最小量)格式化。 - 间接访问
使用在线操作型环境可以间接地使用数据仓库数据。间接使用数据仓库数据时,应该考虑地几个因素:
① 分析程序
② 周期性刷新;
③ 在线预分析数据文件。
4.4 数据存储(ODS)
- 操作型数据存储
操作型ODS类别 | 概述 |
---|---|
第I类ODS | 从操作型环境到ODS的数据更新是同步进行的 |
第II类ODS | 更新间隔2-3个小时 |
第III类ODS | 同步在夜间完成 |
第IV类ODS | 更新不预先规划 |
- 数据仓库数据分析后,定期数据存储,传送到ODS中数据都是概要数据。
5. 多维方法应用于数据集市(详细见第13章)
多维方法:一种数据仓库不同于数据库的设计方法,这种方法需要:星形连接,事实表和维。
星形连接
:用来管理载入数据集市中某个实体的大量数据的设计结构。
数据集市 | 数据仓库 | |
---|---|---|
多维方法 | 多维方法适用于数据集市 | 不适用 |
形成出发点 | 很大程度根据需求形成 | 启发式 |
实体关系 | 实体之间相互不对等(一些实体需要自身专门处理) | (只考虑数据模型)实体之间平等 |
服务需求对象 | 数据结构是根据部门的特殊需求建立,不能转为数据仓库,不可重用,不灵活 | 为一个非常大的群体服务,对任何一个需求集,性能和便捷性都不是最优 |
数据特点 | 紧凑和综合 | 粒度化 |
参考书籍
[1] 《数据仓库》William H.Inmon著,王志涛等译,机械工业出版社。