CN110019530A - 基于分布式数据库的事务处理方法及装置 - Google Patents

基于分布式数据库的事务处理方法及装置 Download PDF

Info

Publication number
CN110019530A
CN110019530A CN201711480599.3A CN201711480599A CN110019530A CN 110019530 A CN110019530 A CN 110019530A CN 201711480599 A CN201711480599 A CN 201711480599A CN 110019530 A CN110019530 A CN 110019530A
Authority
CN
China
Prior art keywords
affairs
transaction
target data
data
target
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
Application number
CN201711480599.3A
Other languages
English (en)
Inventor
陈国庆
李丰
张伟
杜亚明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Baidu Online Network Technology Beijing Co Ltd
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN201711480599.3A priority Critical patent/CN110019530A/zh
Publication of CN110019530A publication Critical patent/CN110019530A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Fuzzy Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种基于分布式数据库的事务处理方法及装置,该方法包括:获取第一事务的数据操作请求,在全局事务控制表查询上述目标数据的当前事务执行状态,根据目标数据的当前事务执行状态,确定目标数据可操作的最新版本,进而对目标数据可操作的最新版本执行第一操作。实现了,在分布式数据库的场景下,可以在全局事务控制表查询上述目标数据的当前事务执行状态,并根据当前事务执行状态,确定目标数据可操作的最新版本,这样即使有并行的事务也可以确定目标数据可操作的最新版本,无需再串行执行事务中的操作,大大提高了事务执行效率。

Description

