该系列博文为《数据仓库 Building the Data Warehouse》一书的读书笔记,笔者将书中重点内容进行概括总结。大致保留书中结构,一部分根据自己的理解进行调整。如发现问题,欢迎批评指正。

章节

博文

1

《数据仓库》读书笔记:第1章 决策支持系统的发展

2

《数据仓库》读书笔记:第2章 数据仓库环境

3

《数据仓库》读书笔记:第3章 设计数据仓库

4

《数据仓库》读书笔记:第4章 数据仓库中的粒度

5

《数据仓库》读书笔记:第5章 数据仓库和技术

6

《数据仓库》读书笔记:第6章 分布式数据仓库

7

《数据仓库》读书笔记:第7章 主管信息系统和数据仓库

8

《数据仓库》读书笔记:第8章 外部数据与数据仓库

9


《数据仓库》读书笔记:第9章 迁移到体系结构化环境

10

《数据仓库》读书笔记:第10章 数据仓库和Web


11

《数据仓库》读书笔记:第11章 非结构化数据和数据仓库

12

  待续……


《数据仓库》读书笔记:第5章 数据仓库和技术

  • 1. 数据仓库的技术需求
  • 2. DBMS和数据仓库
  • 2.1 基于事务的DBMS和基于数据仓库的DBMS之间的区别
  • 2.2 多维DBMS和数据仓库
  • 3. 上下文和内容
  • 4. 刷新数据仓库
  • 5. 测试问题
  • 参考书籍


1. 数据仓库的技术需求

  • 管理大量数据的能力

管理大量数据的方法:
① 通过使用处理器存储和磁盘存储中数据灵活的寻址能力;
② 通过建立索引;
③ 通过数据的外延;
④ 通过有效管理溢出数据;
……

管理大量数据选择技术时需要考虑的因素:
① 容量; ② 效率; ③存储和处理的费用。

  • 能够管理各种介质上的数据(数据仓库中的基本技术应该能够解决多种存储介质的问题)

以下介质存取速度,费用逐渐降低:
主存,扩展内存,高速缓存,DASD(直接存储存取设备),磁带,近线存储,光盘,微缩胶片

在多种存储介质上构建数据仓库(双重环境)
① 在线的、交互式处理的DASD(直接存取存储环境);
② 磁带或其他的大容量存储环境。
很多情况下,支持DASD和大容量存储的底层技术不同,因此普遍采用混合技术。

  • 方便地索引和监视数据
    建立索引:方便数据快速方便的访问
  • 大量接口技术
    用各种不同地技术接收和传送数据。应支持批模式和在线模式。
  • 允许设计者/开发者在块/页级别上以一种最佳形式决定数据地物理存放位置
    合理安排调整数据的物理存放位置,提高数据访问效率和更新效率。
  • 能够并行管理数据
    通过数据的并行存储和访问提高性能。
  • 有很好地元数据控制

元数据在数据仓库中比传统操作性环境中更重要的原因:
① 由于服务人群不同,元数据作用不同。操作型数据由IT专业人员使用,元数据几乎被当作事后补记很偶然地使用。数据仓库数据给DSS分析者用,他们没有很高的计算机水平,需要元数据信息;
② 元数据涉及对操作环境和数据仓库之间的映射(转换、过滤、汇总、结构改变等)管理。
③ 数据仓库中数据会存在很长时间,结构可能会随之改变。

业务元数据:对业务人员有用或有价值的元数据
技术元数据:对技术人员有用或有价值的元数据

数据仓库的元数据应包含以下信息
① 数据仓库的表结构,表属性,源数据(记录系统,一般为原始日志等);
② 从记录系统到数据仓库的映射;
③ 数据模型的说明;
④ 抽取日志;
⑤ 访问数据的公用例行程序;
⑥ 数据的定义/描述;
⑦ 数据单元之间的关系。

  • 易操作、稳健的语言接口
    数据仓库应有丰富的语言规定,因此需要易操作,稳健的语言接口访问和操作数据。

数据仓库的语言接口的要求
① 能够一次访问一组数据;
② 能够一次访问一条数据;
③ 满足特定查询支持一个或多个索引;
④ 有SQL接口;
⑤ 能够增/删/改/查数据。

  • 能够高效地装载数据仓库

向数据仓库载入数据的方式:
① 通过语言接口一次载入一条记录;
② 使用工具批量载入。

有效装载大量数据的方法:
① 并行装载(将要装载数据分成几个工作流);
② 数据装载之前进行缓冲处理(数据装载之前先放入缓冲区进行编辑,汇总等操作);

  • 有效地使用索引

高效的索引访问方式:
① 位图;② 多级索引;③ 将部分或全部索引装入内存;④ (允许时)索引项压缩;⑤ 创建选择索引和范围索引。

  • 能够以压缩地方式存放数据
    节省空间,节省IO(解压缩时开销的是CPU)
  • 支持复合关键字
    数据仓库数据的时变特性;
    数仓中数据常见的主键/外键关系。
  • 有效管理变长数据
    变长数据经常更新改变时,会带来严重性能问题。
  • 有选择地开启/关闭锁管理
    加锁确保没有两个或两个以上的用户在同一时刻更新同一条数据;但一直加锁会消耗很多资源。
  • 能进行只涉及索引的处理
    有时,只查看索引,不查看数据的最初数据源就可以满足某些请求,而且有效。
  • 从大容量存储器迅速恢复
    支持恢复全部或部分数据库(需要自动侦测损坏的数据)
  • 其它技术等
    一些传统的DBMS(数据库管理系统)的技术会阻碍数仓中数据的高效处理,需要有选择的关闭。如:事务完整性;高速缓存;行/页锁定;参照完整性;数据视图;部分块载入等。

