用于数据库事务的幂等性制造技术

技术编号:10014991 阅读:177 留言:0更新日期:2014-05-08 10:07
提供了一种用于管理从客户端发送至服务器以供执行的事务性命令集的方法、机器和计算机可读取介质。第一服务器向客户端报告识别事务性命令集的逻辑标识符。第一服务器交付用于指示已交付集合的命令集相关信息。第二服务器基于客户端已经收到的逻辑标识符从客户端接收识别所述集合的请求。第二服务器确定请求在相应的对话中是否识别出接收用于执行的最新集合以及集合中是否存在尚未交付的任何事务。如果还有任何事务尚未交付,那么第二服务器就通过阻止第一会话中发布的所识别集合的完成来强行设定所识别集合的未交付状态。所识别集合可以随后无重复风险地在第二会话中执行。

【技术实现步骤摘要】
【国外来华专利技术】用于数据库事务的幂等性相关申请的交叉引用本申请涉及并要求2011年9月9日提交的申请号为13/229,641且专利技术名称为“RecoveringStatefulRead-OnlyDatabaseSessions”的美国申请的优先权,因此通过引用并入其全部内容,就像在本文中完整阐述过一样。所以申请人拒绝放弃专利申请或其审查历史中主张的任何权利要求范围。本申请涉及并在2012年4月16日提交的申请号为13/448,267且专利技术名称也是“用于数据库事务的幂等性(IdempotenceForDatabaseTransactions)”的美国专利申请,通过引用并入其全部内容,就像在本文中完整阐述过一样。本申请还涉及:(1)2004年8月12日提交的专利技术名称为“TransparentMigrationOfStatelessSessionsAcrossServers”的美国专利US7747754,通过引用并入其全部内容,就像在本文中完整阐述过一样;(2)2006年5月1日提交的专利技术名称为“DatabaseShutdownWithSessionMigration”的美国专利US7502824,通过引用并入其全部内容,就像在本文中完整阐述过一样;(3)2004年8月12日提交的专利技术名称为“TransparentSessionMigrationAcrossServers”的美国专利US7552218,通过引用并入其全部内容,就像在本文中完整阐述过一样;(4)2005年5月17日提交的专利技术名称为“CapturingAndRe-CreatingTheStateOfAQueueWhenMigratingASession”的美国专利US7415470,通过引用并入其全部内容,就像在本文中完整阐述过一样;(5)2007年4月4日提交的专利技术名称为“MigratingTemporaryDataOfASession”的美国专利US7634512,通过引用并入其全部内容,就像在本文中完整阐述过一样;(6)2011年3月30日提交的申请号为13/076,313且专利技术名称为“ApplicationWorkloadCaptureAndReplaySystem”的美国专利申请,通过引用并入其全部内容,就像在本文中完整阐述过一样。