基于分布式数据库的事务处理方法及装置
技术领域
本发明涉及数据库领域,尤其涉及一种基于分布式数据库的事务处理方法及装置。
背景技术
随着互联网技术的发展,互联网在社会和人们的生活中发挥了越来越重要的作用,应用于各行各业。在数据量遇到爆发式增长的同时,还需要保证数据操作的原子性、一致性,例如金融领域的量化交易、商品购买等场景下,对当前数据库等基础设施在性能、扩展性、可靠性方面提出了更高的要求。
传统的关系型数据库立足于良好的事务模型,但在分布式环境下、处理海量数据和自身扩展性上还存在一些问题。具体地,在分布式环境下的事务处理上,只支持串行模式这一级别。这种串行模式,是一个接一个处理事务。在事务提交过程中分为两个阶段,一个是准备阶段,会先确定这些事务是否都可以提交;二是提交阶段,如果准备阶段确定都可以提交,则确认提交,否则需要回滚,即返回到第一个事务开始重新执行。
采用现有技术,导致事务的执行效率较低。
发明内容
本发明提供一种基于分布式数据库的事务处理方法及装置,用于解决现有基于数据库的事务执行效率低下的问题。
本发明第一方面提供一种基于分布式数据库的事务处理方法,包括:
获取第一事务的数据操作请求,所述第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作;
在全局事务控制表查询所述目标数据的当前事务执行状态,所述全局事务控制表用于存储所述分布式数据库中各数据节点中存储的数据对应的事务执行状态;
根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本;
对所述目标数据可操作的最新版本执行所述第一操作。
在一种可能的设计中,所述获取第一事务的数据操作请求之前,还包括:
接收所述第一事务的建立请求;
根据所述第一事务的建立请求,为所述第一事务分配事务标识,并将所述第一事务在所述分布式数据库中的执行状态记录在所述全局事务控制表。
在一种可能的设计中,所述事务标识用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
可选地,所述对所述目标数据可操作的最新版本执行所述第一操作之前,还包括:
获取第二事务的数据操作请求,所述第二事务的数据操作请求用于请求对目标数据执行第二操作;
根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作。
在一种可能的设计中,若所述第一操作为第一写请求、所述第二操作为第二写请求,所述根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作,包括:
根据所述第一事务的事务标识和所述第二事务的事务标识,确定所述第一事务和第二事务的建立时间顺序;
若所述第一事务的建立时间早于所述第二事务的建立时间,确定对所述目标数据可操作的最新版本执行所述第一操作。
在一种可能的设计中,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本之前,还包括:
确定所述分布式数据库的隔离级别,以及所述隔离级别对应的操作策略;
相应地,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本,包括:
根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
可选地,若所述当前的数据库隔离级别为可重复读、所述第一操作为读请求,所述在全局事务控制表查询所述目标数据的当前事务执行状态,包括:
在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务;
确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同;
若不同,则获取所述目标事务的事务执行状态。
可选地,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本,包括:
若所述目标事务的事务执行状态为生效状态,则确定所述目标事务所修改的目标数据值为所述目标数据可操作的最新版本;或者,
若所述目标事务的事务执行状态为进行中状态或终止状态,则查找所述目标事务之前的事务所修改目标数据的版本作为所述目标数据可操作的最新版本。
本发明第二方面提供一种基于分布式数据库的事务处理装置,包括:
获取模块,用于获取第一事务的数据操作请求,所述第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作;
查询模块,用于在全局事务控制表查询所述目标数据的当前事务执行状态,所述全局事务控制表用于存储所述分布式数据库中各数据节点中存储的数据对应的事务执行状态;
确定模块,用于根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本;
执行模块,用于对所述目标数据可操作的最新版本执行所述第一操作。
可选地,所述装置还包括:
接收模块,用于接收所述第一事务的建立请求;
分配模块,用于根据所述第一事务的建立请求,为所述第一事务分配事务标识,并将所述第一事务在所述分布式数据库中的执行状态记录在所述全局事务控制表。
所述事务标识用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
在一种可能的设计中,所述获取模块,还用于获取第二事务的数据操作请求,所述第二事务的数据操作请求用于请求对目标数据执行第二操作;
所述确定模块,还用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作。
在一种可能的设计中,若所述第一操作为第一写请求、所述第二操作为第二写请求,所述确定模块,具体用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定所述第一事务和第二事务的建立时间顺序;若所述第一事务的建立时间早于所述第二事务的建立时间,确定对所述目标数据可操作的最新版本执行所述第一操作。
在一种可能的设计中,所述确定模块,还用于确定所述分布式数据库的隔离级别,以及所述隔离级别对应的操作策略;
相应地,所述确定模块,具体用于根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
可选地,若所述当前的数据库隔离级别为可重复读、所述第一操作为读请求,所述查询模块,具体用于在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务;确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同;若不同,则获取所述目标事务的事务执行状态。
可选地,所述确定模块,具体用于若所述目标事务的事务执行状态为生效状态,则确定所述目标事务所修改的目标数据值为所述目标数据可操作的最新版本;或者,若所述目标事务的事务执行状态为进行中状态或终止状态,则查找所述目标事务之前的事务所修改目标数据的版本作为所述目标数据可操作的最新版本。
本发明第三方面提供一种基于分布式数据库的事务处理装置,该装置包括处理器和存储器,存储器用于存储程序,处理器调用存储器存储的程序,以执行本申请第一方面提供的方法。
本发明第四方面提供一种基于分布式数据库的事务处理装置,包括用于执行以上第一方面的方法的至少一个处理元件(或芯片)。
本发明第五方面提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行以上第一方面的方法。
本发明提供的基于分布式数据库的事务处理方法及装置中,通过获取第一事务的数据操作请求,在全局事务控制表查询上述目标数据的当前事务执行状态,根据目标数据的当前事务执行状态,确定目标数据可操作的最新版本,进而对目标数据可操作的最新版本执行第一操作。实现了,在分布式数据库的场景下,可以在全局事务控制表查询上述目标数据的当前事务执行状态,并根据当前事务执行状态,确定目标数据可操作的最新版本,这样即使有并行的事务也可以确定目标数据可操作的最新版本,无需再串行执行事务中的操作,大大提高了事务执行效率。另外,不再需要现有的两阶段提交方式,减少了网络交互的次数,提升了数据库性能。在保留分布式数据库扩展性的同事,也引入了分布式事务,即可以处理并行事务,达到了数据库可以兼顾扩展性和并行事务的效果。
附图说明
图1为本发明应用的分布式数据库系统结构示意图;
图2为本发明一实施例提供的基于分布式数据库的事务处理方法流程示意图;
图3为本发明一实施例提供的基于分布式数据库的事务处理方法中事务标识示意图;
图4为本发明一实施例提供的基于分布式数据库的事务处理装置结构示意图;
图5为本发明另一实施例提供的基于分布式数据库的事务处理装置结构示意图;
图6为本发明另一实施例提供的基于分布式数据库的事务处理装置结构示意图。
具体实施方式
图1为本发明应用的分布式数据库系统结构示意图。如图1所示,该分布式数据库可以包括:一个或多个事务管理器01(图1以一个事务管理器为例进行说明)、多个资源管理器02。
资源管理器02均可与事务管理器01进行数据交互。具体地,资源管理器02即数据节点,用于存储数据;事务管理器01用于接收事务相关指令并向对应的资源管理器02下发指令,进而资源管理器02根据事务管理器01的指令执行相关操作,并将操作结果提交给事务管理器01。
需要说明的是,上述一个事务管理器01和多个资源管理器02,可以集成于一个服务器,也可以分布在多个服务器,本发明不作限制。
本发明中的事务可以是对数据库中数据执行的事务指令,一个事务可以包括一系列操作等。例如,建立事务后,会有读操作、写操作等。
本发明针对现有技术事务执行效率低下的问题,提供一种新的基于分布式数据库的事务处理方法。
图2为本发明一实施例提供的基于分布式数据库的事务处理方法流程示意图,该方法的执行主体可以是上述事务管理器,或者上述系统/上述事务管理器所集成的服务器等,在此不作限制。如图2所示,该方法包括:
S201、获取第一事务的数据操作请求。
该第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作。
第一操作可以指对分布式数据库中某个位置的数据执行读操作或写操作等,在此不作限制。
S202、在全局事务控制表查询上述目标数据的当前事务执行状态。
该全局事务控制表用于存储分布式数据库中各数据节点中存储的数据对应的事务执行状态。
需要说明的是,上述系统中会预先建立好全局事务控制表。可选地,全局事务控制表存储在事务管理器01中。全局事务控制表会存储各个事务的执行状态,基于整个系统对事务进行管理。
对于系统中有一个事务管理器01的情况,全局事务控制表就存储在这个事务管理器01中。
对于系统中有多个事务管理器01的情况,全局事务控制表可以存储在其中一个事务管理器01中,也可以以分片的形式存储在多个事务管理器01中,本发明不作限制。
具体地,事务的执行状态可以包括以下几种:
(1)进行中(pending)状态。标识事务为初始状态或者还未提交状态。
(2)生效(committed)状态。标识事务已经提交生效。
(3)终止(aborted)状态。标识事务已经终止或者执行超时,即aborted状态的事务是无效的。
需要说明的是,全局事务控制表中事务执行状态的更新需要保证原子性。且,全局事务控制表中事务执行状态的存储可以是基于键值(Key-Value,简称KV)存储,可以通过复制备份方案保证全局事务控制表中事务执行状态的可用性。
目标数据的当前事务执行状态,指目前包含对目标数据进行操作的事务的事务执行状态。例如第一事务的事务执行状态,以及其他还对目标数据有操作的事务的事务执行状态。
S203、根据目标数据的当前事务执行状态,确定目标数据可操作的最新版本。
资源管理器中会存储每个数据的多个版本。每个版本可以对应一个事务标识。具体地,数据在资源管理器中也是基于KV存储,可以通过KV查找。
在确定了目标数据的当前事务执行状态后,就可以获知目标数据可操作的最新版本。具体地,假设目标数据对应的最新事务还未生效,那么就查找最新生效的结果。例如,当前正在执行的事务会将目标数据写为“01”,但是还未生效,那么确定已经生效的最新目标数据“00”为可操作的最新版本。但并不以此为限,在某些场景下,也可以将进行中的目标数据确定为可操作的最新版本。
S204、对目标数据可操作的最新版本执行第一操作。
本实施例中,获取第一事务的数据操作请求,在全局事务控制表查询上述目标数据的当前事务执行状态,根据目标数据的当前事务执行状态,确定目标数据可操作的最新版本,进而对目标数据可操作的最新版本执行第一操作。实现了,在分布式数据库的场景下,可以在全局事务控制表查询上述目标数据的当前事务执行状态,并根据当前事务执行状态,确定目标数据可操作的最新版本,这样即使有并行的事务也可以确定目标数据可操作的最新版本,无需再串行执行事务中的操作,大大提高了事务执行效率。另外,不再需要现有的两阶段提交方式,减少了网络交互的次数,提升了数据库性能。在保留分布式数据库扩展性的同事,也引入了分布式事务,即可以处理并行事务,达到了数据库可以兼顾扩展性和并行事务的效果。
一种实施方案中,在获取第一事务的数据操作请求之前,还包括:接收该第一事务的建立请求,根据该第一事务的建立请求,为所述第一事务分配事务标识,并将该第一事务在分布式数据库中的执行状态记录在上述全局事务控制表中。
第一事务的建立请求可以是用户输入的事务指令,事务管理器收到事务指令后,先分配标识,进而将该事务记录在全局事务控制表中。
具体地,全局事务控制表中,可以是每个事务有一条记录,包括:事务标识、以及该事务标识对应的事务执行状态。
可选地,每条记录还可以包括:事务标识对应的事务开始时间、事务结束时间、分片标识等。在此不作限制。
其中,为了保证事务执行状态记录尽可能和事务所操作的目标数据在同一个数据节点上,分片标识可以是事务中第一个写操作的分片标识。
事务管理器会实时根据事务的状态变换更新全局事务控制表。
进一步地,由于读操作对数据库的数据不会有实质的影响,为了提高系统的吞吐量,可以在全局事务控制表中存储包含写操作的事务的事务执行状态,即仅包含读操作的事务可以不记录事务执行状态,建立事务之后,可以直接读取目标数据,但不以此为限。
在上述实施例的基础上,事务标识可以用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
事务标识可以是包含多个位的一串数字序列。具体地,事务建立的时间信息可以指收到事务的建立请求的时间点。事务建立的时间信息可以由时间间隔来标识,具体可以包括多个数字位,例如,时间间隔是A毫秒,当前时间为X毫秒,则该事务建立的时间信息可以表示为[X/A]。需要说明的是,本实施中可以灵活配置时间间隔A,本实施例中可以并行处理多个事务,可以根据并行处理的事务数量灵活配置时间间隔A。例如,并行处理的事务数量越多,时间间隔A越小,反之,并行处理的事务数量越小,时间间隔A越大。A和X均大于0。
事务的序列号主要是为了区分同一个数据节点、同一时刻的事务,即同一个数据节点、同一时刻的事务序列号按顺序排列。假设有4个事务,用两个数字位区分,可以为:00、01、10、11。但不以此为限。
事务建立的机器信息可以标识本申请系统所在的设备,例如某个服务器。或者,用于标识事务管理器所在设备等,在此不具体限制。整个系统中,每个机器都有唯一的标识。其中,系统中所有机器可以预先通过时间同步协议,例如网络时间协议(Network TimeProtocol,简称NTP)协议进行时间同步,以保证所有事务参照的时间相同,以便后续进行冲突处理时,可以根据时间信息来进行处理。
可选地,事务标识还可以包括固定的符号位。在此不作限制。
图3为本发明一实施例提供的基于分布式数据库的事务处理方法中事务标识示意图。如图3所示,举例说明,事务标识可以为64位的数字序列。
其中,1位符号位,为“0”或者“1”。其他,标识“事务建立的时间信息”有多个数字位、标识“事务的序列号”有多个数字位、标识“事务建立的机器信息”有多个数字位。
本实施例中,分配了上述事务标识,有助于在多个事务存在冲突时,进行冲突处理。
以第二事务为例,第二事务是区别于上述第一事务的其他事务,系统并行处理第一事务和第二事务。
具体地,上述对目标数据可操作的最新版本执行上述第一操作之前,还包括:获取第二事务的数据操作请求,该第二事务的数据操作请求用于请求对目标数据执行第二操作。根据第一事务的事务标识和第二事务的事务标识,确定对上述目标数据可操作的最新版本执行上述第一操作。
即在第一操作和第二操作都是要对目标数据进行操作,那么只能从中选择一个进行执行。
本实施例中,可以通过第一事务的事务标识和第二事务的事务标识来确定第一事务和第二事务建立的先后顺序,然后按照预设规则确定执行较早或较晚的事务。
需要说明的是,一般第一操作和第二操作中只要有一个为读操作或者两个都为读操作的时候,对数据库没有实质影响,可以不造成冲突,可以都执行。
当第一操作和第二操作都为写操作时,可能会出现冲突,因此需要进行冲突处理。
具体地,当在资源管理器查找目标数据时,发现目标数据有某个版本对应的事务执行状态是pending状态,且对目标数据执行写操作,那么就出现了冲突。
可选地,在第一操作为第一写请求、第二操作为第二写请求时,上述根据第一事务的事务标识和第二事务的事务标识,确定对上述目标数据可操作的最新版本执行上述第一操作,可以是:根据第一事务的事务标识和第二事务的事务标识,确定第一事务和第二事务的建立时间顺序;若第一事务的建立时间早于第二事务的建立时间,则确定对上述目标数据可操作的最新版本执行上述第一操作。
反之,若第一事务的建立时间晚于第二事务的建立时间,则确定对上述目标数据可操作的最新版本执行上述第二操作。
若对上述目标数据可操作的最新版本执行第一操作,则终止第二事务,即第二事务则执行回滚,并更新全局事务控制表,将全局事务控制表中第二事务的事务执行状态修改为“终止状态”,并同步或者异步地更新第二事务将要操作数据的第二事务执行状态为无效状态。同理,若对上述目标数据可操作的最新版本执行第二操作,则终止第一事务,将全局事务控制表中第一事务的事务执行状态修改为“终止状态”,并同步或者异步地更新第一事务将要操作数据的第一事务执行状态为无效状态。
具体地,比较事务标识中事务建立的时间信息,来确定事务的建立时间顺序。
更具体地,可以比较事务标识的大小。对于事务标识为一串数字序列的情况,一般建立较早的事务标识小于建立较晚的事务标识。
另外,如果并行的多个事务出现冲突,均可参照上述原理进行时间比较,在此不在赘述。
进一步地,基于分布式数据库,有不同的隔离级别。系统在不同的隔离级别下确定目标数据可操作的最新版本的策略也不同。这里主要是针对事务中读操作的策略会有不同。
其中,隔离级别是预先配置好的,可以根据具体的场景需要,配置整个系统的隔离级别。目前,有至少四种隔离级别如下:
1)可重复读(REPEATABLE READ):同一个事务内,多次读取同一个数据时,读到的内容相同。即别的事务更新这个数据,不影响这个事务的读取内容。
2)读未提交(READ UNCOMMITTED):即事务执行过程中,还未提交的数据,对其他事务也可见。即可以读取到其他事务修改中的数据。
3)提交读(READ COMMITTED):只能读取已经提交生效的数据,即能够看到已经提交生效的事务所做的数据修改。
4)可串行化(SERIALIZABLE):强制事务串行执行。即多个事务要依次执行,不能同时执行多个事务。
上述根据目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本之前,可以先确定分布式数据库的隔离级别,以及该隔离级别对应的操作策略。相应地,
根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
本发明主要针对“可重复读”场景:
若当前的数据库隔离级别为可重复读、第一操作为读请求,那么上述在全局事务控制表查询目标数据的当前事务执行状态,可以是:在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务,确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同,若不同,则获取目标事务的事务执行状态。
也就是说,如果目标事务版本的目标数据与第一事务版本的目标数据相同,可以直接对目标数据进行读取。否则,先进一步确定目标事务的事务执行状态。
进一步地,根据目标事务的事务执行状态,确定所述目标数据可操作的最新版本可以是:
(1)若目标事务的事务执行状态为生效(committed)状态,则确定目标事务所修改的目标数据就是目标数据可操作的最新版本。即直接返回目标事务所修改的目标数据。
(2)若目标事务的事务执行状态为进行中(pending)状态或终止(aborted)状态,则继续查找目标事务之前事务所修改目标数据的版本作为该目标数据可操作的最新版本。
目标事务所修改的目标数据是指在隔离级别下可见的最新版本目标数据,即最大值的事务标识对应的目标数据。如果目标事务的当前事务执行状态为pending、或aborted,向前查找比最大的事务标识小的事务标识对应的目标数据,然后进行读取。
如果目标数据对应的事务中,不存在committed状态的事务,那么不读取目标数据,且返回无数据记录的通知。
另一实施例中,若当前的数据库隔离级别为READ UNCOMMITTED、第一操作为读请求,那么:
先查询目标数据对应的事务标识最大的事务,即当前可见的最新版本目标数据。如果事务标识最大的事务就是第一事务,那么直接读取当前可见的最新版本目标数据。如果事务标识最大的事务不是第一事务,那么进一步地在全局事务控制表查询目标数据对应的事务标识最大的事务的当前事务执行状态。
若目标数据对应的事务标识最大的事务的当前事务执行状态为committed或pending状态,则确定当前可见的最新版本目标数据就是目标数据可操作的最新版本。即直接返回目标数据的当前记录。
若目标数据对应的事务标识最大的事务的当前事务执行状态为aborted状态,则继续查找对应的事务标识最大的事务之前事务修改目标数据的版本作为该目标数据可操作的最新版本。
即如果目标数据对应的事务标识最大的事务的当前事务执行状态为aborted,向前查找比最大的事务标识小的事务标识对应的目标数据,然后进行读取。
如果目标数据对应的事务中,不存在committed状态的事务,那么不读取目标数据,且返回无数据记录的通知。
又一实施例中,若当前的数据库隔离级别为READ COMMITTED、第一操作为读请求,那么:
先查询目标数据对应的事务标识最大的事务,即当前可见的最新版本目标数据。如果事务标识最大的事务就是第一事务,那么直接读取当前可见的最新版本目标数据。如果事务标识最大的事务不是第一事务,那么进一步地在全局事务控制表查询目标数据对应的事务标识最大的事务的当前事务执行状态。
若目标数据对应的事务标识最大的事务的当前事务执行状态为committed,则确定当前可见的最新版本目标数据就是目标数据可操作的最新版本。即直接返回目标数据的当前记录。
若目标数据对应的事务标识最大的事务的当前事务执行状态为aborted状态或pending状态,则继续查找对应的事务标识最大的事务之前事务修改目标数据的版本作为该目标数据可操作的最新版本。
即如果目标数据对应的事务标识最大的事务的当前事务执行状态为aborted或pending状态,向前查找比最大的事务标识小的事务标识对应的目标数据,然后进行读取。
如果目标数据对应的事务中,不存在committed状态的事务,那么不读取目标数据,且返回无数据记录的通知。
最后,若当前的数据库隔离级别为SERIALIZABLE、第一操作为读请求,那么不存在冲突,直接读取目标数据的最新版本即可。
图4为本发明一实施例提供的基于分布式数据库的事务处理装置结构示意图,如图4所示,该装置包括:获取模块401、查询模块402、确定模块403、执行模块404。
其中:
获取模块401,用于获取第一事务的数据操作请求,所述第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作。
查询模块402,用于在全局事务控制表查询所述目标数据的当前事务执行状态,所述全局事务控制表用于存储所述分布式数据库中各数据节点中存储的数据对应的事务执行状态。
确定模块403,用于根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
执行模块404,用于对所述目标数据可操作的最新版本执行所述第一操作。
本实施例中,通过获取第一事务的数据操作请求,在全局事务控制表查询上述目标数据的当前事务执行状态,根据目标数据的当前事务执行状态,确定目标数据可操作的最新版本,进而对目标数据可操作的最新版本执行第一操作。实现了,在分布式数据库的场景下,可以在全局事务控制表查询上述目标数据的当前事务执行状态,并根据当前事务执行状态,确定目标数据可操作的最新版本,这样即使有并行的事务也可以确定目标数据可操作的最新版本,无需再串行执行事务中的操作,大大提高了事务执行效率。
图5为本发明另一实施例提供的基于分布式数据库的事务处理装置结构示意图,如图5所示,在图4的基础上,该装置还可以包括:接收模块501和分配模块502,其中:
接收模块501,用于接收所述第一事务的建立请求。
分配模块502,用于根据所述第一事务的建立请求,为所述第一事务分配事务标识,并将所述第一事务在所述分布式数据库中的执行状态记录在所述全局事务控制表。
进一步地,所述事务标识用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
一种实施方式中,获取模块401,还用于获取第二事务的数据操作请求,所述第二事务的数据操作请求用于请求对目标数据执行第二操作。
确定模块403,还用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作。
可选地,若所述第一操作为第一写请求、所述第二操作为第二写请求,确定模块403,具体用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定所述第一事务和第二事务的建立时间顺序;若所述第一事务的建立时间早于所述第二事务的建立时间,确定对所述目标数据可操作的最新版本执行所述第一操作。
另一实施方式中,确定模块403,还用于确定所述分布式数据库的隔离级别,以及所述隔离级别对应的操作策略。
相应地,对于确定所述目标数据可操作的最新版本,确定模块403,具体用于根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
具体实现过程中,若所述当前的数据库隔离级别为可重复读、所述第一操作为读请求,查询模块402,具体用于在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务;确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同;若不同,则获取所述目标事务的事务执行状态。
可选地,确定模块403,具体用于若所述目标事务的事务执行状态为生效状态,则确定所述目标事务所修改的目标数据值为所述目标数据可操作的最新版本;或者,若所述目标事务的事务执行状态为进行中状态或终止状态,则查找所述目标事务之前的事务所修改目标数据的版本作为所述目标数据可操作的最新版本。
上述装置可用于执行上述方法实施例提供的方法,具体实现方式和技术效果类似,这里不再赘述。
以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(digital singnal processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(CentralProcessing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
图6为本发明另一实施例提供的基于分布式数据库的事务处理装置结构示意图,如图6所示,该装置包括:处理器601和存储器602,其中:
存储器602用于存储程序,处理器601调用存储器602存储的程序,以执行上述方法实施例。具体实现方式和技术效果类似,这里不再赘述。
可选地,本发明还提供一种程序产品,例如计算机可读存储介质,包括程序,该程序在被处理器执行时用于执行上述方法实施例。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取存储器(英文:Random Access Memory,简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

Claims (16)

1.一种基于分布式数据库的事务处理方法,其特征在于,包括:
获取第一事务的数据操作请求,所述第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作;
在全局事务控制表查询所述目标数据的当前事务执行状态,所述全局事务控制表用于存储所述分布式数据库中各数据节点中存储的数据对应的事务执行状态;
根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本;
对所述目标数据可操作的最新版本执行所述第一操作。
2.根据权利要求1所述的方法,其特征在于,所述获取第一事务的数据操作请求之前,还包括:
接收所述第一事务的建立请求;
根据所述第一事务的建立请求,为所述第一事务分配事务标识,并将所述第一事务在所述分布式数据库中的执行状态记录在所述全局事务控制表。
3.根据权利要求2所述的方法,其特征在于,所述事务标识用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
4.根据权利要求3所述的方法,其特征在于,所述对所述目标数据可操作的最新版本执行所述第一操作之前,还包括:
获取第二事务的数据操作请求,所述第二事务的数据操作请求用于请求对目标数据执行第二操作;
根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作。
5.根据权利要求4所述的方法,其特征在于,若所述第一操作为第一写请求、所述第二操作为第二写请求,所述根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作,包括:
根据所述第一事务的事务标识和所述第二事务的事务标识,确定所述第一事务和第二事务的建立时间顺序;
若所述第一事务的建立时间早于所述第二事务的建立时间,确定对所述目标数据可操作的最新版本执行所述第一操作。
6.根据权利要求2-4任一项所述的方法,其特征在于,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本之前,还包括:
确定所述分布式数据库的隔离级别,以及所述隔离级别对应的操作策略;
相应地,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本,包括:
根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
7.根据权利要求6所述的方法,其特征在于,若所述当前的数据库隔离级别为可重复读、所述第一操作为读请求,所述在全局事务控制表查询所述目标数据的当前事务执行状态,包括:
在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务;
确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同;
若不同,则获取所述目标事务的事务执行状态。
8.根据权利要求7所述的方法,其特征在于,所述根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本,包括:
若所述目标事务的事务执行状态为生效状态,则确定所述目标事务所修改的目标数据值为所述目标数据可操作的最新版本;或者,
若所述目标事务的事务执行状态为进行中状态或终止状态,则查找所述目标事务之前的事务所修改目标数据的版本作为所述目标数据可操作的最新版本。
9.一种基于分布式数据库的事务处理装置,其特征在于,包括:
获取模块,用于获取第一事务的数据操作请求,所述第一事务的数据操作请求用于请求对分布式数据库中的目标数据执行第一操作;
查询模块,用于在全局事务控制表查询所述目标数据的当前事务执行状态,所述全局事务控制表用于存储所述分布式数据库中各数据节点中存储的数据对应的事务执行状态;
确定模块,用于根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本;
执行模块,用于对所述目标数据可操作的最新版本执行所述第一操作。
10.根据权利要求9所述的装置,其特征在于,还包括:
接收模块,用于接收所述第一事务的建立请求;
分配模块,用于根据所述第一事务的建立请求,为所述第一事务分配事务标识,并将所述第一事务在所述分布式数据库中的执行状态记录在所述全局事务控制表。
11.根据权利要求10所述的装置,其特征在于,所述事务标识用于标记下述一项或多项信息:事务建立的时间信息、事务的序列号、事务建立的机器信息。
12.根据权利要求11所述的装置,其特征在于,所述获取模块,还用于获取第二事务的数据操作请求,所述第二事务的数据操作请求用于请求对目标数据执行第二操作;
所述确定模块,还用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定对所述目标数据可操作的最新版本执行所述第一操作。
13.根据权利要求12所述的装置,其特征在于,若所述第一操作为第一写请求、所述第二操作为第二写请求,所述确定模块,具体用于根据所述第一事务的事务标识和所述第二事务的事务标识,确定所述第一事务和第二事务的建立时间顺序;若所述第一事务的建立时间早于所述第二事务的建立时间,确定对所述目标数据可操作的最新版本执行所述第一操作。
14.根据权利要求10-13任一项所述的装置,其特征在于,所述确定模块,还用于确定所述分布式数据库的隔离级别,以及所述隔离级别对应的操作策略;
相应地,所述确定模块,具体用于根据所述隔离级别对应的操作策略、以及根据所述目标数据的当前事务执行状态,确定所述目标数据可操作的最新版本。
15.根据权利要求14所述的装置,其特征在于,若所述当前的数据库隔离级别为可重复读、所述第一操作为读请求,所述查询模块,具体用于在全局事务控制表,查询事务标识小于所述第一事务的事务标识的目标事务;确定所述目标数据对应所述目标事务的版本与对应所述第一事务的版本是否相同;若不同,则获取所述目标事务的事务执行状态。
16.根据权利要求15所述的装置,其特征在于,所述确定模块,具体用于若所述目标事务的事务执行状态为生效状态,则确定所述目标事务所修改的目标数据值为所述目标数据可操作的最新版本;或者,若所述目标事务的事务执行状态为进行中状态或终止状态,则查找所述目标事务之前的事务所修改目标数据的版本作为所述目标数据可操作的最新版本。
CN201711480599.3A 2017-12-29 2017-12-29 基于分布式数据库的事务处理方法及装置 Pending CN110019530A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711480599.3A CN110019530A (zh) 2017-12-29 2017-12-29 基于分布式数据库的事务处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711480599.3A CN110019530A (zh) 2017-12-29 2017-12-29 基于分布式数据库的事务处理方法及装置

Publications (1)

Publication Number Publication Date
CN110019530A true CN110019530A (zh) 2019-07-16

Family

ID=67187181

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711480599.3A Pending CN110019530A (zh) 2017-12-29 2017-12-29 基于分布式数据库的事务处理方法及装置

Country Status (1)

Country Link
CN (1) CN110019530A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765178A (zh) * 2019-10-18 2020-02-07 京东数字科技控股有限公司 分布式事务的处理方法及装置、计算机可存储介质
CN111143389A (zh) * 2019-12-27 2020-05-12 腾讯科技(深圳)有限公司 事务执行方法、装置、计算机设备及存储介质
CN111984665A (zh) * 2020-09-10 2020-11-24 上海优扬新媒信息技术有限公司 一种分布式事务处理方法、装置及系统
CN113254483A (zh) * 2021-06-03 2021-08-13 北京金山云网络技术有限公司 请求的处理方法和装置、电子设备和存储介质
WO2021249207A1 (zh) * 2020-06-10 2021-12-16 腾讯科技(深圳)有限公司 数据库事务处理方法、装置、服务器及存储介质
CN114428774A (zh) * 2022-04-02 2022-05-03 北京奥星贝斯科技有限公司 数据库的约束关系检查方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN106570027A (zh) * 2015-10-10 2017-04-19 阿里巴巴集团控股有限公司 一种事务型任务处理方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104793988A (zh) * 2014-01-20 2015-07-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN106033437A (zh) * 2015-03-13 2016-10-19 阿里巴巴集团控股有限公司 一种分布式事务处理方法及系统
CN106570027A (zh) * 2015-10-10 2017-04-19 阿里巴巴集团控股有限公司 一种事务型任务处理方法及装置

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110765178A (zh) * 2019-10-18 2020-02-07 京东数字科技控股有限公司 分布式事务的处理方法及装置、计算机可存储介质
CN110765178B (zh) * 2019-10-18 2021-03-05 京东数字科技控股有限公司 分布式事务的处理方法及装置、计算机可存储介质
CN111143389A (zh) * 2019-12-27 2020-05-12 腾讯科技(深圳)有限公司 事务执行方法、装置、计算机设备及存储介质
CN111143389B (zh) * 2019-12-27 2022-08-05 腾讯科技(深圳)有限公司 事务执行方法、装置、计算机设备及存储介质
WO2021249207A1 (zh) * 2020-06-10 2021-12-16 腾讯科技(深圳)有限公司 数据库事务处理方法、装置、服务器及存储介质
CN111984665A (zh) * 2020-09-10 2020-11-24 上海优扬新媒信息技术有限公司 一种分布式事务处理方法、装置及系统
CN111984665B (zh) * 2020-09-10 2023-07-25 度小满科技(北京)有限公司 一种分布式事务处理方法、装置及系统
CN113254483A (zh) * 2021-06-03 2021-08-13 北京金山云网络技术有限公司 请求的处理方法和装置、电子设备和存储介质
CN114428774A (zh) * 2022-04-02 2022-05-03 北京奥星贝斯科技有限公司 数据库的约束关系检查方法及装置
WO2023186087A1 (zh) * 2022-04-02 2023-10-05 北京奥星贝斯科技有限公司 数据库的约束关系检查方法及装置

Similar Documents

Publication Publication Date Title
CN110019530A (zh) 基于分布式数据库的事务处理方法及装置
EP3120261B1 (en) Dependency-aware transaction batching for data replication
US9747356B2 (en) Eager replication of uncommitted transactions
US10296371B2 (en) Passive two-phase commit system for high-performance distributed transaction execution
CN106598992B (zh) 数据库的操作方法及装置
CN113297320B (zh) 分布式数据库系统及数据处理方法
US8499298B2 (en) Multiprocessing transaction recovery manager
US20100169289A1 (en) Two Phase Commit With Grid Elements
CN109643310A (zh) 用于数据库中数据重分布的系统和方法
JP6877435B2 (ja) データベース動作方法及び装置
EP3396542B1 (en) Database operating method and device
CN106446140A (zh) 用于数据持久化的方法及装置
WO2017128028A1 (zh) 一种事务处理方法及装置
CN113495872A (zh) 分布式数据库中的事务处理方法及系统
CN111061801A (zh) 一种事务型数据库读写分离实现方法
JP2022503497A (ja) バージョンベースのテーブルロック
CN114022148B (zh) 基于区块链的交易冲突检测方法、装置、设备和存储介质
CN107391539B (zh) 事务处理方法、服务器和存储介质
CN110955719A (zh) 一种数据存取处理设备、系统和方法
CN108351801A (zh) 多版本移除管理器
Pankowski Consistency and availability of Data in replicated NoSQL databases
CN109857832A (zh) 一种支付数据的预处理方法和装置
CN111459882B (zh) 分布式文件系统的命名空间事务处理方法和装置
JP2019125100A (ja) 情報処理装置、制御方法、及び制御プログラム
CN112991061B (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
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20190716

Assignee: SHANGHAI YOUYANG NEW MEDIA INFORMATION TECHNOLOGY Co.,Ltd.

Assignor: BAIDU ONLINE NETWORK TECHNOLOGY (BEIJING) Co.,Ltd.

Contract record no.: X2019990000188

Denomination of invention: Transaction processing method and device based on distributed database

License type: Common License

Record date: 20191115

EE01 Entry into force of recordation of patent licensing contract
RJ01 Rejection of invention patent application after publication

Application publication date: 20190716

RJ01 Rejection of invention patent application after publication