基于网格的补偿事务自动产生方法技术

技术编号:2833937 阅读:130 留言:0更新日期:2012-04-11 18:40
一种计算机应用领域的基于网格的补偿事务自动产生方法,首先创建针对数据修改事件产生补偿操作的行级触发器,然后由补偿事务产生器始终监视着子事务的执行;其次当影响系统状态的事件发生时,补偿事务产生器根据事件的类型调用相应的行级触发器,自动产生从语义上撤销该事件影响的补偿操作;最后,当子事务提交时,补偿事务产生器将该子事务执行过程中所产生的补偿操作组合成补偿事务,完成自动产生补偿事务。本发明专利技术的方法支持网格环境下补偿事务的自动产生,减少网格长事务应用的开发工作量和开发周期近50%。

【技术实现步骤摘要】

本专利技术涉及的是一种计算机应用
的方法,具体是一种基于网格的自 动产生补偿事务的方法。技术背景由于网络延迟和商业过程的交互,即使在没有并发事务的情况下,商业事务 一般也会持续比较长的时间,因而也被称为长事务。为了减少资源被占用的时间, 提高资源利用率和系统性能,组成长事务的子事务应该在全局事务结束之前提交 并释放其占用的资源。如果某些子事务失败或用户需要选择提交结果时,对已提 交子事务的撤销必须用执行相反任务的补偿事务来完成。1987年Garcia-Molina等人在《Proceedings of International Conference on Management of Data, ACM SIGMOD Record 16(3)》(ACM SIGM0D论文集16 巻第3期)上发表了 Sagas(—种长事务模型),该文提出了一种减少长事务资 源占用时间的方法,即将长事务拆分成一组预先定义好执行顺序的子事务L(1《 i《n),并为每个子事务编写一个补偿事务Ci(l《i《n),每个补偿事务G能语义 地撤消由Ti的提交对系统产生的影响。该方法中,每一个子事务被允许单独提交, 并立即释放其占用的资源,以提高资源的利用率。基于该模型,有不少人对此作 了进一步的改进。经对现有技术文献的检索发现,Nodine等在《Proceedings of the Twenty-Seventh Hawai i International Conference on System Sciences》(IEEE 第27届Hawaii国际系统科学会议论文集)中基于Sagas的思想,提出了如何在多 数据库事务中进行事务补偿,该方法通过步骤方法(st印approach)将若干本地 数据库集成为一个多数据库系统;每个本地数据库被封装成一组步骤(st印s), 每个步骤有一个关联的补偿步骤(compensating st印),当事务需要补偿时,相 关的补偿步骤被调用。上述方法的不足之处在于它们要求应用开发者在编写事务性应用程序时,必须为每一个子事务提供相应的补偿事务。这样的要求难以适 应网格环境,主要原因是(1)网格服务具有自治性。服务提供者可以根据自身 的商业模式设置特定的补偿要求,应用开发者在开发阶段无法知道在事务执行之 前动态发现的网格服务具有哪些特殊的补偿要求。(2)大大增加了事务性网格应 用的开发工作量与复杂性。与分布式数据库事务相比,网格服务涉及的操作及应 用语义要复杂得多,编写补偿事务给关键性网格应用的开发带来了很大的工程量 和复杂性及其困难。
技术实现思路
本专利技术的目的在于克服上述现有技术中的不足,提供一种,即在长事务执行过程中动态产生相应的补偿事务,为网格环境下透明的事务补偿提供支持,同时,用户也可以使用自动产生的补偿事务对子事务的提交结果进行选择。本专利技术是通过以下技术方案实现的,本专利技术包括如下步骤首先创建针对数据修改事件产生补偿操作的行级触发器,然后由补偿事务产生器始终监视着子事务的执行;其次当影响系统状态的事件发生时,补偿事务产生器根据事件的类型调用相应的行级触发器,自动产生从语义上撤销该事件影响的补偿操作;最后,当子事务提交时,补偿事务产生器将该子事务执行过程中所产生的补偿操作组合成补偿事务,完成自动产生补偿事务。所述的行级触发器,是指基于数据库的触发器机制创建的针对数据修改事 件而产生语义相反的补偿操作的三个存储过程模块,分别用于补偿更新、插入、 删除三种语句,动态产生相应数据修改事件的补偿操作。行级触发器根据数据表 中行的标识符对被修改的所有行进行补偿,不需要逐行匹配记录,从而加快补偿 操作的产生速度,提高系统性能。行级触发器的工作过程具体如下(1)创建行级触发器提供数据表的名字,根据名字可从用户表视图中获得数据表的结构信息,包括所有字段名称以及字段的数据类型,因为数据库的USER—TAB—COLUMNS视图提 供了静态数据词典视图,静态数据词典视图描述了视图的相关结构信息,每个数据表产生create—insert—trigger (插入行级触发器),create—update—trigger (更新行级触发器),create _delete_trigger (删除行级触发器)三个存储过 程模块,即三个行级触发器,它们分别用于补偿插入、更新、删除语句,三个行 级触发器的输入参数都是其服务的数据表名称,当被调用时,它们产生补偿插入、 更新、删除的补偿操作。(2)行级触发器动态产生数据修改事件的补偿操作当数据修改事件出现时,补偿事务产生器根据事件类型调用相应的行级触发 器,行级触发器生成具体的补偿操作,补偿操作是在子事务的执行过程中动态产 生的,假如子事务失败了,则在该子事务执行过程中所产生的所有补偿操作也被 放弃,具体过程如下在插入事件出现时,产生相应的删除语句将插入的记录删 除;在删除事件出现时,产生相应的插入语句将删除的记录再次插入;在更新事 件出现时,需要将被改变的记录恢复成更新前的数据。在产生补偿操作的过程中, 行级触发器通过数据表的结构信息,判断字段的数据类型;使用字符串拼接的方 式,动态产生补偿操作。对于不同的数据类型,处理方式有所不同对数值型的 数据,直接与补偿操作片断的字符常量连接;对字符串型的数据,则需要在这个 值之前和之后,分别拼接一个单引号,作为补偿操作中字符串直接量的开始与中 止符;对日期时间型的数据,需要首先将值转化为字符串,然后在产生的补偿操 作中利用TO—DATE函数将字符串值重新转换为日期时间。所述的补偿事务产生器,是指用于动态产生补偿事务包括三个行级触发器的 模块。补偿事务产生器在子事务从开始到被确认或撤销的整个过程中,补偿事务 产生器监视各种影响系统状态的事件;当影响系统状态的事件出现时,补偿事务 产生器执行相应动作对于事务上下文消息,记录全局事务标识符和输入参数; 预提交消息表示事务中包含的数据修改操作开始被执行,因此,补偿事务产生器 开始根据子事务中数据修改操作的类型调用相应的行级触发器,自动产生数据修 改事件的补偿操作,并在子事务成功提交后使用定界符将补偿操作封装成补偿事 务,然后存储在数据库中;对于撤销消息,调用存储在数据库中的补偿事务;对 于确认消息,删除存储在数据库中的补偿事务。网格长事务由多个子事务组成, 分别由处于不同网络节点上的网格服务来完成,补偿事务产生器被安装于实际执行子事务的每一个网格服务上。所述的影响系统状态的事件,是指改变事务处理系统状态的各种外部操作 事件,有三大类事务协调事件、数据修改事件和服务自定义事件。所述事务协调事件是指子事务从协调者收到了事务协调消息,包括事务上 下文消息、预提交消息、撤销消息、确认消息,所述事务上下文消息用于协调者 通知参加者事务开始、事务标识符、事务类型、协调者网络地址、事务执行有效 期等信息;所述预提交消息用于协调者通知参加者提交;所述确认和撤销消息分 别用于用户确认和撤消已经提交的子事务。所述数据修改事件是指子事务中包含的改变数据库中数据的操作,本专利技术针 对关系型数据库,因而数据修改操作包括插入(insert)、删除(delete)和更新 (update)。所述服务自定义事件是指网格服务提供本文档来自技高网
...