涉及管理从客户端发送至服务器以供执行的事务性命令集。
技术介绍
服务器和客户端服务器是一种为一个或多个客户端提供服务的操作软件过程。服务器可以是操作用于为客户端提供服务的相关软件的若干不同服务器实例构成的服务器实例(serverinstance)。客户端通过服务器连接跟服务器通信。具体地,客户端向服务器发送命令,而服务器执行命令并可选地向客户端送回结果。如本文中所用的服务器“操作”是指由服务器采用以执行一条或多条客户端命令的函数、过程或其他动作。单条命令可以触发多项服务器操作或者也可以对应于单项服务器操作。例如,某些命令可以请求服务器除了执行数据操作函数以外还要返回结果。另一些命令可以仅请求确认数据操作命令得到执行或者也可以不请求任何响应。客户端可以要求执行在请求中明确的命令集。作为响应,服务器可以执行命令集并向客户端确认命令集已执行。例如,服务器可以向客户端提供结果或者可以仅提供命令集已执行的指示。服务器和客户端之间的连接可以随时地、按计划或不按计划地变为不可用。例如,服务器可能出错,或者支持服务器和客户端之间连接的网络设备或其他源也可能出错。如果服务器和客户端之间的连接在服务器响应命令集之前就已变为不可用,那么客户端就无法确定是否已经完成了命令集。数据库服务器和数据库应用程序在本文中被提供分别作为服务器和客户端的示例。但是,本文介绍的各种技术可以应用于任何服务器-客户端系统。数据库实例数据库包括存储在一种或多种存储设备例如硬盘、随机存取记忆棒、存储集群或云存储系统内的数据和元数据。这样的数据和元数据可以根据例如关系和/或对象-关系数据库结构而按逻辑存储在数据库内。数据库应用程序通过向数据库实例提交命令促使数据库实例对存储在数据库内的数据执行操作而跟数据库服务器的实例(“数据库实例”)交互。数据库命令是用于访问或修改数据库中数据的请求。命令可以促使数据库实例对数据库内的数据执行操作和/或从数据库中返回数据。在多节点数据库系统中,数据库可以通过多个数据库实例提供服务,并且每一个数据库实例都可以被设置用于访问全部或部分的数据库。服务器实例是集成的软件组件例如在一种或多种计算设备上运行的进程以及分配的用于在处理器上运行集成软件组件的计算资源例如内存、存储器或处理器周期的组合。数据库实例是集成的软件组件以及分配的用于访问、修改或以其他方式使用数据库的计算资源的组合。数据库实例可以分组为调用逻辑域的服务。多个数据库实例可以被安装或配置在单台机器或分离的多台机器上。在处理数据库命令时,数据库实例可以访问数据库或数据库中的信息缓存。在一个示例中,数据库被存储在非易失性存储器内,并且缓存被存储在易失性存储器内。在多个数据库会话共享对相同数据的访问时,会话中执行的用户命令可以在一部分数据库被服务于该会话的数据库实例使用时锁定这部分数据库。例如,用户会话可以锁定用于排他性的读和/或写访问的部分,并且在所述部分已锁定时其他的用户会话被禁止访问和/或修改所述部分。用户会话在数据库实例完成对所述数据库部分的访问和/或修改之后再释放锁定。在锁定被释放后,其他的实例即可访问和/或修改所述部分或者获得对所述部分的锁定。数据库命令可以用跟数据库实例所支持的数据库语言相符的数据库语句的形式提交给数据库实例。被多种数据库实例支持的数据库语言的一个非限制性示例是调用数据操作语言(“DML”)的结构化查询语言(“SQL”),包括例如像这样的数据库服务器(譬如Database11g)所支持的专用形式的SQL。SQL数据定义语言(“DDL”)指令被发送给数据库服务器以创建或配置数据库对象例如表、视图或复杂类型。尽管SQL作为一个示例而被提及,但是还有很多其他的示例性数据库语言和用于数据库的开放接口,其中任何一种都可以结合本文所述的技术使用。过程化语言/结构化查询语言(“PL/SQL”)通过提供在过程化语言中获得的结构来扩展SQL,由此得到比标准SQL更加强大的结构化语言。PL/SQL命令被组织为由变量声明、包括过程和SQL命令的子命令以及异常处理命令构成的模块。PL/SQL命令可以被发送至数据库服务器以在执行PL/SQL命令时促使数据库服务器执行各种动作。数据库服务器还可以接收和执行基于Java的命令、远程过程调用命令或者跟其他编程语言或结构相符的命令。可以在单次请求中将多条数据库命令从数据库客户端发送至数据库实例以完成工作。数据库命令可以由数据库实例处理,并且数据库实例可以针对请求中提交的所有命令用单次响应向数据库客户端返回结果。在单次交互的请求和响应中处理多条命令可以导致对数据库连接的高效使用。换句话说,在允许通过使用数据库连接的请求提交多条命令时,客户端通常使用数据库连接来提交请求的频率就比较低。应用程序和逻辑连接服务器例如中间层服务器(mid-tierserver)为从数据库请求信息的应用程序提供数据库实例连接。中间层服务器是提供对本文档来自技高网
...
用于数据库事务的幂等性

【技术保护点】
一种方法,包括:在第二会话中由服务器从客户端接收请求,所述请求利用第一会话的逻辑标识符识别出由客户端在第一会话中发送的一条或多条命令的集合;其中所识别的一条或多条命令的集合如果在第一会话中已完成将促使实施:交付事务的第一服务器操作;由服务器确定事务尚未交付;并且响应于所述请求并至少部分地基于确定事务尚未交付,服务器阻止第一会话中的事务完成。

