您的位置:首页 > 其它

数据仓库基础三,设计数据仓库

2006-08-22 14:42 253 查看
建造数据仓库重要有两部分:与操作型系统接口的设计和数据仓库本身的设计。数据仓库的需求只有在已装载部分数据并已开始使用时才能弄清楚,
一个过程的开发完全依赖于在上一阶段获得的结果。首先,载入一部分数据供DSS分析员使用和查看。然后根据最终用户的反馈,修改数据和/或添
加其他数据。这种反馈过程贯穿于数据仓库的整个开发生命周期之中。
因此,数据仓库的设计不能采用与传统的需求驱动的相同的方法进行。但与此同时,需求预测仍然是十分重要的。实际情况通常介于两者之间。

1、从操作型数据开始
将数据从操作型环境移入到数据仓库环境不是简单的抽取,其中拥有许多的原因:
1、1通常现有系统数据缺乏集成,建立现有应用时根本没有考虑过以后可能存在的集成问题。每一个应用都拥有自己特殊的需求,可能会出现下列情况:
a、如一些相同的数据以不同的名字出现在各个地方。
b、一些不同的数据在不同的地方以相同的方式标注。
c、这里的数据不在其他地方出现。
d、一些数据用相同的名字存在相同的地方却使用不同的度量单位。
1、2 从操作型环境到数据仓库有三种装载工作要做:装载档案数据、装载在操作型系统中的现有数据、将操作型环境中的更新反映到数据仓库环境中。前两种都较为简单,第三种最为复杂。
(1)装载档案数据通常难度不大,一是因为不少企业认为旧数据价值不高,而不做这项工作,二是即使难度大,毕竟只有一次。
(2)同样装载在操作型系统中的现有数据难度也不大。
(3)将操作型环境中的更新反映到数据仓库环境中是最为困难的,要有效地捕捉到那些不断发生的日常变化,并对之进行处理并非是一件容易的事。于是,扫描现有系统的文件成了数据仓库体系结构设计者要面对的主要问题。通常可以采用五种技术:
a、扫描在操作型环境中那些被打上时间戳的数据。当一个应用记录的最近一次变化或更新打上时间戳时,数据仓库就能有效扫描必要的数据,然而当前打上时间戳的数据很少。
b、扫描增量文件,增量文件只包含在操作型环境中运行的事物的结果对应用造成的改变。同样,很少应用创建增量文件。
c、对日志文件或审计文件进行扫描,日志文件所包含的内容与增量文件基本相同。利用日志文件的一个困难是他是针对系统用途构造的,而不是针对应用程序的,另一个困难是其中包含的内容太多了。审计文件拥有同样的缺点。使用日志文件来更新数据仓库的一个例子是基于网络的电子商务环境所创建的网络日志。
d、修改应用程序代码,一般不可用,因为代码通常都很陈旧。
e、最后一种(通常也是最可怕的一种),是将一个“前”映像文件与“后”映像文件进行比较。使用这种方法时,一开始抽取时就建立一个数据库的快照,进行另一轮抽取时,再建立一个快照。然后将两个快照进行对比,得到更新后的数据。
1、3 数据从操作型环境到数据仓库时要经历时基变化。现有的操作型数据通常是当值数据。当前值数据在被访问的时刻是准确有效的,而且是可更新的。
但是数据仓库中的数据是不能更新的,此外这些数据必须附加上时间元素。当数据从操作型环境到数据仓库时,其处理方法也要发生很大改变。
1、4 数据从操作型环境到数据仓库时,需要对数据仓库中已有的及要传入数据的规模进行管理。数据在抽取和进入到数据仓库时都要进行压缩。

2、数据/过程模型与体系结构化环境
过程模型仅仅适合于操作型环境,数据模型既适合操作型环境,也适合数据仓库环境。因为过程模型是需求驱动的,它假设在详细设计开始之前需求是已知的,而这样的假设不适合数据仓库的建立。