【技术保护点】
一种基于网格的补偿事务自动产生方法,其特征在于,包括如下步骤:首先创建针对数据修改事件产生补偿操作的行级触发器,然后由补偿事务产生器始终监视着子事务的执行;其次当影响系统状态的事件发生时,补偿事务产生器根据事件的类型调用相应的行级触发器,自动产生从语义上撤销该事件影响的补偿操作;最后,当子事务提交时,补偿事务产生器将该子事务执行过程中所产生的补偿操作组合成补偿事务,完成自动产生补偿事务。

【技术特征摘要】
1、一种基于网格的补偿事务自动产生方法,其特征在于,包括如下步骤首先创建针对数据修改事件产生补偿操作的行级触发器,然后由补偿事务产生器始终监视着子事务的执行;其次当影响系统状态的事件发生时,补偿事务产生器根据事件的类型调用相应的行级触发器,自动产生从语义上撤销该事件影响的补偿操作;最后,当子事务提交时,补偿事务产生器将该子事务执行过程中所产生的补偿操作组合成补偿事务,完成自动产生补偿事务。2、 根据权利要求l所述的基于网格的补偿事务自动产生方法,其特征是, 所述的行级触发器,是指基于数据库的触发器机制创建的针对数据修改事件而 产生语义相反的补偿操作的三个存储过程模块,分别用于补偿更新、插入、删除 三种语句,动态产生相应数据修改事件的补偿操作,行级触发器根据数据表中行 的标识符对被修改的所有行进行补偿,不需要逐行匹配记录。3、 根据权利要求1或2所述的基于网格的补偿事务自动产生方法,其特征 是,所述行级触发器,其创建需要提供数据表的名字,根据名字从用户表视图中 获得数据表的结构信息,包括所有字段名称以及字段的数据类型,因为数据库的 USER—TAB—COLUMNS视图提供了静态数据词典视图,静态数据词典视图描述了视 图的相关结构信息,每个数据表产生插入行级触发器,更新行级触发器,删除行 级触发器三个存储过程模块,即三个行级触发器,它们分别用于补偿插入、更新、 删除语句,三个行级触发器的输入参数都是其服务的数据表名称,当被调用时, 它们产生补偿插入、更新、删除的补偿操作。4、 根据权利要求1或2所述的基于网格的补偿事务自动产生方法,其特征 是,所述行级触发器,当数据修改事件出现时,补偿事务产生器根据事件类型调 用相应的行级触发器,行级触发器生成具体的补偿操作,补偿操作是在子事务的 执行过程中动态产生的,假如子事务失败了,则在该子事务执行过程中所产生的 所有补偿操作也被放弃;其动态产生数据修改事件的补偿操作具体是指在插入事件出现时,行级触 发器产生相应的删除语句将插入的记录删除;在删除事件出现时,行级触发器产 生相应的插入语句将删除的记录再次插入;在更新事件出现时,行级触发器将被 改变的记录恢复成更新前的数据,在产生补偿操作的过程中,行级触发器通过数 据表的结构信息,判断字段的数据类型;使用字符串拼接的方式,动态产生补偿 操作,对于不同的数据类型,处理方式有所不同对数值型的数据,直接与补偿 操作片断的字符常量连接;对字符串型的数据,则需要在这个值之前和之后,分 别拼接一个单引号,作为补偿操作中字符串直接量的开始与中止符;对日期时间 型的数据,需要首先将值转化为字符串,然后在产生的补偿操作中利用T(U)ATE函数将字符串值重新转换为日期时间。5、 根据权利要求l所述的基于网格的补偿事务自动产生方法,其特征是,所述的补偿事务产生器,是指用于动态产生补偿事务包括三个行级触发器的模 块,补偿事务产生器在子事务从开始到被确认或撤销的整个过程中,补偿事务产 生器监视各种影响系统状态的事件;当影响系统状态的事件出现时,补偿事务产 生器执行相应动作对于事务上下文消息,记录全局事务标识符和输入参数;预 提交消息表示事务中包含的数据修改操作开始被执行,因此,补偿事务产生器开 始根据子事务中数据修改操作的类型调用相应的行级触发器,自动产生数据修改 事件的补偿操作,并在子事务成功提交后使用定界符将补偿操作封装成补偿事 务,然...

【专利技术属性】
技术研发人员:唐飞龙过敏意李明禄
申请(专利权)人:上海交通大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1