2006 年 07 月 19 日, 星期三
数据仓库,杂记三:数据仓库环境
数据仓库中只有单一集成的数据资源,并且因为数据是可访问的,所以与传统数据环境相比,在数据仓库环境中DSS分析员的工作将要容易得多。
数据仓库是一个面向主题的、集成的、非易失的且随时间变化的数据集合,用来支持管理人员的决策。
数据仓库主要特性包括:
一、面向主题性
传统的操作型系统是围绕公司的应用进行组织的。对一个保险公司来说:
“应用”范围可能是汽车保险、健康保险、人寿保险与意外伤亡保险。
“主题”范围可能是顾客、保险单、产品、事务或活动、帐目、保险费与索赔。
二、数据集成性
当数据进入数据仓库时,要采用某种方法来消除应用问题中的许多不一致性。
例如,考虑关于“性别”的编码,在数据仓库中是编码为m/f还是1 / 0并不重要,重要的是,无论什么原始应用问题,无论数据仓库如何进行编码,在数据仓库中应该一致地进行编码。如果应用数据编码为X/Y,当其进入数据仓库时就要进行转换。对所有的应用设计问题都要考虑同样的一致性处理,比如命名习惯、键码结构、属性度量以及数据特点等。
三、非易失性
数据仓库的数据通常是一起载入与访问的,并不进行一般意义上的数据更新。
四、随时间的变化性
主要表现在以下几个方面:
@数据保存时间。
数据仓库中的数据时间期限要远远长于操作型系统中的数据时间期限,一般是5-10年,而操作型保存60-90天。
@不包含当前值。
操作型数据库含有“当前值”的数据。而数据仓库中的数据仅仅是一系列某一时刻生成的复杂的快照
@包含时间键码。
操作型数据的键码结构可能包含也可能不包含时间元素,如年、月、日等。而数据仓库的键码结构总是包含某时间元素。
数据仓库结构:
数据是由操作型环境导入数据仓库的。相当数量的数据转换通常发生在由操作型级别向数据仓库级别传输过程中。
一旦数据过期,就由当前细节级进入早期细节级。综合后的数据由当前细节级进入轻度综合数据级,然后由轻度综合数据级进入高度综合数据级。
创建数据仓库的过程:
建立数据仓库不是一蹴而就的。相反,数据仓库只能一次一步地进行设计和载入数据,即它是进化性的,而非革命性的。
一般顺序:
1,通晓本质上进行操作型处理的几个系统。
2,对数据仓库中第一个主题领域的最初几个表载入数据,此时就会产生一定的好奇心,用户开始发现数据仓库和分析处理。
3,更多的数据载入数据仓库,并且随着数据量增大,将吸引更多的用户。一旦用户发现有较容易载入的集成数据源,并有在时间维上观察数据的历史基础,这就不仅仅是好奇心了。大约此时,认真的DSS分析员渐渐地被吸引到数据仓库中。
4,随着更多的数据载入数据仓库,一批存储在操作型环境的数据被适当地放入数据仓库中。现在,我们就“发现”数据仓库是可用来进行分析处理的信息源。各种各样的D SS应用出现了。的确,伴随着现在存入数据仓库的大规模数据,此时开始出现如此多的用户和如此多的处理请求,以致于一些用户进入数据仓库的要求和分析工作被推迟。进入数据仓库的竞争成为使用数据仓库的障碍。
5,部门数据库(数据集市,或OLAP )开始兴起,各部门发现通过把数据从数据仓库输入它们自己的部门处理环境,会使它们的处理既便宜又容易。到达部门级的数据吸引着一些DSS分析员。
6,部门系统出现繁忙,得到部门数据比获得数据仓库的数据更便宜、更快、更容易。很快最终用户就放弃数据仓库的细节,去进行部门处理。
n,这种体系结构得到充分发展。生产系统的原始集合中只剩下操作型处理。数据仓库具有丰富的数据,并有一些数据仓库的直接用户和许多部门数据库。因为在部门级上获得处理所需要的数据既容易又便宜,所以大部分DSS分析处理都在部门级进行。
数据仓库设计的主要问题:
1,数据粒度。
2,数据分割。
(一)“粒度”设计:
一、概述
“粒度”是指数据仓库的数据单位中保存数据的细化或综合程度的级别。细化程度越高,粒度级就越小;相反,细化程度越低,粒度级就越大。
“粒度”深深地影响存放在数据仓库中的数据量的大小,同时影响数据仓库所能回答的查询类型。在数据仓库中的数据量大小与查询的详细程度之间要作出权衡。
高粒度级不仅只需要少得多的字节存放数据,而且只需要较少的索引项。服务器处理能力的大小同样也是应考虑的一个因素。
在数据仓库中数据压缩非常有用。当数据被压缩后就会大大节省所用的DASD存储空间,节省所需的索引项,以及节省处理数据的处理器资源以及响应查询的执行时间。但是,当提高粒度级时,数据所能回答查询的能力就会随之降低。换句话说,在一个很低的粒度级上你实际可以回答任何问题,但在高粒度级上,数据所能处理的问题的数量是有限的。
二、粒度默认的“双重级别”
很多时候,十分需要提高存储与访问数据的效率,以及非常详细地分析数据的能力。这就需要多个粒度级而不是一个粒度级的需求。采用双重级别应该是几乎每个机构默认的选择。
通过在数据仓库的细节级上创建两种粒度级, DSS设计者可一举两得。
大部分DSS处理是针对被压缩的、存取效率高的轻度综合级数据进行的。如果什么时候需要分析更低的细节级( 5 %时间或更少的可能),可以到数据的真实档案层。在粒度真实档案层上,访问数据将是昂贵的、麻烦的和复杂的事情,但如果必须进入这一细节级也只得如此。
在数据的真实档案层上,存储的所有的细节来自于操作型环境。在这一层上确实有大量的数据。由于数据量太大,因此有必要将数据存放在如磁带、光盘这样的介质上。
三、“样本数据库”设计--另一种改变数据粒度的方法
样本数据库是数据仓库的一种有趣的、混杂的形式,它只是真实档案数据或轻度综合数据的子集。不能用于一般目的的分析——只能用于统计分析。
在某些情况下(如人口统计分析),样本数据库是非常有用的。但是对使用样本数据库有一些苛刻的限制。除非设计者知道这些限制,否则就不应该创建这种数据库以作为数据仓库的一部分。
样本数据库适用于作统计分析和观察发展趋势。当数据必须以整体观察时,样本数据库能提供非常理想的结果,但决不适用于处理单个的数据记录,因为是抽样组成的数据库
。
样本数据载入:
@它是用一个程序搜寻一个大规模的数据库,选取1 / 1 0 0或1 / 1 0 0 0的记录,然后将这些记录送到样本数据库。于是最终样本数据库的大小将是原先数据库的1 / 1 0 0或1 / 1 0 0 0。
@样本记录的选取一般是随机的,必要时可采用一个“判断样本” (即记录必须达到一定标准才能被选中)
举例:
有一种说法认为进行统计分析会导致错误的结论。现在来看一种情况:当分析员遇到一个大文件,用325 000 000条记录确定5 6 . 7 %上路的汽车司机是男人,而使用样本数据库,分析员用了25 000个记录确定5 5 . 9 %上路的汽车司机是男人。前一种分析比后一种分析需要的资源要大得多,而它们计算出的结论却差别非常非常小。毫无疑问,用大规模数据库进行分析会比较精确,但这种精确的代价实在太高了,尤其在进行启发式处理时,通常要进行循环往复的处理。
权衡判断是否需要创建样本数据库。
(二)“分割”设计
数据分割是指把数据分散到各自的物理单元中去,它们能独立地处理。在数据仓库中,围绕分割问题的焦点不是该不该分割而是如何去分割的问题。
对当前细节数据进行分割的总体目的是把数据划分成小的物理单元。数据分割为什么如此重要呢?因为小的物理单元能为操作者和设计者在管理数据时提供比对大的物理单元更大的灵活性。
分割数据的准确含义是什么呢?当结构相同的数据被分成多个数据物理单元时,数据便被分割了。此外,任何给定的数据单元属于且仅属于一个分割。
有多种数据分割的标准。例如,按: 时间、商业线、 地理位置、 组织单位,以及 所有上述标准。然而,在数据仓库环境中,按日期几乎总是分割标准中的一个必然组成部分。
数据仓库中的数据组织类型:
一、简单堆积结构
数据仓库中最简单最常用的数据组织形式。
如,从操作型环境中取出每天的事务处理,然后综合成数据仓库记录,这个综合可根据顾客、帐目或者任何组织到数据仓库的主题领域来进行。这里的事务处理是以天来
进行综合。换句话说,对一个顾客的一个帐号的每天的所有活动进行合计,并在一天一天的基础上输入数据仓库。
二、轮转综合数据存储
是简单逐日堆积数据的一种变种。
如,数据用与简单堆积结构相同的处理方法从操作型环境输入到数据仓库环境中。只是在轮转综合文件中的数据才被输入到不同的结构形式中。第一周的七天中的活动被逐一综合到七个每日相应的位置,到第八天,将七个每日位置的数据加到一起,并放入第一周的数据位置中。然后,第八天的每日总计加到第一个每日数据位置。
三、简单直接文件
数据仅仅是从操作型环境拖入数据仓库环境中,并没有任何累积。另外,简单直接文件不是在每天的基础上组织的,而是以较长时间为单位的,比如一个星期或一个月。因此,简单直接文件是间隔一定时间的操作型数据的一个快照。
数据仓库系统出版物:
数据仓库系统输出的文档,应回答如下问题:
■ 描述什么是数据仓库。
■ 描述对数据仓库输送信息的源系统。
■ 如何使用数据仓库。
■ 有了问题如何获得帮助。
■ 谁负责什么。
■ 仓库的迁入计划。
■ 仓库数据如何与操作型数据相关联。
■ 如何为D S S使用仓库数据。
■ 什么时候不往仓库中加数据。
■ 仓库里没有什么类型的数据。
■ 可利用的元数据的指示。
■ 记录系统是什么。
审计数据仓库:
可以对数据仓库进行审计,但会遇到如下问题,绝大多数都不对数据仓库进行审计:
■ 原先在数据仓库中没有的数据会突然出现。
■ 当需要审计能力时,数据进入数据仓库的定时会发生急剧变化。
■ 当需要审计能力时,数据仓库的备份和恢复限制会发生急剧变化。
■ 在仓库中审计数据,会使仓库中数据的粒度处在一个非常的级别上。
创建数据仓库成本预算:
要做成本预算分析,必须在创建数据仓库之前就知道数据仓库带来的收益。
但通常情况下,在创建数据仓库时,实际收益是不知道的甚至是无法预测的,因为数据仓库的使用方式完全不同于其他信息系统所构造的数据和系统。有点像“告诉我,你想要的是什么,然后我才能告诉你你真正想要的是什么”这种模式。直到数据仓库的首次循环设计过程完成并可以利用以前, DSS分析员不能真正说出数据仓库的可能性和潜力有多大。一旦DSS分析员插手仓库,他或她就能开始揭示DSS处理的潜力。因此,经典的ROI(投资回报率”英文为Return on Investment)技术不能应用到数据仓库环境中。
幸运的是,数据仓库是渐进式地建立的。第一次循环设计过程能很快完成,并且只需相对较少的费用。一旦数据仓库的第一部分已经建立并载入数据,分析员就能开始研究可能性。只有在这个时候,分析员才能着手证明仓库开发费用的合理性。根据经验,数据仓库第一次循环的设计规模要适中,小到足以建成仓库,大到仓库是有意义的。所以,数据仓库最好一次构造一个小规模的循环设计,并且在仓库开发人员与DSS分析员之间适当而且快速地建立直接反馈回路。此外,这些理由也说明,为什么说若最初设计的数据仓库5 0 %是精确的,那么设计就是成功的。根据仓库开发人员与DSS分析员之间的反馈回路将不断地修改现有的仓库数据,并向仓库中追加其他新数据。
过期数据仓库里的数据:
数据并非只是注入数据仓库,它在数据仓库中也有自己的生命周期。到了一定时候,数据将从仓库中清除。
主要有以下几种方式:
■ 数据加入到失去原有细节的一个轮转综合文件中。
■ 数据从高性能的介质(如DASD)转移到大容量介质上。
■ 数据从系统中实际清除。
■ 数据从体系结构的一个层次转到另一个层次,比如从操作型层次转到数据仓库层次。
系统报表输出环境对比:
