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

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

【技术实现步骤摘要】
用于数据库事务的幂等性本申请是申请日为2012年9月7日、申请号为201280043616.6、专利技术名称为“用于数据库事务的幂等性”的专利技术专利申请的分案申请。

涉及管理从客户端发送至服务器以供执行的事务性命令集。
技术介绍
服务器和客户端服务器是一种为一个或多个客户端提供服务的操作软件过程。服务器可以是操作用于为客户端提供服务的相关软件的若干不同服务器实例构成的服务器实例(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所述的方法,其中所述命令集包括第一事务和第二事务;其中所述服务...

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

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

1