一种分布式数据库事务原子性实现方法及装置制造方法及图纸

技术编号:27811716 阅读:37 留言:0更新日期:2021-03-30 09:48
本申请实施例公开了一种分布式数据库事务原子性实现方法及装置。本申请实施例提供的技术方案通过创建事务对象,并确定事务对象指向的数据对象的数据版本号和数据值,基于比较交换操作,通过事务标识将事务对象和数据对象进行关联,并依据写操作指令对数据对象执行数据操作,从而将执行数据操作后的数据值赋值给数据对象的期望值,并更新数据版本号,在事务对象成功提交并且数据版本号未被其他进程修改时,将数据对象的数据值修改为期望值,并更新数据版本号,完成对数据对象的写操作,实现分布式数据库事务的原子性,有效提高事务的并发量,减少事务执行等待时间,提高了分布式NoSQL数据库事务的吞吐量。NoSQL数据库事务的吞吐量。NoSQL数据库事务的吞吐量。

【技术实现步骤摘要】
一种分布式数据库事务原子性实现方法及装置


[0001]本申请实施例涉及计算机
,尤其涉及一种分布式数据库事务原子性实现方法及装置。

技术介绍

[0002]NoSQL(Not Only SQL)数据库是对不同于传统的关系数据库的数据库管理系统的统称,NoSQL数据库不通过SQL来操作数据,而是通过Get/Set/Delete等少数特定的接口来操作数据。对于分布式NoSQL数据库,数据被分散存储在不同的物理节点中,一个数据库事务往往需要操作不同的物理节点。如果没有原子性保证,那么一个数据库事务的多个操作全部执行完毕后,可能出现针对某个物理节点的操作成功而针对另一个物理节点的操作失败的情况,从而导致业务逻辑的完整性被破坏。
[0003]传统的分布式事务实现方法一般通过集中式事务管理器和锁机制来实现。事务的所有操作均发送给事务管理器,由事务管理器来执行,同时,通过对资源的排它性锁来避免其它事务对某个事务所操作的资源的使用。
[0004]因为所有的事务操作都必须通过集中式事务管理器,在锁机制的排他性影响下,增加了其它想要操作共同资源的事务的等待时间,导致系统的整体吞吐量较低。

技术实现思路