3、数据仓库与数据模型
数据模型既适用于现有系统环境也适用于数据仓库环境。
(1)当从现有的企业数据模型进行转换以应用于操作型数据模型时,基本上等价,只需加上额外的性能考虑即可。
(2)当从现有的企业数据模型进行转换以应用于数据仓库数据模型时要做相当多的变动。
a、去掉纯操作型数据。
b、在关键字中加入时间元素。
c、合适之处增加导出数据。
d、创建人工关系。
e、进行稳定性分析,根据各个数据属性是否经常变化的特性将这些属性分组,例如根据稳定性的需求不同将一个大的通用用途的表分拆成三个表,
很少变化的属性放到一个表,不时变化的属性放到一个表,经常变化的属性又放到一个表,三个表拥有同样的关键字。
3、1数据仓库的数据模型
数据建模分为三个层次:高层建模(ER图,实体关系图)、中间层建模(DIS,数据项集)、底层建模(物理模型)。
(1)高层建模
高层建模以实体和关系为特征,实体处于最高抽象层,由“集成范围”这个术语表示的内容来决定哪些实体属于模型范围。集成范围定义了数据的边界,而且集成范围需在建模之前进行定义。这个范围由系统的建模者、管理人员和最终用户共同确定。如果范围没有预先确定,建模过程就很有可能一直持续下去。写出来的集成范围应该尽量简短,而且应该使用业务人员可以理解的语言。 企业ER图是由反映不同用户观点的ER图构造而成的,表示了各个DSS群体已知需求的这些ER图是通过用户观点讨论会的方法建立起来的,也就是通过 与各个不同部门中合适的工作人员交流得来的。
(2)中间层数据模型
对高层数据模型中标识出来的每个主要主题域,或实体都要建立一个中间层模型。
在中间层数据模型上,有四个基本的构造:主要数据分组、二级数据分组、连接器,表示两个主要数据分组之间的数据关系、数据的“类型”。
a、每个主要主题域有且只有一个主要数据分组,其中包含了对每个主题域只存在一次的属性。
b、二级数据分组包含对每个主题域可以存在多次的属性,从主要数据分组到二级分组由连接器关联。
c、连接器用来将一个分组的数据和另一个分组的数据联系起来,对应于ER模型中的关系。
d、数据的“类型”是指对数据的更详细的划分,如银行活动包括:存款和提款。
(3)物理数据模型
他是从中间层数据模型创建而来的,建立物理模型只需扩展中间层模型,使模型中包含有关键字和物理特性就可以实现。其中物理特性设计需包括:
a、确定数据的粒度和分区。当然关键字结构得发生改变,以便能加入与每一个数据单元都相关的时间元素。
b、数据库设计者需要在物理上组织好数据、保证执行一次物理I/O能够返回最大数量的记录。
c、因为数据仓库中的数据一般不更新,可以考虑一些在经常更新情况下不能使用的物理设计。

4、数据模型与迭代开发
4、1 迭代开发的重要性:
(1)业界成功的记录强烈地建议这样做。
(2)最终用户在第一遍迭代开发完成以前不能清晰的提出需求。
(3)只有实际结果切实而且明确时,管理部门才会作出充分的承诺。
(4) 必须能很快地见到可见结果。
4、2数据模型在迭代开发期间的作用。
(1)数据模型在每一遍开发中都起着路标的作用,在开发结束时,所有遍次的开发结果融合在一起。
(2)当不同遍次的开发是基于不同的数据模型或没有数据模型时,会产生众多的重复工作,且缺乏一致性。

5、规范化/反规范化(常规/非常规)
数据建摸过程的输出是一系列表,每个表都包含关键字和相关的属性。常规的输出是大量的表,每个表拥有少量的数据,但是从性能上考虑
会是一个大问题,动态连接需要大量的I/O 。
(1)考虑将这些表在物理上进行合并,使得I/O代价最小化,从而提高性能。
(2)考虑创建一个数据数组,这样如果数据存放在一行中,那么一次I/O就足以检索到了。通常当数列中值的数量稳定、数据是按顺序访问的、
数据的创建与修改在统计上是以非常有规律的方式进行等条件都满足时,创建一个数组才是有意义的。
(3)考虑引入冗余数据,数据元素(通常是描述信息)有意识地存放到可能要用到它的多个表中。
(4)考虑对数据做进一步的分离工作,根据访问概率的差别将规范化的表拆分成多个表。
(5)考虑为导出数据建立相应的字段,这样数据只要计算一次,将来需要时只要访问那个字段就好。
(6)考虑建立创造性索引或创造性简要记录,创造性索引是当数据由操作型环境转移到数据仓库环境时建立起来的,因此开销并不很大。创造性
索引为最终用户感兴趣的项目建立一个概要文件,例如最大宗的购买、最不活跃的帐户、最近的发货等等。如果能够预测出对管理有意义的需求,
那么在数据传送到数据仓库时建立创造性索引就很有意义了。
(7)在数据仓库环境中,参照完整性以“人工关系”的方式出现,因为:
数据量很大、数据是不更新的、按照时间描述数据、关系不是静态不变的。

