参考文献

注册

 

发新话题 回复该主题

自动生成增量ETL过程Generati [复制链接]

1#
擅长临床白癜风研究的专家 http://news.39.net/bjzkhbzy/170710/5530837.html

文献收录:ProceedingsoftheFirstInternationalMulti-SymposiumsonComputerandComputationalSciences

作者单位:复旦大学计算机与信息技术系

文章内容:

作者将文章分为7部分(不含摘要):(1)引言;(2)相关研究;(3)基本概念;(4)段的增量维护;(5)自动生成增量ETL过程;(6)实验;(7)总结。

我对作者这种划分方法基本表示赞同。但是我认为作者可以将个别部分内容再充实一些。

0摘要

增量ETL过程用于DW的增量维护,通常由用户使用ETL工具进行设计。本文借鉴现有的物化视图的增量维护方法,提出了一种从ETL过程中自动生成增量ETL过程的方法。现有的研究主要集中在物化视图的增量维护问题上,这些问题设计投影、选择、连接、聚合等运算,但不包括差运算。由于在ETL过程中经常使用差运算,我们首先讨论了用差运算定义的物化视图的增量维护。

本论文的“相关研究”部分对相关研究进行了介绍;“基本概念”部分对ETL相关的概念进行了介绍;“段的增量维护”部分介绍了2种增量维护方法;“自动生成增量ETL过程”部分介绍了从全量ETL过程生成增量ETL过程的方法;“实验”部分进行了实验;“总结”部分进行了研究的总结与展望。

1引言

如图1所示,我们需要明白这样一个逻辑:建立了一个DW后,必然要将全部数据加载进入DW。加载自此告一段落。

但是,如果数据源发生了变化了呢?就要进行ETL了。ETL有两条路可走,一条是全量ETL过程,一条是增量ETL过程。全量ETl效率低,原因是需要重新加载所有数据。

增量ETL过程则只需要加载在数据源中新创建的数据。

但是,现有的研究只是集中在选择、投影、连接、聚合等运算,并不包括差运算。

因此,问题来了:如何自动生成一个包含聚合、选择、投影、并、连接、差运算的增量ETL过程呢?自动,说明不是手动,需要相关算法操纵程序进行自动。怎样打破常规将差运算加入增量ETL过程?

对此,作者的做法是:(1)首先讨论了各种运算的增量维护。(2)然后讨论了在增量维护中如何选择最优的辅助视图来实现最小成本。(3)最后讨论了给出从全局ETL过程中生成IETL过程的算法。

2相关研究

没啥要讲的。

3基本概念

这里的基本概念还是比较重要的,我在阅读过程中感觉部分概念很生僻。

(1)物化视图

元组存储在数据库中的视图。

(2)基本表

数据库中的现有关系,用于创建视图和物化视图。

(3)物化视图增量维护

只计算视图中的更改以更新其物化视图的过程。

(4)不相关更新

更新基本关系但对物化视图没有影响的一组更新。

(5)自维护物化试图

只能使用物化视图和增量数据来维护的视图

(6)净增量

仅包含相关更新数据的物化视图的增量。

(7)原始物化视图

存储在仓库中的原始物化视图。

(8)辅助视图

额外的物化视图,用于存储辅助数据,以降低总体主视图的维护成本。

然后,作者用案例对什么是“ETL过程的规范形式”进行了详解。

数据仓库含:Total_Consume表、数据源含:Customer表、VIP表。表的内容如下所示。

那么,一个规范的ETL过程应当是如下图所示。

这个过程的输入是Customer表(用户表,含VIP用户表)、VIP用户表、ORDER_A表、ORDER_B表。输出是每名非VIP用户的消费总量表。

这个过程简单地说,就是先对Customer表、VIP表进行减运算,将Customer表中的VIP用户进行剔除。同时对ORDER_A和ORDER_B的每次订单进行计算总消费额。然后对ORDER_A和ORDER_B进行并运算。然后进行连接运算,即求出每名用户对应的:ID、姓名、每次订单的消费额。接着进行选择运算,只选择用户的姓名、每次订单的消费额。最后进行聚合运算,求出每名用户所有订单消费的总金额。

细数了一下,这么一次ETL过程,使用了:减运算、选择运算、并运算、连接运算、聚合运算。用英文缩写就是:D运算、S运算、U运算、J运算、A运算。

当然,一次ETL过程还可以包含:投影运算。投影运算就是选择某些行的运算。但是我仔细想了想,上述过程确实也用了投影运算。也就是P运算。

4段的增量维护

段,也就是segment。可以使用2种方法进行段的增量维护。我把这个段看作是运算的意思。

(1)使用BRA(利用基本关系获得物化视图的净增量)方法的减运算物化视图维护方法

假设关系A、B相减得到视图C。则应该有以下符号说明。

其实就是:A-B=C。

对于使用BRA方法的减运算物化视图维护方法,存在3种情况。

第一种情况,只有前置关系有增量。即只有基本关系A中存在增量。那么

第二种情况,只有后置关系有增量。即只有基本关系B中存在增量。那么

第三种情况,前置、后置关系均有增量。即基本关系A、B中存在变量。那么

相比于前两种情况,第三种情况的结果是参考了相关文献才得出的。这篇文献会在以后的分享中细讲。

(2)使用优化的SRA方法(不利用基本关系的全量信息获得物化视图的净增量)的减运算物化视图维护方法

由A-B=C,则可以转换为

对于任意关系,存在

可转化为

这个转化的过程比较突兀,需要将那篇参考文献研究透后才能掌握为何可以进行这样的转化。

通过对两种增量维护方法的学习,我们不难发现这其中存在着某些定理性的东西。经过整理,如下

(1)推理1:由于C的删除增量、插入增量只包含增量,因此C是可以自维护的

(2)推理2:只要满足(一)、(二)、(三)条件之一,C是可以自维护的

根据

5自动生成增量ETL过程

5.1增量ETL过程的成本模型

为了达到这一目的,我们只需保证计算每个算子的输出关系的净增量的成本最小。

然后我们可以根据上一节讨论的方法为每个运算符选择适当的辅助视图来解决这个问题。

因此,引入了MCCI算法。

5.2自动生成增量ETL过程的MCCI(最小增量计算成本)算法

该算法在生成增量ETL过程时只扫描ETL树一次。如果ETL树中有N个段,则其运行时间为O(N)。假设MCCI算法在选择增量维护方法时,保证每段增量的计算代价最小。然后将MCCI算法生成的增量ETL过程按照TSU方法的第一步执行,执行成本最小。但实际上增量维护成本是否最小取决于增量的实例,因此我们只能保证MCCI算法生成的增量ETL过程在一般情况下具有良好的执行效率。

6实验

在四个基表中,Customer、Order_A和Order_B分别包含个元组和个元组。

结果表明,当增量很小时,MCCI算法生成的增量ETL进程的运行时间比全量ETL进程的运行时间要短。而且优化的增量ETL过程花费的时间更少。

分享 转发
TOP
发新话题 回复该主题