该系列博文为《数据仓库 Building the Data Warehouse》一书的读书笔记,笔者将书中重点内容进行概括总结。大致保留书中结构,一部分根据自己的理解进行调整。如发现问题,欢迎批评指正。
《数据仓库》读书笔记:第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著,王志涛等译,机械工业出版社。