ETL工作流活动优先级的确定及并行实现

更新时间:2023-07-23 17:33:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

工作流技术介绍

第27卷第2期2010年2月 

计算机应用研究

ApplicationResearchofComputers

Vol.27No.2Feb.2010

ETL工作流活动优先级的确定及并行实现

黄觉明,奚建清

(华南理工大学计算机科学与工程学院,广州510006)

摘 要:ETL流程是一个以数据为中心的工作流,对ETL工作流的执行过程进行论述,提出了一个算法,计算ETL工作流中各个活动的执行优先级,在工作流执行中为优先级相同且相互之间没有依赖关系的活动集创建多比较,在数据量足够大的情况下,加速比可接近理想值,加速比随着数据量增大而提高。关键词:数据仓库;抽取、转换和加载工作流;执行优先级;并行执行

中图分类号:TP311   文献标志码:A   文章编号:1001唱3695(2010)02唱0548唱04doi:10.3969/j.issn.1001唱3695.2010.02.040

个线程,通过并行执行这些活动,提高了ETL工作流的执行效率。实验结果表明,所提出的并行算法与串行算法

DeterminepriorityofETLworkflowactivitiesandtheirparallelexecution

(CollegeofComputerScience&Engineering,SouthChinaUniversityofTechnology,Guangzhou510006,China)

HUANGJue唱ming,XIJian唱qing

Abstract:TheprocessofETLcouldbetreatedasadata唱centricworkflow.ThispaperdiscussedtheexecutionoftheETLworkflowandproposedanalgorithmtodeterminethepriorityoftheactivitiesintheETLworkflow,threadswerecreatedfortheactivitiesthatsharethesamepriorityandwerenotdependentoneachother.Theactivitieswereputintheparallelexecutionenvironment,whichcouldimprovetheexecutionefficiencyoftheETLworkflow.Theresultoftheexperimentshowsthattheaccelerationratiooftheparallelalgorithmandtheserialalgorithmcouldbeapproachingtheidealvalue,aslongasthedatare唱cordsinvolvingislargeenough.Theaccelerationratiorisesasthenumberoftheinvolveddatarecordsincreases.

Keywords:datawarehouse;ETL(extraction,transformation,loading)workflow;executionpriority;parallelexecution

0 引言

建立数据仓库的操作过程通常可以看做是一个工作流,这个工作流以数据为中心,包括了数据抽取、数据转换、清洗以及数据加载。ETL工具即是负责处理这一类流程的数据集成工具。其主要功能特性包括:a)找出数据源的相关元数据,包括数据表的模式、文件的结构等;b)依据a)中的元数据从数据源中抽取原始数据;c)将被抽取出来的异构数据进行转换,以形成统一格式的数据集;d)根据用户的业务规则,将上一阶段的数据集进行清洗;e)将统一的、清洁的数据加载到目标数据仓库中。ETL工具中包含有若干种组件,这些组件可以完成ETL流程中的某个功能特性,可以根据业务需求将这些组件进行组装,形成一个工作流。

数据仓库项目建设的成功与否起着至关重要的作用。根据文献[1]显示,在数据仓库的建设过程中,用于ETL工具购买或者开发的费用以及ETL流程的设计与维护的开销往往占整个项目总开销的30%以上,有一些甚至占60%。

据仓库环境进行形式化建模。ETL工作流模型包括ETL概念

ETL工作流的设计质量往往取决于能否对业务需求和数ETL工作流设计的合理性以及流程的运行效率对于一个

型中的基本元素,并提供了概念模型中常见的转换。文献[3]中阐述了建立一个ETL概念模型的方法以及步骤。文献[4]提出在ETL概念建模的过程中使用UML方法。文献[5]定义了ETL逻辑模型的基本元素,并介绍了使用形式化的方法建立一个ETL逻辑模型的过程;文献[6]提出将一个ETL流程建模为一个有向图,使用图论中的研究成果来研究ETL工作流;文献[7]介绍了一种将ETL概念模型转换为ETL逻辑模型的方法,这是一个半自动的过程,可以提高ETL流程的设计质量。

以上的文献大多是提出建立ETL工作流模型的方法,而对于工作流的执行却都没有涉及,现有的ETL工具一般采用串行执行ETL工作流中的每一个活动的方法。本文首先简单介绍了ETL概念模型与逻辑模型,接着提出一种算法,对ETL工作流进行分析,计算确定工作流中每个活动的执行优先级,并通过创建多个线程,并行执行相互之间没有依赖关系的活动,有效提高了ETL工作流的执行效率。