6、数据仓库与快照
数据仓库内部以一种称之为“快照”的数据结构为中心来组织。数据仓库中的数据记录是某一时刻生成的快照,包含多种数据类型,通常包括:
时间、关键字、非关键字的主要数据、二级数据。
6、1 快照生成的时刻,快照是因为一些事件的发生而生成的
(1)一类事件是对离散活动信息的记录,例如填写支票、打电话、收到货物等。在离散活动的情况下,一般是出现了一些业务活动需要记录下来。
总之离散活动是随机发生的。
(2)另一种快照触发器是时间,这是一种可预期的触发器,如一天的结束、一周的结束、一个月的结束。
6、2 由事件触发的快照有四个基本的组成部分:
(1)关键字(KEY)
关键字可以唯一也可以是不唯一的,通常是复合关键字,用来识别记录和主要数据。
(2)时间单元
时间单元通常是指快照所描述事情发生的时刻,有时,时间单元指的是捕获数据的时刻。(在有些情况下,会对事情发生的时刻和捕获时间信息的
时刻加以区别,而在有些情况下则不对它们进行区别。)在由时间推移触发事件的情况下,时间元素可以暗含于而不是直接附于快照中。
(3)只与关键字相关的主要数据
主要数据是与记录的关键字直接相关的非关键字数据。例如,假设关键字标识产品的销售,时间元素描述的是销售活动终结的时刻,主要数据描述的是销售什么产品以及销售的价格、条件、地点和代理等。
(4)作为快照一部分而被捕获的但与主要数据和关键字都无直接关系的二级数据。这部分是可选的。如果存在二级数据的话,它们表示快照记录创建时捕获的外来信息。如与销售相关的二级数据是关于被售产品的一些附带信息。将来可能会在DSS处理过程中使用到的任何附带信息都可以加入到数据仓库记录中去。

7、元数据
元数据是数据仓库的一个重要组成部分,他是关于数据的数据,元数据与指向数据仓库内容的索引相似,处于数据仓库的上层,并且记录数据仓库中对象的位置。一般,元数据存储记录了以下内容:
(1)程序员所知道的数据结构。
(2)DSS分析员所知道的数据结构。
(3)数据仓库的源数据。
(4)数据进入数据仓库时发生的转换。
(5)数据模型。
(6)数据模型和数据仓库的关系。
(7)抽取数据的历史记录。

8、数据仓库中的参照表管理
主要有两种极端的方法:
(1)每隔一段固定的时间对参照表生成一个快照。
(2)在某一时间点上,对参照表生成一个快照,并且同时收集一年中所有对参照表的活动
两种方法在意图上是完全相反的。第一种较简单,但是在逻辑上不完备。第二种较复杂,但是却有逻辑上的完备性。实际应用可能会在两者之间均衡考虑。

9、数据周期---时间间隔
所谓数据周期是指从操作型环境中的数据发生变化起,到这个变化反映到数据仓库中所用到的时间。通常,数据周期应该不低于24个小时,因为:
(1)操作型环境与数据仓库环境结合得越紧密,那么所需技术也就越昂贵越复杂。
(2)一个更有说服力的原因是:时间间隔给环境附加了一个特殊的限制。间隔24小时,使得不必要在数据仓库环境中做更新处理;也不必在操作型环境做数据仓库处理,间隔如果太短了可能会达不到这种效果。时间间隔的一个好处是能够保证在转入到数据仓库之前,数据可以达到稳定。数据在进入数据仓库之前的调整十分简单。而如果数据被送到数据仓库中之后,一旦发现必须对这些数据进行调整,就必须在操作型环境和数据仓库中同时调整。

