CN109522098A - 分布式数据库中的事务处理方法、装置、系统和储存介质 - Google Patents
分布式数据库中的事务处理方法、装置、系统和储存介质 Download PDFInfo
- Publication number
- CN109522098A CN109522098A CN201811437406.0A CN201811437406A CN109522098A CN 109522098 A CN109522098 A CN 109522098A CN 201811437406 A CN201811437406 A CN 201811437406A CN 109522098 A CN109522098 A CN 109522098A
- Authority
- CN
- China
- Prior art keywords
- transaction
- default
- sentence
- global
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种分布式数据库中的事务处理方法、装置、系统和储存介质,该方法包括:当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;如果预设分布式事务的第一语句发送至第一预设计算引擎执行,在第一语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息;通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。本发明实施例的技术方案,使得分布式数据库中的事务中的语句可以发送给系统中的任意计算引擎执行,提高了执行效率和灵活性。
Description
技术领域
本发明实施例涉及分布式数据库技术,尤其涉及一种分布式数据库中的事务处理方法、装置、系统和储存介质。
背景技术
随着网络和信息技术的不断普及,人类产生的数据量正在呈指数级增长。在大数据存储方面,出现了多种以分布式存储系统和NoSQL数据库为基础的解决方案。
现有技术中,在大规模并行处理(Massively Parallel Processor,MPP)构架下,分布式事务一般有一个中心控制节点,分布式事务的执行需要中心节点进行控制。
但是,仅通过中心节点处理分布式事务,在海量数据处理过程中,其执行效率和灵活性都受到限制。
发明内容
本发明实施例提供一种分布式数据库中的事务处理方法、装置、系统和储存介质,以实现提高分布式事务的执行效率和灵活性。
第一方面,本发明实施例提供了一种分布式数据库中的事务处理方法,包括:
当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,所述全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
如果所述预设分布式事务的第一语句发送至第一预设计算引擎执行,在所述第一语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
第二方面,本发明实施例还提供了一种分布式数据库中的事务处理装置,包括:
全局事务状态信息存储模块,用于当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,所述全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
底层事务状态信息更新模块,用于如果所述预设分布式事务的第一语句发送至第一预设计算引擎执行,在所述第一语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
事务状态信息映射关系更新模块,用于通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
第三方面,本发明实施例还提供了一种计算机系统,所述计算机系统包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所提供的分布式数据库中的事务处理方法。
第四方面,本发明实施例还提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所提供的分布式数据库中的事务处理方法。
本发明通过设置全局事务状态管理器,使得分布式数据库中的事务可以发送到系统中的任意计算引擎上执行,解决分布式事务执行效率和灵活性受限的问题,实现提高分布式事务的执行效率和灵活性的效果。
附图说明
图1是本发明实施例一中的分布式数据库中的事务处理方法的流程图;
图2是本发明实施例一中的分布式数据库的结构示意图;
图3是本发明实施例二中的分布式数据库中的事务处理方法的流程图;
图4是本发明实施例三中的分布式数据库中的事务处理方法的流程图;
图5是本发明实施例四中的分布式数据库中的事务处理装置的结构示意图;
图6是本发明实施例五中的一种计算机系统的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的分布式数据库中的事务处理方法的流程图,本实施例可适用于在MPP构架下跨计算引擎处理分布式事务的情况,该方法可以由分布式数据库中的事务处理装置来执行,该装置可以由硬件和/或软件来实现,分布式数据库中的事务处理方法具体包括如下步骤:
步骤110、当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器。
其中,全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系。在MPP架构下,添加全局事务状态管理器,例如全局的Session Store,用来记录事务的状态信息。如图2所示,分布式数据库中,设置全局事务状态管理器210,其分别与第一计算引擎221、第二计算引擎222和第三计算引擎223连接,图2中以3个计算引擎为例,每个计算引擎都与所有数据库实例分别相连,图2中第一计算引擎221分别与第一数据库231、第二数据库232、第三数据库233和第四数据库234相连,第二计算引擎222分别与第一数据库231、第二数据库232、第三数据库233和第四数据库234相连,第三计算引擎223分别与第一数据库231、第二数据库232、第三数据库233和第四数据库234相连。那么,全局事务状态管理器210中存储的全局事务状态信息与第一数据库231、第二数据库232、第三数据库233和第四数据库234中的底层事务状态信息存在映射关系。具体的,每个数据库上有一个连接池,每个连接池的每个连接对应唯一的事务标识transaction ID,用tx_id表示,一个分布式事务由一组<shard_num,tx_id>对其唯一标识,例如[<shard1,tx_id1>,<shard2,tx_id2>,<shard3,tx_id3>],其中,第一数据库中连接池的连接用<shard1,tx_id1>标识,第二数据库中连接池的连接用<shard2,tx_id2>标识,第三数据库中连接池的连接用<shard3,tx_id3>标识,这样事务的隔离性可以由底层的单机数据库来保证。
每个分布式事务由唯一的全局事务ID(Global Transaction ID,GTID)来标识,Session Store中记录GTID到底层事务列表间的映射关系,即map<GTID:[<shard1,tx_id1>,<shard2,tx_id2>…]>
步骤120、如果预设分布式事务的第一语句发送至第一预设计算引擎执行,在第一语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息。
其中,预设分布式事务中的语句会路由到对应的数据库,由可执行该语句的计算引擎执行计算操作。所以,第一预设计算引擎应该是能够执行第一语句的计算引擎。当计算引擎执行完计算操作后,由计算引擎修改预设分布式事务在对应数据库下的底层事务状态信息。
步骤130、通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
其中,在计算引擎修改预设分布式事务在对应数据库下的底层事务状态信息之后,通过计算引擎由计算引擎与全局事务状态管理器Session Store之间的连接,将底层事务状态信息同步到全局事务状态管理器。全局事务状态管理器Session Store更新其存储的全局事务状态信息与底层事务状态信息的映射关系。可选的,Session Store通常使用支持高可用,强一致,高并发的可靠的分布式存储组件,例如Zookeeper或者etcd等等。
本实施例的技术方案,通过设置全局事务状态管理器,使得分布式数据库中的事务可以发送到系统中的任意计算引擎上执行,解决分布式事务执行效率和灵活性受限的问题,实现提高分布式事务的执行效率和灵活性的效果。
实施例二
图3为本发明实施例二提供的分布式数据库中的事务处理方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化,该方法包括:
步骤310、当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器。
步骤320、如果预设分布式事务的第一语句发送至第一预设计算引擎执行,在第一语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息。
步骤330、通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
步骤340、如果预设分布式事务的第二语句发送至第二预设计算引擎执行,将全局事务状态信息发送至第二预设计算引擎;
步骤350、通过第二预设计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息;
步骤360、通过第二预设计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,执行第二语句的计算操作。
其中,预设分布式事务中的语句会路由到对应的数据库,由可执行该语句的计算引擎执行计算操作。第二语句可能是与第一语句不同类型的,如果第二语句和第一语句属于不同类型,那么需要由能够执行第二语句的第二预设计算引擎执行相关计算操作。第二语句可以由系统中的相关组件发现在前语句执行完后,将第二语句转发给第二预设计算引擎。每次计算引擎执行语句前都要获取全局事务状态信息。因此,第二预设计算引擎从全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息,即可知道预设分布式事务中底层数据库对应的连接信息,用这些连接去执行计算操作。
可选的,在步骤360之后,还包括:
如果在第二语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息;
通过第二预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
可选的,在步骤310之前,还包括:
通过命令行参数配置全局事务状态管理器的地址和连接方式。
可选的,步骤310包括:
当预设分布式事务开始执行时,由执行预设分布式事务的第一个计算引擎或者客户端,生成预设分布式事务的全局事务状态信息,发送至全局事务状态管理器进行存储;
如果是由客户端生成预设分布式事务的全局事务状态信息,在生成预设分布式事务的全局事务状态信息之后,还包括:
在客户端保存全局事务状态信息。
示例的,假设有两个计算引擎,分别为计算引擎1和计算引擎2,计算引擎1支持分布式SQL执行,分布式提交。计算引擎2支持执行分布式SQL,但不支持分布式提交。分布式数据库包括四个数据库shard,分别为shard1、shard2、shard3和shard4。
假设一个分布式事务如下:
begin;–-假设GTID为gtid0,gtid0可以由客户端生成,也可以由第一个计算引擎生成,如果是后者,客户端需要保存GTID信息。
insert into test values(1,1,1);–-语句1
select*from test union select*from test;--语句2
commit;
假设语句1只能在计算引擎1上执行,语句2只能在计算引擎2上执行。语句1会被路由到shard2上执行,因而shard2上会产生一个底层数据库的连接,用tx_id2标识。执行完后,分布式事务Session状态变为[<shard2,tx_id2>],计算引擎1发现Session状态发生了改变,因此将此更新同步到Session Store上,Session Store中存储新的Session状态,即gtid0:[<shard2,tx_id2>]。这时语句2需要发送到计算引擎2上执行,并带上GTID信息,即gtid0。计算引擎2去Session Store中查询gtid0对应的Session信息,即可知道分布式事务中底层数据库对应的连接信息,用这些连接去执行计算操作。如果计算引擎2也改变了Session状态,那么它同样要把Session状态同步到Session Store中。最后的分布式提交(commit)操作需要在计算引擎1上进行,但计算引擎1仍需要先去Session Store获得最新的Session信息,从而得知分布式事务的参与者列表。
可以理解的是,上述技术方案中,支持多个计算引擎顺序执行一组事务中的语句,而不仅仅限于两个。
本实施例的技术方案,分布式事务可以由系统中的任意计算引擎执行,实现跨计算引擎执行分布式事务,提高了分布式事务的执行效率和灵活性。
实施例三
图4为本发明实施例三提供的分布式数据库中的事务处理方法的流程图,本实施例的技术方案在上述技术方案的基础上进一步细化,该方法包括:
步骤410、当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器。
步骤420、如果预设分布式事务的第一语句发送至第一预设计算引擎执行,在第一语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息。
步骤430、通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
步骤440、在执行预设分布式事务的过程中,如果语句执行发生故障,判断故障语句是否为幂等语句。
其中,幂等语句为执行多遍不影响结果正确性的语句,例如select语句执行多遍就不会影响结果,同理update t set a=1也是幂等的。
步骤450、如果故障语句为幂等语句,将故障语句及相应的全局事务状态信息发给其他支持故障语句的计算引擎。
其中,当执行到分布式事务中的任一条语句时,如果发生了故障,如果该条语句是幂等的,那么可以直接将该语句发给另一个支持该语句的计算引擎,只要带上GTID信息,那么事务状态可以正确地被恢复出来。
步骤460、通过支持故障语句的计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息。
步骤470、通过支持故障语句的计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,重新执行故障语句的计算操作。
可以理解的是,如果发生故障的那条语句不是幂等的,直接重复执行可能会影响结果的正确性,那么,可选的,在预设分布式事务的每条语句前添加保存点。其中,保存点savepoint,是事务过程中的一个逻辑点,用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。当执行回滚rollback时,通过指定保存点可以回退到指定的点。
相应的,在判断故障语句是否为幂等语句之后,还包括:
如果故障语句非幂等语句,回滚到故障语句对应的保存点,获取保存点对应的全局事务状态信息;
将故障语句及相应的全局事务状态信息发给其他支持故障语句的计算引擎;
通过支持故障语句的计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息;
通过支持故障语句的计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,重新执行故障语句的计算操作。
通过添加保存点savepoint,发生故障时,先rollback到该savepoint然后再重试即可,当然,该操作需要底层的数据库支持savepoint。
本实施例的技术方案,通过添加全局事务状态管理器,实现记录分布式事务的状态信息,由此能实现异常状态下的故障恢复。
实施例四
图5为本发明实施例四提供的分布式数据库中的事务处理装置的结构示意图,该装置可以配置在MPP构架下的分布式数据库中,分布式数据库中的事务处理装置,包括:
全局事务状态信息存储模块510,用于当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
底层事务状态信息更新模块520,用于如果预设分布式事务的第一语句发送至第一预设计算引擎执行,在第一语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息;
事务状态信息映射关系更新模块530,用于如果底层事务状态信息发生变化,通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
本实施例的技术方案,通过设置全局事务状态管理器,使得分布式数据库中的事务可以基于全局事务状态信息在任意计算引擎上执行,解决分布式事务执行效率和灵活性受限的问题,实现提高分布式事务的执行效率和灵活性的效果。
可选的,分布式数据库中的事务处理装置还包括:
全局事务状态信息发送模块,用于在通过第一预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系之后,如果预设分布式事务的第二语句发送至第二预设计算引擎执行,将全局事务状态信息发送至第二预设计算引擎;
底层事务状态信息查询模块,用于通过第二预设计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息;
第二语句执行模块,用于通过第二预设计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,执行第二语句的计算操作。
可选的,分布式数据库中的事务处理装置还包括:
第二底层事务状态信息更新模块,用于在通过第二预设计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,执行第二语句的计算操作之后,如果在第二语句执行完后,更新预设分布式事务在对应数据库下的底层事务状态信息;
第二事务状态信息映射关系更新模块,用于通过第二预设计算引擎将底层事务状态信息同步到全局事务状态管理器,更新全局事务状态信息与底层事务状态信息的映射关系。
可选的,分布式数据库中的事务处理装置还包括:
故障语句判断模块,用于在执行预设分布式事务的过程中,如果语句执行发生故障,判断故障语句是否为幂等语句;
第一故障语句发送模块,用于如果故障语句为幂等语句,将故障语句及相应的全局事务状态信息发给其他支持故障语句的计算引擎;
第一故障语句信息查询模块,用于通过支持故障语句的计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息;
第一故障语句重执行模块,用于通过支持故障语句的计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,重新执行故障语句的计算操作。
可选的,分布式数据库中的事务处理装置还包括:
保存点添加模块,用于在预设分布式事务的每条语句前添加保存点;
相应的,分布式数据库中的事务处理装置还包括:
回滚模块,用于在判断故障语句是否为幂等语句之后,如果故障语句非幂等语句,回滚到故障语句对应的保存点,获取保存点对应的全局事务状态信息;
第二故障语句发送模块,用于将故障语句及相应的全局事务状态信息发给其他支持故障语句的计算引擎;
第二故障语句信息查询模块,用于通过支持故障语句的计算引擎,根据全局事务状态信息,在全局事务状态管理器中查询预设分布式事务对应的底层事务状态信息;
第二故障语句重执行模块,用于通过支持故障语句的计算引擎,根据查询到的底层事务状态信息所对应的数据库的连接信息,重新执行故障语句的计算操作。
可选的,分布式数据库中的事务处理装置,还包括:
全局事务状态管理器配置模块,用于在当预设分布式事务开始执行时,生成预设分布式事务的全局事务状态信息,存储至全局事务状态管理器之前,通过命令行参数配置全局事务状态管理器的地址和连接方式。
可选的,全局事务状态信息存储模块510具体用于:
当预设分布式事务开始执行时,由执行预设分布式事务的第一个计算引擎或者客户端,生成预设分布式事务的全局事务状态信息,发送至全局事务状态管理器进行存储;
如果是由客户端生成预设分布式事务的全局事务状态信息,在生成预设分布式事务的全局事务状态信息之后,还包括:
在客户端保存全局事务状态信息。
上述产品可执行本发明任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。
实施例五
图6为本发明实施例五提供的一种计算机系统的结构示意图,如图6所示,该计算机系统包括处理器610、存储器620、输入装置630和输出装置640;计算机系统中处理器610的数量可以是一个或多个,图6中以一个处理器610为例;计算机系统中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的分布式数据库中的事务处理方法对应的程序指令/模块(例如,分布式数据库中的事务处理装置中的全局事务状态信息存储模块510、底层事务状态信息更新模块520和事务状态信息映射关系更新模块530)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机系统的各种功能应用以及数据处理,即实现上述的分布式数据库中的事务处理方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至计算机系统。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与计算机系统的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种分布式数据库中的事务处理方法,该方法包括:
当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,所述全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
如果所述预设分布式事务的第一语句发送至第一预设计算引擎执行,在所述第一语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的分布式数据库中的事务处理方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种分布式数据库中的事务处理方法,其特征在于,包括:
当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,所述全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
如果所述预设分布式事务的第一语句发送至第一预设计算引擎执行,在所述第一语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
2.根据权利要求1所述的分布式数据库中的事务处理方法,其特征在于,在所述通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系之后,还包括:
如果所述预设分布式事务的第二语句发送至第二预设计算引擎执行,将所述全局事务状态信息发送至所述第二预设计算引擎;
通过所述第二预设计算引擎,根据所述全局事务状态信息,在所述全局事务状态管理器中查询所述预设分布式事务对应的底层事务状态信息;
通过所述第二预设计算引擎,根据查询到的所述底层事务状态信息所对应的数据库的连接信息,执行所述第二语句的计算操作。
3.根据权利要求2所述的分布式数据库中的事务处理方法,其特征在于,在所述通过所述第二预设计算引擎,根据查询到的所述底层事务状态信息所对应的数据库的连接信息,执行所述第二语句的计算操作之后,还包括:
如果在所述第二语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
通过所述第二预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
4.根据权利要求1所述的分布式数据库中的事务处理方法,其特征在于,还包括:
在执行所述预设分布式事务的过程中,如果语句执行发生故障,判断故障语句是否为幂等语句;
如果所述故障语句为幂等语句,将所述故障语句及相应的所述全局事务状态信息发给其他支持所述故障语句的计算引擎;
通过所述支持所述故障语句的计算引擎,根据所述全局事务状态信息,在所述全局事务状态管理器中查询所述预设分布式事务对应的底层事务状态信息;
通过所述支持所述故障语句的计算引擎,根据查询到的所述底层事务状态信息所对应的数据库的连接信息,重新执行所述故障语句的计算操作。
5.根据权利要求4所述的分布式数据库中的事务处理方法,其特征在于,还包括:
在所述预设分布式事务的每条语句前添加保存点;
相应的,在所述判断故障语句是否为幂等语句之后,还包括:
如果所述故障语句非幂等语句,回滚到所述故障语句对应的保存点,获取所述保存点对应的所述全局事务状态信息;
将所述故障语句及相应的所述全局事务状态信息发给其他支持所述故障语句的计算引擎;
通过所述支持所述故障语句的计算引擎,根据所述全局事务状态信息,在所述全局事务状态管理器中查询所述预设分布式事务对应的底层事务状态信息;
通过所述支持所述故障语句的计算引擎,根据查询到的所述底层事务状态信息所对应的数据库的连接信息,重新执行所述故障语句的计算操作。
6.根据权利要求1所述的分布式数据库中的事务处理方法,其特征在于,所述当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器,包括:
当所述预设分布式事务开始执行时,由执行所述预设分布式事务的第一个计算引擎或者客户端,生成所述预设分布式事务的全局事务状态信息,发送至全局事务状态管理器进行存储;
如果是由所述客户端生成所述预设分布式事务的全局事务状态信息,在所述生成所述预设分布式事务的全局事务状态信息之后,还包括:
在客户端保存所述全局事务状态信息。
7.一种分布式数据库中的事务处理装置,其特征在于,包括:
全局事务状态信息存储模块,用于当预设分布式事务开始执行时,生成所述预设分布式事务的全局事务状态信息,存储至全局事务状态管理器;其中,所述全局事务状态信息与至少一个预设数据库的底层事务状态信息存在映射关系;
底层事务状态信息更新模块,用于如果所述预设分布式事务的第一语句发送至第一预设计算引擎执行,在所述第一语句执行完后,更新所述预设分布式事务在对应数据库下的底层事务状态信息;
事务状态信息映射关系更新模块,用于通过所述第一预设计算引擎将所述底层事务状态信息同步到所述全局事务状态管理器,更新所述全局事务状态信息与底层事务状态信息的映射关系。
8.一种计算机系统,其特征在于,所述计算机系统包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的分布式数据库中的事务处理方法。
9.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求1-6中任一所述的分布式数据库中的事务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811437406.0A CN109522098A (zh) | 2018-11-28 | 2018-11-28 | 分布式数据库中的事务处理方法、装置、系统和储存介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811437406.0A CN109522098A (zh) | 2018-11-28 | 2018-11-28 | 分布式数据库中的事务处理方法、装置、系统和储存介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109522098A true CN109522098A (zh) | 2019-03-26 |
Family
ID=65793761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811437406.0A Pending CN109522098A (zh) | 2018-11-28 | 2018-11-28 | 分布式数据库中的事务处理方法、装置、系统和储存介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109522098A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988883A (zh) * | 2019-12-16 | 2021-06-18 | 中兴通讯股份有限公司 | 数据库的数据同步方法、装置以及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661403A (zh) * | 2009-09-17 | 2010-03-03 | 上海交通大学 | 基于替代服务模型的实时网格事务管理系统 |
CN105045929A (zh) * | 2015-08-31 | 2015-11-11 | 国家电网公司 | 一种基于mpp构架的分布式关系型数据库 |
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN106383737A (zh) * | 2016-09-09 | 2017-02-08 | 浪潮软件股份有限公司 | 一种分布式事务处理方法 |
CN106445644A (zh) * | 2016-08-30 | 2017-02-22 | 中国民生银行股份有限公司 | 基于改进的一阶段提交的分布式事务的处理方法和装置 |
CN106462594A (zh) * | 2014-04-10 | 2017-02-22 | 华为技术有限公司 | 一种大规模并行处理数据库的系统和方法 |
CN108027829A (zh) * | 2015-07-10 | 2018-05-11 | 起元技术有限责任公司 | 在具有分布式数据库系统的网络中提供数据库访问控制的系统和架构 |
-
2018
- 2018-11-28 CN CN201811437406.0A patent/CN109522098A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661403A (zh) * | 2009-09-17 | 2010-03-03 | 上海交通大学 | 基于替代服务模型的实时网格事务管理系统 |
CN106462594A (zh) * | 2014-04-10 | 2017-02-22 | 华为技术有限公司 | 一种大规模并行处理数据库的系统和方法 |
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN108027829A (zh) * | 2015-07-10 | 2018-05-11 | 起元技术有限责任公司 | 在具有分布式数据库系统的网络中提供数据库访问控制的系统和架构 |
CN105045929A (zh) * | 2015-08-31 | 2015-11-11 | 国家电网公司 | 一种基于mpp构架的分布式关系型数据库 |
CN106445644A (zh) * | 2016-08-30 | 2017-02-22 | 中国民生银行股份有限公司 | 基于改进的一阶段提交的分布式事务的处理方法和装置 |
CN106383737A (zh) * | 2016-09-09 | 2017-02-08 | 浪潮软件股份有限公司 | 一种分布式事务处理方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112988883A (zh) * | 2019-12-16 | 2021-06-18 | 中兴通讯股份有限公司 | 数据库的数据同步方法、装置以及存储介质 |
CN112988883B (zh) * | 2019-12-16 | 2023-03-10 | 金篆信科有限责任公司 | 数据库的数据同步方法、装置以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA3121919C (en) | System and method for augmenting database applications with blockchain technology | |
EP3117349B1 (en) | System and method for massively parallel processing database | |
CN105608086A (zh) | 分布式数据库系统的事务处理方法及装置 | |
CN103116596B (zh) | 在分布式数据库中执行快照隔离的系统和方法 | |
US20180150230A1 (en) | State machine abstraction for log-based consensus protocols | |
WO2016180164A1 (zh) | 一种分布式事务回滚方法及装置 | |
US8756196B2 (en) | Propagating tables while preserving cyclic foreign key relationships | |
CN103092903A (zh) | 数据库日志并行化 | |
WO2007071592B1 (en) | Commitment of transactions in a distributed system | |
CN103345502B (zh) | 分布式数据库的事务处理方法和系统 | |
CN106991112B (zh) | 信息查询方法及装置 | |
US20100169289A1 (en) | Two Phase Commit With Grid Elements | |
CN111475480B (zh) | 一种日志处理方法及系统 | |
US8417669B2 (en) | Auto-correction in database replication | |
CN110188114A (zh) | 一种数据操作的优化方法、装置、系统、设备和存储介质 | |
CN109002462A (zh) | 一种实现分布式事物的方法及系统 | |
US20140108367A1 (en) | Client apparatus and database server for resumable transaction and method thereof | |
CN112905613A (zh) | 一种异构数据库的数据双向同步方法及装置 | |
US20050154786A1 (en) | Ordering updates in remote copying of data | |
CN109739684A (zh) | 基于向量时钟的分布式键值数据库的副本修复方法与装置 | |
CN115757616A (zh) | 一种基于二进制日志的数据一致性校验方法、装置及介质 | |
CN111367924A (zh) | 数据同步方法、装置、电子设备、存储介质 | |
CN112765126B (zh) | 数据库事务的管理方法、装置、计算机设备和存储介质 | |
CN109522098A (zh) | 分布式数据库中的事务处理方法、装置、系统和储存介质 | |
CN109254791A (zh) | 开发数据的管理方法、计算机可读存储介质和终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190326 |
|
RJ01 | Rejection of invention patent application after publication |