本文介绍了ETL概念模型和ETL逻辑模型,并说明如何对ETL流程建模的方法,然后提出了一个算法,用于确定ETL工作流中各个活动的执行优先级,并通过为相互之间没有依赖关系的活动创建多个线程,并行执行这些活动,提高了整个ETL工作流的执行效率,实验分别使用了串行方法与并行方法

模型和ETL逻辑模型两部分。文献[2]中定义了ETL概念模

收稿日期:2009唱06唱18;修回日期:2009唱08唱05  基金项目:数据仓库关键技术研究及其实现(2006Z3唱D3081);国际仓储物流信息交换服务平台技术研究(0711420500008);广东省基础软件与应用构建技术实验室(2006B80407001)

作者简介:黄觉明(1983唱),男,广东汕头人,硕士研究生,主要研究方向为数据库与数据集成(csjmhuang@qq.com);奚建清(1962唱),男,教授,博导,博士,主要研究方向为数据库与网络计算.

工作流技术介绍

执行ETL工作流中的活动,通过比较这两种方法的时间效率,证明所提出算法的有效性。

1 ETL工作流模型

在ETL流程设计中,首先应该根据业务需求和相关数据源的结构建立概念模型,确定源数据库与目标数据库之间的映射关系,然后根据概念模型建立逻辑模型。1畅1 ETL概念模型

概念建模是整个ETL流程设计的最初阶段,在这个阶段,ETL数据源的结构及其内容

流程设计者的主要任务是搜集用户的需求[2]

,确定抽取操作所使用的数据源,然后分析相关。

ETL之间的映射关系概念模型主要是建立数据源与数据仓库的模式或者属性,以及在映射过程所需要的转换和清洗操作。下面给出在本文中使用的几个ETL概念模型基本元素的

定义:

转换(transform) 是从数据源到目标数据仓库属性映射过程中对数据进行必要的转换、清洗操作。它包括了数据清洗/过滤操作与模式转换操作。

约束(ETLconstrain) 对数据集合中的数据必须满足的某些条件进行建模的结果。

数据供应关系(providerrelationship) 定义从数据源到目标数据仓库的属性之间的映射关系,以及中间可选的相关转换。

下面以一个例子来说明ETL流程的概念建模。一家电子商务跨国企业,需要从中国和美国两个分公司的数据库抽取注册用户的信息到集中的数据仓库中进行分析,假设数据源和数据仓库中的模式如下:

SS1.S1.customercity(cityID(customerID,cityName,,namecountryName,cityID,)

email,date)DW2.customer.customer(name(customerID,countryName,name,,countryNamecityName,email,cityName,date)

,email,date)

对于这个ETL场景,可以建立如图1所示的概念模型。

其中:S1和S2表示数据源中的表,DSA表示中间数据库,DW表示目标数据仓库。

在上面这个例子中,为了保证目标数据仓库中数据的完整性,需要从S1和S2两个数据源抽取数据,对它们执行并(union)操作。为了与数据仓库中事实表的模式一致,必须对Sdate1中的属性的数据从北美的日期格式customer表和city表执行外连接,而且还要将S2中的日期格式(yyyy/mm/dd),还需要根据(mm/ddS2/的其他属性组合yyyy)转换成中国

(name、email)为S2表计算生成一个主键。其中,并运算、外连接运算以及日期转换属于概念模型中的转换(transform),其他的操作如PK、SK则属于约束(ETLconstrain)。1畅2 ETLETL概念模型并不是一个完整的工作流模型

逻辑模型

[7]

,它定义了

数据源与目标数据仓库属性之间的映射关系以及中间必要的转换,但并不关注转换的语义以及执行顺序。

在逻辑建模阶段ETL流程的逻辑模型是一个以数据为中心的工作流模型,ETL流程的设计者需要明确定义数据流所经,

过的各个活动的操作语义,并确定整个流程中各个活动的执行

顺序。

活动(activity)是ETL工作流的基本执行单元,是ETL逻辑模型中一个重要元素。它定义了输入数据模式、输出数据模式、活动的操作语义以及活动的执行优先级。活动的操作语义定义了活动对输入数据所执行的操作,以及输入数据模式到输出数据模式之间的映射关系,可以使用SQL语言或者其他的形式化语言对语义进行描述,也可以使用ETL工具箱中的操作组件和相应的运行时参数进行表示。在一个ETL流程中,必须明确规定每一个活动的执行优先级,ETL流程中的任意两个活动,如果存在依赖关系,即一个活动的输入模式依赖于另一个活动的输出模式(不一定是相邻活动),那么,这两个活动构成严格偏序关系,可以确定其执行的先后顺序。一般情况下,在一个ETL流程中,抽取操作(extract)总是最先执行,加载操作(load)最后执行。

约束,ETL但它提供了更详细的运行时信息逻辑模型中的活动对应于ETL。概念模型中的转换或每一个活动都必须定

义明确的操作语义,还必须规定每一个活动的执行优先级。本文的第3章将给出一个算法,阐述如何在一个ETL工作流中计算每个活动的执行优先级。

对于1.1节所举的例子,图2是它所对应的逻辑模型图,图中主要表示了活动的语义以及执行优先级,对于比较明显的语义没有标出。

2 ETL活动优先级的确定及并行执行

在ETL逻辑模型中,必须确定每一个活动的执行优先级,以确定整个ETL工作流的执行顺序。在确定了执行的优先级之后,可对相互之间没有依赖关系的活动并行执行,以提高整

个ETL工作流的执行效率。2畅1 确定ETL工作流活动优先级

下面首先阐述确定活动执行优先级的算法思想,然后使用伪码对算法进行形式化描述:

在ETL逻辑模型中,可能会存在多个数据供应关系,每一个数据供应关系都是以抽取操作开始,以加载操作结束的。在

工作流技术介绍

确定活动优先级的时候,把每一个抽取操作(即起始操作)的优先级定义为1(假定ETL工作流的优先级从数值1开始,依次递增,数值越小优先级越高),然后分析其他的非起始活动。对于每一个尚未确定其优先级的活动,如果它的所有前驱活动都已经确定了优先级,那么可以通过计算它的所有前驱活动优先级的最大值,再加1取得。通过遍历活动集中的所有活动,就可以确定ETL工作流中所有活动的优先级。

算法1 确定ETL工作流活动优先级

输入:图G(V,E)表示ETL工作流,V表示工作流中的活动集,E表示活动之间的拓扑关系;

输出:活动节点集V,包含了ETL工作流中各个活动的执行优先级信息。

LL1 L2 unvisitedforeachact=inV;L3    if(act∈V{

startActivity)L4     L5     actvisited.order{==1;

L6     L7 while(unvisited=visitedunvisited∪{act–}{;

act};}}L8  L9     foreachunvisitedL10     ifactisnotempty){(act橙(in.orderaunvisited,act{

=)max∈{Ea.andordera}∈+1;visited){L11     12     visitedunvisited==visitedunvisited∪{act–}{;

act};}}}

在上面的算法描述中,L1将活动节点集的所有活动都放在unvisited数组中,表示所有活动都是未访问的;L2~L6遍历整个节点集并判断活动act是否是起始操作,如果是则将其优先级设置为1,将其加入visited数组,并从unvisited数组中将其移除;L7~L12不断遍历unvisited数组直到其为空,L9表示如果一个活动act的所有前驱活动的优先级都已经确定,则act的优先级也可以确定,L10计算act所有前驱活动优先级的最大值,再加1作为act的优先级,同时将act加入visited数组,并从unvisited数组中将其移除。2畅2 并行执行ETL工作流中的活动

确定了ETL逻辑模型中每一个活动的优先级之后,ETL工作流引擎会按照优先级从高到低依次执行工作流中的每一个活动。

在使用串行方法执行的工作流引擎中,每次从活动集中获取优先级最高的一个活动并执行,执行完一个活动之后再选择另一个当前优先级最高的活动执行,不断重复这样的过程直到ETL工作流中的所有活动执行完毕如果存在多个活动的优先级相同。

,在上述的串行方法中需

要依次顺序执行这些活动,但是这些活动是可以并行执行的。把这些活动放进一个执行阶段,每一个执行阶段都是一个容器,存放多个优先级相同的活动。同一执行阶段的活动不存在依赖关系,根据前面的讨论,存在依赖关系的活动构成严格偏序关系,其优先级不可能相等。并行执行优先级相同的多个活动能够获得更高的时间效率。

在同一执行阶段中的各个活动,在执行顺序上不存在依赖关系,但ETL工作流是以数据为中心的,各个活动处理的对象是数据库中的数据表或者操作系统中的文件,有可能存在同一执行阶段的两个或者多个活动对同一对象(数据表或者文件)进行操作的情况。如果操作对象是数据库中的数据表,大多数

数据库管理系统都有比较完善的并发执行控制机制,所以ETL工作流引擎把并发读写一个数据表所需要处理的工作(如对数据表加锁等)交给相应的数据库管理系统进行处理;如果在同一执行阶段存在多个活动对同一个文件进行操作,则必须把这些活动分配到不同的执行阶段中执行,每次只允许相互争夺资源(即文件)的一个活动对文件进行读写,这样可以保证ETL工作流中每一个活动所处理的数据满足一致性的要求在并行计算环境中,可以创建多个线程分别执行同一个执

行阶段中可以并行执行的活动。下面的算法描述工作流引擎识别并执行这些活动的过程。

算法2 ETL工作流引擎识别与执行活动算法描述

输入:活动节点集V,包含了ETL工作流中各个活动的执行优先级信息。

输出L:ETL工作流的执行结果L1 L2 unfinishedActsL3  while=V;

runActs(unfinishedActsisnotempty){L4  L5  runActs=foreach=getHighestPriorityActshandleConflictAct(runActs(););L6   7   createThreadactinrunActsunfinishedActs(act{=)unfinishedAct;

–{act};}}

在上面的算法描述中,L1把所有的活动都放在unfinished数组中,表示这些活动是未执行的;L2不断遍历活动集直到其为空,L3函数getHighestPriorityActs遍历所有尚未执行的活动,识别出优先级最高的活动集合,将其放到一个容器中,等待执行;L4函数handleConflictAct处理一个执行阶段中存在多个活动对同一个文件进行操作的情况,实现的功能是只保留互相争夺资源的一个活动在容器中,将其他活动从runActs中移出,放在后续的执行阶段执行,这样可以确保对于任意一个文件,每个执行阶段只有一个活动对其进行操作。L5~L7工作流引擎为可以并行执行的每一个活动act各创建一个线程,并将活动act从通过并行执行多个活动unfinishedActs数组中移除,可以明显提高。

ETL工作流的执

行效率,在更短的时间之内完成目标数据仓库数据的加载与更新,使数据仓库的用户可以及时使用最新的数据进行分析,从而作出更加正确的决策。

3 实验结果分析

本文对上述的算法进行实现,采用C++语言,并使用boost标准模板库thread函数库为每个可以并行执行的活动创建线程(STL)中的vector容器存放优先级相同的活动,使用。

下面对以上提出的算法作一个性能分析,在主流的数据库环境下,对算法中所提出的为优先级相同且相互之间没有依赖关系的多个活动创建线程,并行执行这些活动,与每次只选取ETL间性能的比较工作流中优先级最高的一个活动串行执行的方法进行时。

实验环境为:IntelCoreT23001.6GHz×2,内存为DDR22GBSP2,,磁盘为开发环境为80GBMS,操作系统为VisualStudio.MSNETWindows2003。XPProfessionalOracle10.2g、MSSQLServer2005、MySQL5.1。

数据库环境包括

实验场景是模拟1.2节所举例子的数据,从两个源数据库

中分别抽取注册用户信息到一个中间工作数据库进行处理。

工作流技术介绍

实验的方法分别是将两个数据抽取操作并行执行(这两个抽取操作不存在依赖关系),以及将这两个数据抽取操作串行执行,即一个操作结束后才启动另一个操作(以下的分析中将这两种方法简称为并行方法与串行方法)。每一组实验数据都是三次实验数据取平均值的结果。

实验场景一 数据源S1位于SQLServer数据库中,数据源S2位于Oracle数据库中,工作数据库位于SQLServer数据库中。表1是实验数据。

表1 场景一实验数据

数据元组数10005000100002000050000100000

并行方法/ms

36777896123132194353765107365

串行方法/ms

5568134112222441833104771211786

加速比1.511.701.801.911.951.97

模型主要是建立数据源与数据仓库之间的映射关系,而ETL逻辑模型则主要是确定流程中各个活动的执行优先级及其语义。本文通过一个电子商务的例子阐述了建立ETL概念模型和逻辑模型的过程,提出了一个算法,分析ETL工作流并计算工作流中各个活动的执行优先级,将优先级相同并且相互之间没有依赖关系的活动放在同一个执行阶段,通过创建多个线程并行执行这些活动,提高了ETL工作流的执行效率。实验数据表明,该算法与现有的串行算法比较在时间效率方面具有较大优势,并且随着数据量增大,加速比提高,当参与计算的数据量比较大时,加速比可以趋近于理想值。数据仓库环境中的ETL工具经常需要处理海量数据,这个算法对于ETL工具性能的提高具有较强的实用性。参考文献:

[1]STRANGEK.ETLwasthekeytothisdatawarehouse’ssuccess,

TechnicalReportCS唱15唱3143[R].2002.

[2]VASSILIADISP,SIMITSISA,SKIADOPOULOSS.Conceptualmode唱

shoponDataWarehousingandOLAP.2002:14唱21.

lingforETLprocesses[C]//Procofthe5thACMInternationalWor唱SIMITSISA,VASSILIADISP.Amethodologyfortheconceptualneering.2003:305唱316

modelingofETLprocesses[C]//ProcoftheDecisionSystemsEngi唱

实验场景二 数据源S1位于SQLServer数据库中,数据源S2位于MySQL数据库中,工作数据库位于SQLServer数据库中。表2是实验数据。

表2 场景二实验数据

数据元组数10005000100002000050000100000

并行方法/ms

38437802125632339655302112328

串行方法/ms

5416134531256342894103059209844

加速比1.411.721.831.831.861.87

[3]

[4]TRUJILLOJ,LUJAN唱MORAS.AUMLbasedapproachformodeling

ETLprocessesindatawarehouse[C]//ProcofLNCS,vol2813.2003:307唱320.

[5]VASSILIADISP,SIMITSISA,GEORGANTASP,etal.Ageneric

andcustomizableframeworkforthedesignofETLscenarios[J].In唱VASSILIADISP,SIMITSISA,SKIADOPOULOSS.ModelingETLDecisionandManagementofDataWarehouses.2002:52唱61.activitiesasgraphs[C]//Procofthe4thInternationalWorkshopon

由上面的实验数据可以看出,本文所提出的算法可以有效提高ETL工作流的执行效率。本实验中,并行执行的活动数为2,理想情况下加速比为2,实验结果显示实际加速比在1.4~2.0,当数据量增大时,加速比也随着增大。这是因为当一个活动所处理的数据量比较小时,迁移数据本身所需要的时间也比较少,而创建线程需要一定的时间开销,此时占用的比例较大;而当处理的数据量比较大时,创建线程所需要的时间占总时间的比例下降,达到了比较好的加速比。ETL工具所处理的数据量通常情况下都比较大,本文所提出的这个算法所带来时间效率的提高是比较明显的,具有很强的实用性。

formationSupportSystems,2005,30(7):492唱525.[6]

[7]SIMITSISA,VASSILIADISP.Amethodforthemappingofconcep唱

tualdesignstologicalblueprintsforETLprocesses[J].DecisionSupportSystems,2008,45(1):22唱40.

[8]张忠平,赵瑞珍.基于结构图的ETL过程建模方法[J].计算机应

用研究,2008,25(11):3354唱3356.

[9]张旭峰,孙未未,汪卫,等.增量ETL过程自动化产生方法的研究

[J].计算机研究与发展,2006,43(6):1097唱1103.

4 结束语

本文首先介绍了ETL的概念模型和逻辑模型,ETL概念

(上接第536页)

[24]BAXTERID,YAHINA,MOURALMD,etal.Clonedetection

usingabstractsyntaxtrees[C]//ProcofInternationalConference1998:368唱377.

onSoftwareMaintance.WashingtonDC:IEEEComputerSociety,

[28]LUBin,LIUFen唱lin,GEXin,etal.Asoftwarebirthmarkbasedon

manticComputing.2007:37唱44.技术,2005,28(4):36唱39.

[30]周立萍,陈平.逆向工程发展现状研究[J].计算机工程与设计,

2004,25(10):1658唱1659.

[31]KAKIMOTOT,MONDENA,KAMEIY,etal.Usingsoftwarebirth唱

markstoidentifysimilarclassesandmajorfunctionalities[C]//Proc22唱23.

ofInternationalConferenceonMiningSoftwareRepositories.2006:dynamicopcoden唱gram[C]//ProcofInternationalConferenceonSe唱

[29]杨路明,符鹤.基于系统调用的入侵检测方法研究[J].现代电子

[25]COLLBERGC,MYLESG,HUNTWORKA.SandMark:atoolfor

softwareprotectionresearch[J].IEEEMagazineofSecurityandPrivacy,2003,1(4):40唱49.

[26]DALLMEIERV,LINDIGC,ZELLERA,etal.Lightweightdefect

localizationforJava[C]//Procofthe19thEuropeanConferenceon[27]MYLESG,COLLBERGC.K唱grambasedsoftwarebirthmarks[C]//

ProcofACMSymposiumonAppliedComputing.2005:314唱318.Object唱OrientedProgramming.2005.

[32]赵长海,晏海华,金茂忠.基于编译优化和反汇编的程序相似性

检测方法[J].北京航空航天大学学报,2008,34(6):712唱715.

本文来源:https://www.bwwdw.com/article/udsm.html

Top