【技术特征摘要】
【国外来华专利技术】2011.09.09 US 13/229,641;2012.04.16 US 13/448,2581.一种用于确定一条或多条命令的输出的方法,包括:服务器在第二会话中从客户端接收对由客户端先前在第一会话中发送的所识别的一条或多条命令的集合的输出的请求;其中所识别的一条或多条命令的集合如果在第一会话中已完成将促使实施:交付事务的第一服务器操作;以及向客户端发送所识别的一条或多条命令的集合已交付的指示的第二服务器操作;其中所识别的一条或多条命令的集合已交付的指示直到第一服务器操作已交付事务且完成一条或多条命令的集合之后才发送至客户端;服务器确定由所识别的一条或多条命令的集合促使的至少一项事务已交付以及是否还有由所识别的一条或多条命令的集合促使的任何事务尚未交付;并且至少部分地基于确定所识别的一条或多条命令的集合中的至少一项事务已交付且所识别的一条或多条命令的集合内至少有一项另外的事务尚未交付,即使客户端在第一会话中没有接收到作为交付所述至少一项事务的结果的报告,服务器在第二会话中向客户端发送对所述请求的响应,指示所识别的一条或多条命令的集合中的至少一项事务已交付但所识别的一条或多条命令的集合内至少还有一项另外的事务尚未交付。2.如权利要求1所述的方法,其中所述请求至少部分地基于在第一会话中完成先前的命令集之后被客户端接收到的逻辑标识符来识别所述一条或多条命令的集合。3.如权利要求1所述的方法,其中所述一条或多条命令的集合是从客户端到服务器的单用户调用,并且其中所述单用户调用如果在第一会话中完成将促使除了第一服务器操作和第二服务器操作以外的多项服务器操作的实施;其中所述多项服务器操作促使交付多项改变。4.如权利要求1所述的方法,其中所述一条或多条命令的集合如果在所述第一会话中完成将在第一服务器操作和第二服务器操作之间促使至少一项服务器操作的实施;并且其中所述第二服务器操作如果在所述第一会话中完成就交付所述至少一项服务器操作向数据库中的一个或多个数据库对象实施的一项或多项临时改变。5.如权利要求1所述的方法,其中所述服务器是在多个会话中提供对数据库的访问的多个服务器中的第一服务器;其中多个会话中的每个会话每次最多被分配给一个服务器;其中由客户端在第一会话中发送一条或多条命令的集合之前,第二服务器在第一会话中向客户端提供对数据库的访问;其中客户端在第一会话中完成先前的命令集之后从第一服务器接收逻辑标识符;其中由客户端在第一会话中发送一条或多条命令的集合之后第一会话变为对客户端不可用;并且其中所述请求至少部分地基于在第一会话中完成先前的命令集之后被客户端接收到的逻辑标识符来识别一条或多条命令的集合。6.如权利要求1所述的方法,其中所述一条或多条命令的集合是一条或多条命令的第一集合,其中针对输出的请求至少部分地基于在第一会话中发送的多个命令集中的一条或多条命令的第一集合所特有的逻辑标识符来识别所述一条或多条命令的第一集合,其中逻辑标识符至少部分地基于在第一会话中发送的一条或多条命令的先前集合完成后才发送至客户端的指示,其中一条或多条命令的先前集合由客户端在第一会话中先于一条或多条命令的第一集合发送。7.如权利要求1所述的方法,其中针对输出的请求至少部分地基于包括先前在第一会话中发送至客户端的信息的逻辑标识符来识别所述一条或多条命令的集合,其中所述逻辑标识符唯一地识别出:在所述第一会话中发送的一条或多条命令的多个集合中的所述一条或多条命令的集合;以及在多个服务器提供对数据库的访问的多个会话中的所述第一会话,其中多个会话中的每个会话每次最多被分配给一个服务器。8.如权利要求1所述的方法,进一步包括:向客户端发送指示一条或多条命令的不同集合已交付的不同消息;如果被交付就在送往客户端的不同消息中附带一条或多条命令的不同集合中的不同逻辑标识符,其中所述不同消息包括一条或多条命令的不同集合中不同的结果集合;其中客户端请求至少部分地基于不同逻辑标识符中的特定逻辑标识符来识别命令的不同集合中的特定命令集合。9.如权利要求1所述的方法,所述方法进一步包括响应于确定一条或多条命令的集合中至少有一项事务尚未交付,通过阻止在第一会话中发送的一条或多条命令的集合中的所述至少一项事务在第一会话中完成来强行设定未交付状态,以使得所述至少一项事务不能在第一会话中交付。10.如权利要求9所述的方法,进一步包括在第二会话中执行所述至少一项事务;其中所述至少一项事务在第一会话和第二会话中最多交付一次。11.如权利要求1所述的方法,进一步包括在第一会话中完成第一服务器操作,并且响应于更新所存储的信息以指示在一条或多条命令的集合中至少有一项另外的事务尚未交付,通过阻止所述至少一项另外的事务不得在第一会话中交付来强行设定未交付状态以使第二会话能够完成所述至少一项另外的事务;其中确定所识别的一条或多条命令的集合内至少有一项事务已交付且所识别的一条或多条命令的集合内至少还有一项另外的事务尚未交付应至少部分地基于所存储的信息。12.如权利要求11所述的方法,进一步包括:响应于确定所识别的一条或多条命令的集合内至少有一项事务已交付且所识别的一条或多条命令的集合内至少还有一项另外的事务尚未交付,通过更新所存储的信息以指示在所识别的一条或多条命令的集合中至少有一项另外的事务已被阻止不得在第一会话中完成而在第一会话中阻止所识别的一条或多条命令的集合内的所述至少一项另外的事务完成来强行设定未交付状态。13.一种用于确定一条或多条命令的输出的方法,包括:服务器在第二会话中从客户端接收请求,所述请求利用第一会话的逻辑标识符识别出由客户端在第一会话中发送的一条或多条命令的集合;其中所识别的一条或多条命令的集合如果在第一会话中已完成就促使实施:交付事务的第一服务器操作;服务器确定在所识别的一条或多条命令的集合中没有已交付的事务;并且响应于请求并且至少部分地基于确定一条或多条命令的集合中没有已交付的事务,服务器通过阻止在第一会话中发送的所识别的...

【专利技术属性】
技术研发人员:C·L·科尔瑞恩S·H·罗艾斯科K·S·尼尔
申请(专利权)人:甲骨文国际公司
类型:发明
国别省市:美国;US

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

1