10、转换和集成的复杂性。
10、1 数据从操作型环境到数据仓库的传递需要完成以下功能:
(1)从操作型环境到数据仓库环境的数据抽取要实现技术上的变化。这种变化不仅指一种DBMS的变化,还可能包含源于操作系统的变化,硬件的变化,甚至源于基于硬件的数据结构的变化。
(2)要求尽量避免从在线窗口进行数据抽取。
(3)来自于操作型环境中的输入关键字在输出到数据仓库之前往往需要被重建和转换。简单情况下可能需要加入时间。
(4)非关键字数据在从操作型环境转移到数据仓库环境时要重新格式化。例如日期格式的转换。
(5)要进行数据清理以保持输入数据的正确性。数据清理常用形式有:取值范围检查、交叉记录检验、以及简单的格式检验。
(6)因为存在多个输入数据源,当其中的数据传入到数据仓库时要进行合并。
(7)当存在多个输入文件时,进行文件合并之前要先进行关键字解析。如果不同的文件采用不同的关键字结构,那么,完成文件合并的程序必须提供关键字解析功能。
(8)当存在多个输入文件时,这些文件的顺序可能不相同。在这种情况下需要对输入文件进行重新排序。
(9)可能会产生多个输出结果,同一个数据仓库的创建程序可能会产生不同综合层次的结果。
(10)需要提供缺省值。有时候数据仓库的一个输出值没有对应的数据源,这是,必须提供缺省值。
(11)为抽取过程选择输入的数据时,其效率通常是一个问题。考虑一个情况:在刷新时,我们无法将需要抽取的操作型数据和不需要抽取的操作型数据区别开来,这样就必须读取整个文件,会导致在线环境一直处于忙碌状态,进而挤掉其它的处理活动。
(12)经常需要进行数据的汇总。多个操作型记录被合成单个简单的记录,那些需要汇总的详细的输入记录必须进行正确的排序。当把不同类型的记录汇总为一个数据仓库记录时,必须对这些不同输入记录类型的到达次序进行协调,以便产生一个单一记录。
(13)在数据元素从操作型环境转移到数据仓库的过程中,应该对数据元素的重命名操作进行跟踪。
(14)需要读取的输入记录常常具有不常见的或非标准的格式,必须读取很多的输入类型,在进入数据仓库时必须要对它们进行转换:定长记录、
变长记录、出现不定、重复子句等必须进行转换。但是必须指定转换逻辑,转换机制(转换前后看上去应该是什么样子)。
(15)必须理解并弄清楚建立在旧的传统程序逻辑中的数据之间的关系,这样这些文件才可以用来作为输入。而这些关系常常是深奥难懂的,没有可供参考的文档资料。但是当数据转移到数据仓库时,必须弄清楚这些关系。
(16)必须要进行数据编码的转换,如EBCDIC到ASCII的转换(或反过来)。
(17)数据仓库的设计必须符合企业的数据模型。
(18)当数据从操作型环境转移到数据仓库中,可能需要加入时间元素。
(19)必须考虑将要进入数据仓库的新创建文件的输出问题。/
10、2 抽取/转换/装载工具(ETL)的出现,通常分为两类:
产生源代码的软件和产生参数化的运行时模块的软件。产生源代码的软件比运行时软件要强大,它可以以原有数据的格式对它们进行访问,而运行时软件则需要首先对原有数据格式进行统一。进行了统一之后,运行时模块就可以访问原有数据。不幸的是,对原有数据格式进行统一的过程颇费心思。在任何情况下,ETL软件都可以使得转换、重新格式化、从多个传统操作型数据源中集成数据的过程自动进行。