[0005]本申请实施例提供一种分布式数据库事务原子性实现方法及装置,以减少事务的等待时间,提高系统的整体吞吐量。
[0006]在第一方面,本申请实施例提供了一种分布式数据库事务原子性实现方法,包括:
[0007]响应于写操作指令创建事务对象,并确定所述事务对象的事务标识;
[0008]确定所述事务对象指向的数据对象的数据版本号和数据值;
[0009]基于比较交换操作,通过所述事务标识将所述事务对象与每个所述数据对象进行关联,并依据写操作指令对关联的所述数据对象执行相应的数据操作,以将执行数据操作后的数据值赋值给所述数据对象的期望值,并确定更新后的数据版本号;
[0010]基于所述事务对象的事务状态以及所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号。
[0011]在第二方面,本申请实施例提供了一种分布式数据库事务原子性实现装置,包括事务创建模块、数据获取模块、数据操作模块和修改执行模块,其中:
[0012]事务创建模块,用于响应于写操作指令创建事务对象,并确定所述事务对象的事务标识;
[0013]数据获取模块,用于确定所述事务对象指向的数据对象的数据版本号和数据值;
[0014]数据操作模块,用于基于比较交换操作,通过所述事务标识将所述事务对象与每个所述数据对象进行关联,并依据写操作指令对关联的所述数据对象执行相应的数据操作,以将执行数据操作后的数据值赋值给所述数据对象的期望值,并确定更新后的数据版
本号;
[0015]修改执行模块,用于基于所述事务对象的事务状态以及所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号。
[0016]在第三方面,本申请实施例提供了一种计算机设备,包括:存储器以及一个或多个处理器;
[0017]所述存储器,用于存储一个或多个程序;
[0018]当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面所述的分布式数据库事务原子性实现方法。
[0019]在第四方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第一方面所述的分布式数据库事务原子性实现方法。
[0020]本申请实施例通过创建事务对象,并确定事务对象指向的数据对象的数据版本号和数据值,基于比较交换操作,通过事务标识将事务对象和数据对象进行关联,并依据写操作指令对数据对象执行数据操作,从而将执行数据操作后的数据值赋值给数据对象的期望值,并更新数据版本号,在事务对象成功提交并且数据版本号未被其他进程修改时,将数据对象的数据值修改为期望值,并更新数据版本号,完成对数据对象的写操作,将事务管理器的功能放在客户端,借助分布式NoSQL数据库系统的无锁比较交换操作,实现分布式数据库事务的原子性,有效提高事务的并发量,减少事务执行等待时间,提高了分布式NoSQL数据库事务的吞吐量。
附图说明
[0021]图1是本申请实施例提供的一种分布式数据库事务原子性实现方法的流程图;
[0022]图2是本申请实施例提供的另一种分布式数据库事务原子性实现方法的流程图;
[0023]图3是本申请实施例提供的一种事务对象的事务状态变化示意图;
[0024]图4是本申请实施例提供的一种对事务对象的清理操作的流程图;
[0025]图5是本申请实施例提供的一种转账事务的流程图;
[0026]图6是本申请实施例提供的一种转账事务中存储节点和客户端的关系示意图;
[0027]图7是本申请实施例提供的一种分布式数据库事务原子性实现装置的结构示意图;
[0028]图8是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
[0029]为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中
的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
[0030]图1给出了本申请实施例提供的一种分布式数据库事务原子性实现方法的流程图,本申请实施例提供的分布式数据库事务原子性实现方法可以由分布式数据库事务原子性实现装置来执行,该分布式数据库事务原子性实现装置可以通过硬件和/或软件的方式实现,并集成在计算机设备中。
[0031]下述以分布式数据库事务原子性实现装置执行分布式数据库事务原子性实现方法为例进行描述。参考图1,该分布式数据库事务原子性实现方法包括:
[0032]S101:响应于写操作指令创建事务对象,并确定所述事务对象的事务标识。
[0033]其中,在本实施例提供的分布式数据库系统中,包含有多个存储节点,这些存储节点中保存有多个数据对象。本实施例提供的事务由外部操作输入进行触发,外部输入根据事务所涉及的数据对象以及需要对数据对象进行的数据操作,向客户端发出写操作指令。
[0034]示例性的,在接收到写操作指令时,响应于该写操作指令创建事务对象,并确定该事务对象的事务标识,根据该事务标识可定位到其所指向的具体事务对象。
[0035]S102:确定所述事务对象本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库事务原子性实现方法,其特征在于,包括:响应于写操作指令创建事务对象,并确定所述事务对象的事务标识;确定所述事务对象指向的数据对象的数据版本号和数据值;基于比较交换操作,通过所述事务标识将所述事务对象与每个所述数据对象进行关联,并依据写操作指令对关联的所述数据对象执行相应的数据操作,以将执行数据操作后的数据值赋值给所述数据对象的期望值,并确定更新后的数据版本号;基于所述事务对象的事务状态以及所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号。2.根据权利要求1所述的分布式数据库事务原子性实现方法,其特征在于,所述通过所述事务标识将所述事务对象与每个所述数据对象进行关联,包括:利用所述事务对象的事务标识赋值给每个所述数据对象的关联事务标识,以将所述事务对象与所述数据对象进行关联。3.根据权利要求1所述的分布式数据库事务原子性实现方法,其特征在于,所述依据写操作指令对关联的所述数据对象执行相应的数据操作,以将执行数据操作后的数据值赋值给所述数据对象的期望值,并确定更新后的数据版本号,包括:依据写操作指令对每个关联的所述数据对象的数据值进行相应的数据操作,并将执行数据操作后的数据值赋值给对应的所述数据对象的期望值;对每个所述数据对象的数据版本号进行版本号升级处理。4.根据权利要求1所述的分布式数据库事务原子性实现方法,其特征在于,所述确定更新后的数据版本号之后,还包括:基于所述比较交换操作返回的操作结果指示判断比较交换操作是否操作成功;若比较交换操作失败,则删除所述事务对象。5.根据权利要求1所述的分布式数据库事务原子性实现方法,其特征在于,所述确定所述事务对象的事务标识,包括:确定所述事务对象的事务标识和事务版本号;所述根据所述数据对象的期望值对数据值进行修改之前,还包括:判断所述事务版本号与所述事务对象的当前事务版本号是否一致;若一致,则将所述事务对象的事务状态设置为事务完成状态,并更新所述事务版本号。6.根据权利要求1所述的分布式数据库事务原子性实现方法,其特征在于,所述基于所述事务对象的事务状态以及所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号,包括:判断所述事务对象的事务状态是否为事务完成状态;若是,则基于所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号;否则,根据所述数据版本号的同步状态,对所述数据对象进行回滚操作,并更新所述数据版本号。7.根据权利要求6所述的分布式数据库事务原子性实现方法,其特征在于,所述基于所述数据版本号的同步状态,根据所述数据对象的期望值对数据值进行修改,并更新所述数据版本号,包括:
判断所述数据版本号与所述数据对象的当前数据版本号是否一致;若是,则将所述数据对象的数据值设置为期望值,并将所述数据对象的期望值以及关联事务标识设置为空值,同时对所述数据对象的数据版本号进行版本号升级处理。8.根据权利要求6所述的分布式数据库事...

【专利技术属性】
技术研发人员:吴祖洋简怀兵
申请(专利权)人:百果园技术新加坡有限公司
类型:发明
国别省市:

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

1