数据仓库学习笔记一

数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持管

理人员的决策。

1 主题:数据仓库学习笔记一

图1

传统的操作型系统是围绕公司的应用进行组织的。对一个保险公司来说,应用问题可能
是汽车保险、健康保险、人寿保险与意外伤亡保险。公司的主要主题范围可能是顾客、保险
单、保险费与索赔。

2 集成

图2

数据仓库学习笔记一

数据仓库的第二个显著特点是集成的。在数据仓库的所有特性之中,这是最重要的,当数据进入数据仓库时,要采用某种方法来消除应用问题中的许多不一致性。例如,在
图2 - 2中,考虑关于“性别”的编码,在数据仓库中是编码为m / f还是1 / 0并不重要,重要的是,
无论什么原始应用问题,无论数据仓库如何进行编码,在数据仓库中应该一致地进行编码。
如果应用数据编码为X / Y,当其进入数据仓库时就要进行转换。对所有的应用设计问题都要考
虑同样的一致性处理,比如命名习惯、键码结构、属性度量以及数据特点等。

3 非易失性

图3

数据仓库学习笔记一

表示了操作型数据正规地是一次访问和处理一个记录。可以对操作型环境中的数据

进行更新。但数据仓库中的数据呈现出非常不同的特性。数据仓库的数据通常是一起载入与
访问的,但在数据仓库环境中并不进行一般意义上的数据更新。

4 随时间变化

图4

数据仓库学习笔记一

数据仓库的最后一个显著特性是其随时间的变化性。如图2 - 4所示。数据仓库中的数据随
时间变化的特性表现在以下几个方面:
■ 数据仓库中的数据时间期限要远远长于操作型系统中的数据时间期限。操作型系统的
时间期限一般是6 0~9 0天,而数据仓库中数据的时间期限通常是5~1 0年。
■ 操作型数据库含有“当前值”的数据,这些数据的准确性在访问时是有效的,同样当
前值的数据能被更新。而数据仓库中的数据仅仅是一系列某一时刻生成的复杂的快照。
■ 操作型数据的键码结构可能包含也可能不包含时间元素,如年、月、日等。而数据仓
库的键码结构总是包含某时间元素。

数据仓库的结构

图5

数据仓库学习笔记一

第1天到第n天的现象

图6

建立数据仓库不是一蹴而就的。相反,数据仓库只能一次一步地进行设计和载入数据,
即它是进化性的,而非革命性的。突然建立一个数据仓库的费用、需要的资源和对环境的破
坏,都表明数据仓库的建立要采用有序地反复和一次一步的方式。
图2 - 1 0说明一个建立数据仓库的典型过程。第1天,通晓本质上进行操作型处理的几个系
统。第2天,对数据仓库中第一个主题领域的最初几个表载入数据,此时就会产生一定的好奇
心,用户开始发现数据仓库和分析处理。
第3天,更多的数据载入数据仓库,并且随着数据量增大,将吸引更多的用户。一旦用户
发现有较容易载入的集成数据源,并有在时间维上观察数据的历史基础,这就不仅仅是好奇
心了。大约此时,认真的D S S分析员渐渐地被吸引到数据仓库中。
第4天,随着更多的数据载入数据仓库,一批存储在操作型环境的数据被适当地放入数据
仓库中。现在,我们就“发现”数据仓库是可用来进行分析处理的信息源。各种各样的D S S
应用出现了。的确,伴随着现在存入数据仓库的大规模数据,此时开始出现如此多的用户和
如此多的处理请求,以致于一些用户进入数据仓库的要求和分析工作被推迟。进入数据仓库
的竞争成为使用数据仓库的障碍。
第5天,部门数据库(数据集市,或O L A P )开始兴起,各部门发现通过把数据从数据仓库
输入它们自己的部门处理环境,会使它们的处理既便宜又容易。到达部门级的数据吸引着一

些D S S分析员。
第6天,部门系统出现繁忙,得到部门数据比获得数据仓库的数据更便宜、更快、更容易。
很快最终用户就放弃数据仓库的细节,去进行部门处理。
第n天,这种体系结构得到充分发展。生产系统的原始集合中只剩下操作型处理。数据仓
库具有丰富的数据,并有一些数据仓库的直接用户和许多部门数据库。因为在部门级上获得

处理所需要的数据既容易又便宜,所以大部分D S S分析处理都在部门级进行。
当然,从第1天到第n天的进化需要很长的时间,通常需要几年。并且在从第1天到第n天
的处理过程中,D S S环境在不断地提高和职能化。


数据库--粒度

图7数据仓库学习笔记一

粒度问题是设计数据仓库的一个最重要方面。粒度是指数据仓库的数据单位中保存数据的
细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。
数据的粒度一直是一个设计问题。在早期建立的操作型系统中,粒度是用于访问授权的。
当详细的数据被更新时,几乎总是把它存放在最低粒度级上。但在数据仓库环境中,对粒度
不作假设。图2 - 11说明了粒度问题。
在数据仓库环境中粒度之所以是主要的设计问题,是因为它深深地影响存放在数据仓库
中的数据量的大小,同时影响数据仓库所能回答的查询类型。在数据仓库中的数据量大小与
查询的详细程度之间要作出权衡。

粒度的一个例子
图2 - 1 2表示了粒度问题的一个例子。左边是一个低粒度级,每个活动(在这里是一次电话)
被详细记录下来,数据的格式如图所示。到月底每个顾客平均有2 0 0条记录(全月中每个电话
都记录一次),因而总共需要40 000个字节。
该图的右边是一个高粒度级。数据代表一位顾客一个月的综合信息,每位顾客一个月只
有一个记录,这样的记录大约只需2 0 0个字节,记录的格式如图所示。
显然,如果数据仓库的空间很有限的话(数据量总是数据仓库中的首要问题),用高粒度级
表示数据将比用低粒度级表示数据的效率要高得多。
高粒度级不仅只需要少得多的字节存放数据,而且只需要较少的索引项。然而数据量大
小和原始空间问题不是仅有的应考虑的问题。为了访问大量数据,其处理能力的大小同样也
是应考虑的一个因素。
所以,在数据仓库中数据压缩非常有用。当数据被压缩后就会大大节省所用的D A S D存储
空间,节省所需的索引项,以及节省处理数据的处理器资源。
但是,当提高粒度级时,数据压缩就会出现另一个问题,图2 - 1 3表示作出的选择。
在图2 - 1 3中,当提高数据粒度级时,数据所能回答查询的能力就会随之降低。换句话说,在一个
很低的粒度级上你实际可以回答任何问题,但在高粒度级上,数据所能处理的问题的数量是有限的。

图8

数据仓库学习笔记一