11、数据仓库记录的触发
引起数据仓库的数据载入的基本的业务活动可以称为“事件/快照”交互。在这种事件/快照交互中,某个事件触发了数据的一个快照,然后这个快照被移到数据仓库环境中。
11、1 事件
引发快照的业务事件可能是一个重要活动的发生,如:进行一次销售。也可能是规律性的时间推移标志,如一天的结束。业务活动引起的事件是随机的,而由时间推移所触发的事件则不是随机的,与时间相关的快照的建立是有规律的并且是可以预知的。
11、2 快照的构成
(1)标志事件发生的时间单元。
(2)标志快照的关键字。
(3)与关键字相关连的主要、非关键字数据。
(4)是在形成快照时偶然捕获并被置入快照中的数据。
11、3 一些例子
(1)每当一个顾客搬迁(地址发生改变)时,数据仓库就会相应改变,而且一个连续的顾客历史记录就会写入数据仓库。
(2)考虑保险公司的保险金支付业务。假设保险金按每半年支付一次,那么,每隔六个月,就会在数据仓库中创建一个快照记录,用来描述保险金的支付情况,包括支付时间、支付金额。
(3)当数据量不是太大,数据稳定,并且需要详细记录历史时,通过存储已发生的每次活动的详细情况,数据仓库可以跟踪每一件业务事件。

12、简要记录
(1)简要记录是把操作型数据中的许多不同的、详细的记录组合在一起形成一条记录。一个简要记录以聚集的形式代表了许多条操作型记录。
(2)与单个活动记录那样,简要记录也代表了数据的快照。二者之间的区别是:数据仓库中的单个活动记录代表了一个单一的事件,而简要记录代表的则是多个事件的聚合。
(3)如电话公司可能在月底整理用户在本月所有的电话业务,把这些业务聚集在数据仓库中的一个单一的用户记录中。这样,就创建了一个代表性记录,该记录反映了该用户在一个月之内的所有电话业务。
(4)将操作型数据聚集形成一条数据仓库记录的过程可以采取多种形式,如:
a、可以对操作数据的数据单元进行计数,以便找出单元的总数。
b、可以对操作数据的的取值进行汇总。
c、可以对数据单元进行一些处理,以找出最高值、最低值、平均值等。
d、可以捕获第一个或最后一个事件。
e、对于某些数据,可以量度出处于给定的几个参数界限之内的数据。
f、可以捕获在一段时间内有效的数据。
g、可以捕获最老的数据和最新的数据
(5)建立简要记录有另一个非常吸引人的好处,就是为最终用户的访问和分析提供了一种紧凑的、方便的数据组织形式。

13、管理大量数据
在许多情况下,数据仓库中需要进行管理的数据的规模是个重要问题。建立简要记录是管理数据量的一种有效技术。
(1)建立简要记录能够(通常)使数据量降低2~3个数量级,但是这样会使数据仓库丧失一些能力或功能。
a、由于进行了数据聚集,因此丢失了一些细节数据,但是有时细节数据的丢失并不是坏事。这要求设计者必须能够保证,丢失的细节数据对利用该数据仓库进行决策支持分析人员来将是无关紧要的。
b、设计人员保证所丢失的细节并不特别重要的第一道防线(最简单有效的)就是迭代地建立简要记录。这样,设计人员在做出修改时,就具有一定的灵活性。上一遍的简要记录内容设计为这一遍的设计提供依据。
(2)为了保证重要细节在简要记录的创建过程中不被永久丢失,可以在建立简要记录的同时建立历史细节的备用层。

14、创建多个简要记录
根据相同的细节可以创建多个简要记录。在电话公司的例子中,单个通讯记录可以用来创建顾客简要记录、地区通信量简要记录、线路分析简要记录。
(1)简要记录可以放入数据仓库,也可以放入以数据仓库为数据源的数据集市。
(2)将操作型记录聚集成一条简要记录的过程通常是在操作型服务器上完成的。这是因为操作型服务器大到能管理大量的数据,而且在任何情况下,这些数据都驻留于服务器上。一旦建立快照的过程变得十分复杂冗长时,就应该考虑是否有必要建立快照。
(3)为简要记录而记载的元数据记录与为单一活动快照而记载的元数据记录非常相似。不同的是,聚集记录的过程成为一条重要的元数据。

15、从数据仓库环境到操作型环境
某些时候,存在从数据仓库环境到操作型环境的数据回流。

16、数据仓库数据的直接访问
由操作型环境到数据仓库数据的直接访问要注意以下限制:
(1)从响应时间的角度来考虑,这个请求必须能够忍受冗长的响应时间,这意味着请求数据仓库数据的操作型处理决不具有在线特性。
(2)对数据的请求必须是最小量的。
(3)管理数据仓库所用到的技术必须与管理操作型环境所用到的技术一致,如协议。
(4)从数据仓库取得的、准备传输到操作型环境的数据必须不做或很少的格式化。