2. DBMS和数据仓库

2.1 基于事务的DBMS和基于数据仓库的DBMS之间的区别

基于事务的DBMS

(Database Management System数据库管理环境)

基于数据仓库的DBMS

关注重点

事务和更新的有效执行

有效查询处理以及对装载和存取工作的处理

数据更新方式

必须将记录级的、基于事务的更新作为一个正常的操作部分(只读时也需提供更新和锁定开销)

数据一旦装载,通常不更新,如果更正也是在数据仓库没有分析操作的空闲时间,改变也是通过加入一个当前数据快照完成

物理块级上对基本数据的管理

对数据在块级上的管理需要包括一些附加空间,用于以后更新和插入数据时块的扩展

不需要自由空间(数据一旦载入,不需要更新)

索引

限制在有限数据量的索引(当有数据更新和插入时,索引本身需要空间和数据管理)

能够应用更稳健和更完善的索引结构(有必要对数据访问进行优化,也有多种索引的比要和机会)

数据在物理上优化(以适应不同类型的访问)的对象

只针对事务访问对数据进行优化

针对DSS(Decision Support System)访问和分析在物理上对数据进行优化

改变DBMS技术的可行性

在事务处理过程中改变DBMS技术不可行

改变数据仓库DBMS可行(首次载入数据的DBMS技术不一定适用,数据增长,数据的使用增加,等原因导致需要考虑新的DBMS技术。技术难点:改变DBMS的转换程序)

2.2 多维DBMS和数据仓库

  • 数据仓库和多维DBMS的区别

数据仓库

多维DBMS(OLAP

有大量数据

数据比数据仓库中少的多

只适于少量的灵活访问

适合大量的不可预知的数据访问和分析

存储了很长时间范围内的数据

只存储较短时间范围内数据

只允许分析人员以受限的形式访问数据

允许自由的访问

  • 多维DBMS和数据仓库的联系
    互补关系
    将二者结合,可以在多维DBMS中高效操作,同时向下钻取到最低层次的细节数据,数据存放时长也互补。
    依存关系
    通常,数据仓库作为流入多维DBMS的数据的基础,即从数据仓库中抽取详细数据的一个子集并经过必要的聚集存储到OLAP存储器中供前端分析工具读取。
  • 多维DBMS的技术基础
    ① 关系模型;
    ② 多维立方体(立方体基础/OLAP基础)建立在能优化“切片和分块”的数据基础上。
  • 从长期应用角度论证以数据仓库和数据集市为基础构建多维DBMS的必要性

考虑以下两条数据处理流:

应用程序–>数据仓库的当前细节级 --> 集成转换 --> 多维DBMS数据集市
历史应用程序数据 --> 多维DBMS数据集市
众多多维DBMS直接从历史应用程序获取数据的问题:
① 抽取数据,维护所需开发量巨大,所需硬件资源很大。(多维DBMS从数据仓库抽取数据时,需要一套集成和转换程序,因此每个部门多维DBMS都需要定制开发自己的抽取,一旦应用改动会影响很多抽取程序,且数据重复传送);
② 每个新的多维DBMS都必须返回传统操作型环境获取自己的数据;
③ 在分析中没有协调分歧的基础(缺乏数据一致性,从历史环境将数据导入多维DBMS过于复杂,无法有效管理元数据);
④ 在不同的DBMS环境中存在大量冗余。

3. 上下文和内容

  • 操作型系统将注意力集中在企业当前数据上;
    数据仓库能够对一段时间内数据进行存储、管理和访问(比如查看历史看到发展趋势)。
  • 需要管理三种级别的上下文信息:
    简单上下文信息
    与上下文信息与数据本身的基本结构有关。常通过字典、目录、系统监视器等进行管理。
    复杂上下文信息
    外部上下文信息
    处于企业之外的,在理解随时间变化的信息方面起重要作用的信息。
  • 捕获管理上下文信息困难的原因:
    ① 复杂上下文和外部上下文信息都是非结构化的;
    ② 上下文信息变化很快,没有固定状态。

4. 刷新数据仓库

  • 刷新数据仓库的方式:(从传统数据库中读取数据对数据仓库进行刷新)
    ① 直接重复读取历史数据
    开销大,传统DBMS必须在线和活动,且相同历史数据会多次传输,刷新会100%扫描整个传统文件。
    ② 变化数据捕获(CDC)
    在传统环境中捕捉正在被修改的数据。通过使用日志磁带来捕获和确定在线过程中发生的变化。

5. 测试问题

  • 操作型环境中一般设置两个并行的环境:生产环境,测试环境。
  • 数据仓库很多情况下根本不需要测试环境,原因:
    数据仓库很大;
    数据仓库的开发生命周期是反复式的,多数时候程序以启发模式运行。

参考书籍

[1] 《数据仓库》William H.Inmon著,王志涛等译,机械工业出版社。