论文部分内容阅读
数据库满足了人们对数据,特别是日常业务数据存储的需求;数据仓库满足了人们合理地组织加工业务数据并由其上升到决策信息的需求;而在快速变化要求迅速反映的时代,高质量的决策信息要求数据仓库的高度有效性,这就进一步反映到对数据仓库维护过程的要求。数据仓库中包含着从各种独立自治的数据源中抽取出来的信息,他其中的数据也必须被更新以反映数据源中数据的变化,面对如此大量的数据,采用完全重载的方法显然是不可行的,因而有必要提出一种高效的增量式维护的方法,也就是只将数据源中发生变化的数据捕获并刷新到数据仓库中。建立在数据仓库上的一些应用,如OLAP分析和数据挖掘等,通常会涉及到大批量数据的检索,为了能够提高查询的效率,在数据仓库中会建立一定数量的实视图,用以预先存储某些使用率较高或计算较复杂的查询的结果,或者其他查询可利用的中间结果。但实视图毕竟是建立在数据源表基础上的,为了正确反映数据源表的变化,需要对实视图进行维护。作为数据仓库维护的重要组成部分,实视图的维护也有必要建立在增量维护的基础上。实视图虽然在数据仓库中有不可替代的重要性,但它与数据仓库中的其他对象和其他交互模块共同构成一个有机的整体,因而对数据仓库维护的讨论就不能够局限于实视图。本文提出了一个实现数据仓库增量维护的体系框架,它将不局限于实视图的维护,而涉及到了一个数据仓库系统运行的整个过程,包括对数据源变化的监控(即捕获数据源的变化数据)、将捕获到的变化数据传送并集成到数据仓库、对数据仓库对象(维度表、事实表和实视图)的维护和历史数据的保留等主要部分。它将数据仓库增量维护的任务模块化,清晰地体现了系统的模块组成和模块之间的交互。模块包括监控数据源变化的监视器、包装各独立数据源变化数据并将其传送到下一模块的包装器、集成各数据源变化数据(如有必要,还将按照事先设计好的规则反向查询数据源以完成变化数据与数据源中相关数据的连接)并将其传送到下一模块的集成器以及负责将这些变化数据最终应用到数据仓库对象的数据仓库更新管理器。实现增量刷新的一个先决条件就是要能够监控和捕获数据源的变化。依据被集成的数据源的类型不同,对一个具体的数据仓库环境,可以有多种不同的解决方法。本文对这些方法进行了分析,并简要介绍了Oracle 9i中变化数据捕获的机制。此外,本文提出了一种基于Delta表的数据刷新方法,变化的数据先被抽取到Delta表中,它同时记录了数据的更新模式(插入、删除或修改),然后再利用Delta表中的内容对数据仓库对象进行增量维护,该方法能够将复杂的维护过程进行分解,使可控制性和正确性得到进一步的保证。另外,在数据刷新过程中,数据仓库通常是不可访问的,为了减少数据仓库对外“不可见”的时间以提高数据仓库的有效性,我们将实视图的维护过程分成了数据传送和刷新两个阶段。在数据传送阶段,我们只是在后台准备即将应用到数据仓库对象中的数据,而数据仓库对象对用户仍然是可访问的,因而这个阶段会做尽可能多的变化数据处理工作以减少刷新阶段的工作量和所需的时间。在数据刷新阶段,由于与数据仓库对象结构相同的数据已经准备好,因而刷新的效率会显著提高。最后,越来越多的不可预测性和激烈的竞争迫使企业迅速识别内外部的变化,并及时做出适当响应,这就使实时商务智能逐渐受到企业的青睐。而对于一个可靠的实时商务智能系统,它必须有相应的数据仓库为其提供可靠的用来进行分析与决策所必需的数据,这就要求数据仓库具有与商务智能系统一致的实时程度。需要特别说明的是,实时数据仓库并非适用于所有的情况,也并非时滞越短越理想。这主要取决于两个因素:数据的可获得性和商业运作本身,前者是限制,可以通过技术来克服,而后者则是实实在在需要考虑的因素,比如实施实时数据仓库以支持实时商务智能从而做出实时响应,这对特定的商业问题是否有意义,这其中的获益是否足够补偿付出。本文就在之前工作的基础上提出了(准)实时数据仓库增量维护的体系结构。它考虑了原体系结构中各模块可采取的不同策略,这些不同策略的组合就构成了多种级别的实时性,分别适用对实时性有不同要求的数据仓库系统。