17、数据仓库数据的间接访问
由于诸多限制,通常直接访问较少,但是间接访问则是另一回事。事实上,数据仓库的一个最有效的应用就是操作型环境间接访问数据仓库的数据。
常见例子有:
17、1 航空公司的佣金计算系统。
考虑旅行社代表客户与航空公司进行订票服务,航空公司需进行一个最佳佣金的计算。而最佳佣金的计算需要考虑当前的预定情况和历史情况。
当前的预定情况提供了目前飞机票的预定情况,而历史情况则提供了过去一段时间的订票情况。从二者之间可以计算出一个最佳的佣金。
考虑到实际情况,航空公司采用离线方式完成佣金计算和航班历史分析,离线计算和分析以周期性的方式进行,并创建一个小的易于访问的航班
状态表。这样,当航空公司与旅行社交互时,很容易查阅当前订票情况和航班状态表。
17、2零售个性化系统
当顾客与零售商销售代表进行电话咨询时,销售代表需要能够立即查询到顾客的个性化信息,如上次购物的日期,上次购物的类型,市场分析/市场
类别信息。这个信息通常可以由数据仓库环境的一个后台分析程序提供,后台分析程序通常定时运行以提供相关信息。
17、3信用审核
银行/金融领域中的通常需要进行信用审核过程,用来确定一个顾客是否有资格获得贷款的一种审核过程。信用审核过程依赖于数据仓库,需要对顾
客的各个方面进行调查,例如:偿还历史、全部收入、全部开销、其他的无形资产。 为了提供该功能,需要编写一个分析程序,这个分析程序定期运行,根据用户在数据仓库中的数据提供一个预先审核过的文件,该文件包括顾客必要的各方面信息。

18、数据仓库数据的间接使用
由一个程序对数据仓库进行定期的分析,以检验相关的特征和标准。这种分析过程将在在线环境中产生一个小文件,其中包括了有关企业方面的简明信息。这样这个小文件就能够有效的被操作型环境利用。
间接使用数据仓库的数据需考虑以下因素:
(1)分析程序:
a、拥有许多人工智能的特征。
b、可以运行在任何可用的数据仓库中。
c、在后台运行,这样时间就不是一个大问题。
d、程序的运行与数据仓库发生变化的速度一致。
(2)周期性刷新:
a、不是经常运行。
b、以一种替代模式操作。
c、从支持数据仓库的技术传送数据到支持操作型环境的技术。
(3)在线预分析数据文件:
a、每个数据单元仅仅包含少量的数据。
b、总体上可以包含大量的数据。
c、准确地包含了在线处理人员所需要的东西。
d、不被修改,但是以批量方式周期性更新。
e、是在线高性能访问环境的一部分。
f、访问效率高。
g、适合访问单个数据单元,而不是大量数据。

19、星形连接
在数据仓库技术中经常提到的一种不同于数据库设计方法是多维方法。这种表需要星形连接、事实表和维度表。多维方法通常于适合于数据集市,
而不适合数据仓库。因为数据仓库是根据企业信息需求而创建的,因此对于数据仓库建立星型连接将是一个错误,因为这样最终结果是数据仓库
在牺牲所有其他群体利益的代价中对一个群体实现了最优。 用来管理载入数据集市中某个实体的大量数据的设计结构被称为“星型连接”。 在星型连接中,通常文本数据与数值数据是分离开的。文本数据通常出现在维度表中,数值数据通常出现在事实表中。

20、支持ODS(操作型数据存储)
数据仓库中的数据在分析过之后,被定期地放置到ODS中。传送到ODS中的数据都是概要数据,也就是说这些数据概括了不同数据的实际出现情况。

21、小结
数据仓库始于数据模型。企业数据模型用于操作型环境设计,而修改后的企业数据模型用于数据仓库。数据仓库以一种反复进行的方式建造。无
法事先预知数据仓库的需求。数据仓库的建立以一种与传统操作型系统完全不同的开发生命周期进行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: