1集成对象代理数据库的科学工作流服务框架中的数据跟踪王黎维1,彭智勇2,3,黄泽谦2,罗敏2(武汉大学国际软件学院1,软件工程国家重点实验室2,武汉大学计算机学院3,武汉430072)摘要本文提出了一个集成数据库的科学工作流服务框架,它采用对象代理模型描述一系列科学任务的执行过程,使得工作流管理操作以类似于传统数据库管理操作的方式来完成。同时,基于对象代理数据库中的双向指针机制,本文提出了一种新的数据跟踪方法,该方法能提供比注释或反向查询更高的性能,不仅节省了大量的存储空间,而且减少了额外的计算代价,一种部分物化中间数据的模式也被提出,用于提高数据跟踪的高效性,实验显示它具有较好的系统性能。关键词科学工作流;web服务;对象代理模型;数据跟踪1引言*目前,生物、医学、生态等科学领域已经面临信息爆炸,使得这些领域的科学家每天不得不使用各种专业程序处理来自实验室信息管理系统控制的科学实验,大规模计算为中心的模拟或远程传感器实时观测的科学数据,这对自动管理科学实验提出了迫切的需求。为了支持科学家进行高效的数据管理和实验分析,将工作流技术应用于科学领域的科学工作流(ScientificWorkflow,SWF)如今已成为在网络基础设施上进行大规模科学计算和协同研究的有效方法。目前在合作环境中进行跨组织的科学实验已经越来越重要。由于该环境中数据和程序资源的分布和异构,使得广泛用于工业界的Web服务技术引入到科学工作流中,用于支持来自不同平台的计算资源的整合,如[1,2]等。它将程序封装到服务中,并通过服务调用而不是程序调用组成工作流,因此能够跨越技术和组织的边界对流程进行建模。与以任务为中心的商业工作流相比,科学工作流虽然共享了商业工作流的一些特性,但其主要是以数据为中心[3],常常涉及大规模科学计算,具有描述科学数据的元数据或者注释。因此,科学工作流实际上是数据管理和流程管理的结合[4]。探索数据库技术用于科学工作流管理已成为当前的研究热*该研究得到了国家自然科学基金项目(60573095)、教育部新世纪优秀人才计划项目(NCET-04-0675)、中国高科技研究发展计划(2006AA12Z210)、教育部博士点基金项目(20050486024)、教育部科学技术研究重点项目(107072)、国家重点基础研究发展计划资助(2007CB310806)资助点。通常,工作流管理系统(WFMS)使用数据库管理系统(DBMS)来存储任务描述以及工作流数据,并在DBMS之上实现各个工作流功能模块。然而目前一些研究证明[5,6],大多数WFMS的功能可由DBMS提供,许多成熟的数据库技术,如计划、查询、数据跟踪以及并发控制等均可用于工作流管理系统中。采取DBMS的方式实现科学工作流管理,可以减少实现开销,增加优化的可能性,使其以一种类似于传统数据库操作的方式进行工作流管理。因此,采用以数据库系统为核心的科学工作流管理体系架构,变得非常有意义。科学工作流最重要的功能是作为识别实验数据的一种方式,称其为数据跟踪(DataProvenance)[7,8],它用于提供数据的派生历史,解释数据的由来,这对于实验分析,错误诊断以及核实实验结果的有效性很有帮助。另外,当产生实验数据的实验步骤发生改变时,能通过数据的派生历史跟踪实验进程,确定需要重做哪些步骤以便更新实验结果。因此,数据跟踪主要包含两个重要信息:用于产生实验数据的数据源,以及所经历的实验步骤。目前,数据跟踪的重要性已经被多个科学工作流项目所认可,如GridDB[6],Chimera[9],myGRID[10],CMCS[11]。注释和反向是目前两种主要的数据跟踪方法。注释将一个数据的派生历史搜集起来作为元数据,与数据一起存放在数据库中,用于解释数据的来源。反向方法主要应用逆向查询或者逆向函数,由结果数据溯源到其源数据。但两者都有不足之处,注释不能为细粒度的实验数据提供良好的存储规模,因为记录完整的派生历史可能超过数据本身所需要的存储空间。反向方法从存储2的角度来看似乎更好,因为逆向函数或逆向查询能标识某一类数据的派生信息,但每次需要查询数据源时,它需要产生一个逆向函数或逆向查询去计算派生信息,在数据量大的情况下,执行效率较低。本文,我们首先提出了一个集成对象代理数据库的科学工作流服务框架,并在此框架下着重研究基于对象代理模型的数据跟踪方法,该方法能借助实验数据间的双向指针实现数据跟踪,能提供比注释或反向方法更高的性能,不仅节省了大量的存储空间,而且减少了额外的计算代价。本文的组织如下:第2节介绍了一个集成对象代理数据库的科学工作流服务框架。第3节提出了基于对象代理模型的数据跟踪方法。第4节给出了实验结果和分析。第5节分析并比较了一些相关工作。最后总结全文并提出下一步需要开展的工作。2集成对象代理数据库的科学工作流服务框架集成对象代理[12]数据库TOTEM的科学工作流服务框架如图1所示,它将数据管理和工作流管理有效的结合,以对象代理数据库来建模科学工作流,并采用类似SQL语言的方式来执行,管理和监控科学工作流。WorkflowCreationWorkflowExecutionClientUDDIRegistry3query3queryService1ServicemService2SOAPServer5InvokeService2DeployServiceUDDIData……TOTEM6Result4ServiceCall1Register图1集成对象代理数据库的科学工作流服务框架该框架使用对象代理数据库TOTEM作为科学工作流的运行环境,提供科学工作流所必需的工作流设计和执行功能,从而取代商业工作流引擎的核心位置。工作流设计主要用于定义工作流模式,模式定义通过对象代理数据库中的类和代理类定义工作流中不同科学任务的输入和输出,通过任务输入输出间的对象代理关系实现工作流的自动执行。工作流执行是系统的核心模块,它主要采取数据驱动的方式,使得科学任务调用相应的科学程序对提供的输入数据进行计算,将执行转化为对数据库的插入和更新操作从而实现工作流的自动执行。其中,科学程序使用web服务描述语言(如,WSDL)将其封装,我们称其为科学服务程序。它仅仅提供程序的接口而不必关心程序的具体实现,隐藏了它们的异构性,使它们能被任何类型的客户端应用程序存取。从图1中我们可以看出,服务提供者使用公共的UDDI注册器注册服务描述,客户端查询UDDI得到服务描述细节,找到所感兴趣的服务,并构造和执行工作流。一旦工作流中的某一任务被触发,它通过UDDI接受服务的输入参数,并向SOAP服务器发送合适的SOAP消息,接受SOAP消息的SOAP服务器触发服务的实际实现,结果被返回到SOAP服务器,再返回给客户端。一个任务的输出可能被直接传递或修改,并作为下一个任务的输入。2.1工作流建模科学工作流由科学数据和操作它们的科学任务组成。科学任务具有输入数据与输出数据,我们建模输入、输出数据作为对象代理数据库TOTEM中的类和代理类,其中,科学任务的输入数据是其直接前驱科学任务的输出数据。工作流流程初始科学任务的输入数据用类来定义,构成工作流流程的所有科学任务的输出数据定义为其输入数据的代理类,代理类的类型根据对应工作流模式的不同而有所不同。被科学任务调用的科学服务程序定义为输入数据对象属性上的读方法。2.1.1数据声明定义1工作流流程初始科学任务的输入数据被定义成类C=O,A。1.O是C的数据对象集。o∈O是C的一个数据对象。2.A是C的属性集合。(Ta:a)∈A分别代表一个属性的类型和属性名。数据对象o的属性a的值表示为o.a。对每个属性Ta:a,都有两个基本方法。read(o,a)↑o.a,write(o,a,v)o.a:=v。这里,,↑分别代表激活、结果返回。定义2工作流流程除初始科学任务外的其他科学任务的输出数据基于其输入数据来定义,前者称为后者的代理类,后者称为前者的源类。源类中的数据对象与其代理类中的数据对象通过双向指针链接。代理数据对象拥有自己的标识符,并通过切换操作完全或部分共享源数据对象的属性值,同时还可以增加属性。令Cs=Os,As是源类,其代理类Cd可以定义为Cd=Od,Ad∪Ad+。31.代理数据对象Od={odi|odi→osi|…×osi×…|{osi},sp(osi)|jp(…×osi×…)|gp({osi})==true},其中odi→osi|…×osi×…|{osi}表示odi是osi,…×osi×…,或{osi}的代理数据对象,sp,jp和gp分别表示选择,组合和分组谓词。根据对象代理模型[12],代理数据对象具有四种类型,分别是Select、Join、Group和Union,用于支持特化,聚集,分组和组合。2.Ad∪Ad+是Cd的属性集。(1)(Tad:ad)∈Ad是从(Tas:as)∈As继承而来的属性。对代理数据对象od的属性值ad的计算通过切换操作最终作用到源数据对象的属性as上。由于更新继承的属性值不符合科学工作流的要求,所以属性ad的写方法不存在,ad读方法的切换操作定义如下:read(od,ad)↑fTas→Tad(read(os,as))(2)(Tad+:ad+)∈Ad+是增加的属性,其基本方法定义如下:read(od,ad+)↑od.ad+write(od,ad+,vd+)od.ad+:=vd+根据该定义,每次查询代理数据对象继承的属性值仍然需要通过访问源数据对象的切换操作来计算。由于科学计算的结果数据可能由运行时间较长的科学程序产生,所以最好物化继承的属性值以避免每次查询时重新计算它们。物化的继承属性的读方法定义被修改如下:read(od,ad)↑od.ad.即继承的属性值能直接从代理数据对象中读取。源数据对象上的更新将触发更新迁移过程对代理数据对象进行更新,也就是,如果增加,删除或修改源数据对象,相应的代理数据对象也会被增加,删除或修改。由于源数据对象与其代理数据对象之间存在各种依赖关系和语义约束,其一致性可通过更新迁移进行维护。2.1.2流程声明工作流流程的执行可能需要连接多个科学任务,任何复杂的工作流流程能被简化成在给定数据上按某种顺序执行的科学任务序列。本框架的特点是将工作流流程看成一系列数据的相互连接,将工作流任务间的相互关系转换为任务关联数据间的关系,同时采用对象代理数据库根据不同的工作流模式来建立数据间的关系,利用更新迁移机制触发工作流的自动执行,因此能够支持[13]提出的几种常见的工作流模式,包括:顺序模式,并行分支模式,同步模式,单选模式,简单合并模式,多路合并模式,多路选择模式等。如图2(a)所示,任务A的输出AOutput定义为任务B的输入,任务B的输出定义为类AOutput的Select型代理类BOutput。任务B对应的科学服务程序作为AOutput中数据对象属性上的读方法,一旦A完成对输入数据的计算,往AOutput中插入结果数据对象时,会触发B的执行,并在BOutput中派生对应代理数据对象。ABABOutputCOutput(a)顺序模式(b)并行分支模式ABC(c)同步模式(d)单选模式(e)简单合并模式ABC(f)多路合并模式(g)多路选择模式AInputAOutputBOutputAInputAOutputSelectBCSelectSelectAOutputBOutputJoinCOutputAOutputBOutputCOutputUnionABOutputCOutputAInputAOutputBCSelectSelectDDOutputSelectABOutputCOutputAInputAOutputBCSelectSelectABCAOutputBOutputSelectCOutput图2对象代理模型建模工作流如图2(b)所示,任务B和C的输出BOutput和COutput分别定义为任务A的输出类AOutput的Select型代理类。对于并行分支模式,一旦A完成对数据的计算,往AOutput中