CN107977376B - 分布式数据库系统及事务处理方法 - Google Patents
分布式数据库系统及事务处理方法 Download PDFInfo
- Publication number
- CN107977376B CN107977376B CN201610932469.8A CN201610932469A CN107977376B CN 107977376 B CN107977376 B CN 107977376B CN 201610932469 A CN201610932469 A CN 201610932469A CN 107977376 B CN107977376 B CN 107977376B
- Authority
- CN
- China
- Prior art keywords
- transaction
- target data
- lock
- data
- locking
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库系统及事务处理方法;存储层,包括至少两个存储服务器,用于将数据分区后分布在至少两个服务器中存储;访问层,用于接收用户发起的事务,向锁服务层请求锁定存储层中存储的事务需要访问的目标数据;锁服务层,用于根据所维护存储层中数据的锁定记录确定目标数据是否处于锁定状态,响应事务针对目标数据的锁定请求,或者,将事务针对目标数据的锁定请求进行阻塞,并存储到目标数据对应队列中进行排队。实施本发明,能够在分布式数据库中支持实现事务访问方式。
Description
技术领域
本发明涉及数据库技术,尤其涉及一种分布式数据库系统及事务处理方法。
背景技术
传统的关系型数据库是建立在关系模型基础上的数据库,为了支持针对数据的连接(join)处理不得不把同一数据存储在一个服务器内,这不利于数据的分散,以及大数据的写入。
随着互联网WEB 2.0网站的兴起,传统的关系型数据库应用在WEB网站,特别是超大规模和高并发的社交关系网络(SNS)的WEB2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
而分布式的数据库,包括分布式的关系型数据库和分布式的非关系型数据库(NoSQL)则由于其本身的特点得到了非常迅速的发展。
例如,非关系型数据库不支持以事务(事务是指针对数据的相互关联的一系列操作)的方式访问数据,因此各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。
目前,实际应用中,存在大量的应用场景需要分布式的数据库支持事务的访问方式,针对如下的支付场景进行记录的数据库,向数据库提交的事务包括如下的数据库操作:从消费者账户转出货款,向商家商户转入转出的货款。
如果分布式系统不支持事务访问方式,则可能由于在上述的操作之间插入的针对消费者账户或商户账户的操作而导致出错,例如可能出现消费者利用同一笔钱多次购买的支付漏洞。如何在分布式数据库中支持实现事务型的访问,相关技术尚无有效解决方案。
发明内容
本发明实施例提供一种分布式数据库系统及事务处理方法,能够在分布式数据库中支持实现事务访问方式。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种分布式数据库系统,包括:
存储层,包括至少两个存储服务器,用于将数据分区后分布在至少两个服务器中存储;
访问层,用于接收用户发起的事务,向锁服务层请求锁定所述存储层中存储的所述事务需要访问的目标数据;
锁服务层,用于根据所维护所述存储层中数据的锁定记录确定所述目标数据是否处于锁定状态,响应所述事务针对所述目标数据的锁定请求,或者,
将所述事务针对所述目标数据的锁定请求进行阻塞,并存储到所述目标数据对应队列中进行排队。
第二方面,本发明实施例提供一种事务处理方法,包括:
将数据分区后分布在至少两个服务器中存储;
接收用户发起的事务,锁定所述存储层中存储的所述事务需要访问的目标数据;
根据所维护所述数据的锁定记录确定所述目标数据是否处于锁定状态,响应所述事务针对所述目标数据的锁定请求,或者,
将所述事务针对所述目标数据的锁定请求进行阻塞,并存储到所述目标数据对应队列中进行排队。
第三方面,本发明实施例提供一种存储介质,包括有可执行指令,用于执行本发明实施例提供的事务处理方法。
本发明实施例具有这样的有益效果:
通过对事务需要访问的目标数据进行锁定处理,使得只有当前响应的事务可以访问目标数据,即使用户又发起相同目标数据的事务或操作,由于事务没有访问该目标数据的权限,从而避免其他事务或操作对该目标数据进行操作导致冲突的问题,实现了事务之间的隔离性;
同时,对于用户后续发起的操作而言,同样不能访问处于锁定状态的目标数据,这就避免了在执行事务所包括的操作时插入其他操作访问目标数据的可能性,实现了事务的原子性。
附图说明
图1是本发明实施例中数据库的表结构的一个可选的示意图;
图2是本发明实施例中提供的单机数据库系统的一个可选的架构示意图;
图3是本发明实施例中提供的分布式数据库系统的一个可选的软硬件结构示意图;
图4-1是本发明实施例中提供的分布式数据库系统的一个可选的架构示意图;
图4-2是本发明实施例中提供的分布式数据库系统的一个可选的架构示意图;
图5-1至图5-4是本发明实施例中提供的事务处理方法的可选的流程示意图;
图6-1至图6-3是本发明实施例中提供的事务操作实现隔离性的示意图。
具体实施方式
以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所提供的实施例仅仅用以解释本发明,并不用于限定本发明。另外,以下所提供的实施例是用于实施本发明的部分实施例,而非提供实施本发明的全部实施例,在不冲突的情况下,本发明实施例记载的技术方案可以任意组合的方式实施。
这里,首先对本发明实施例中涉及的关系型数据库和非关系型数据进行说明。
关系型数据库是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。现实世界中的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型实质上就是指二维表格模型,因而关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系模型构成了目前数据存储的传统标准,例如标准数据查询语言(SQL,Structured Query Language)就是一种基于关系型数据库的语言,这种语言执行对关系型数据库中数据的检索和操作。
如图1所示,一个数据库包括一个或多个表。表是以行和列的形式组织起来的数据的集合,图1示出的数据组织形式适用于关系型数据库和非关系型数据库。
例如,可能有一个有关作者信息的名为authors的表。每列都包含特定类型的,如作者的姓氏。每行都包含有关特定作者的所有信息:姓名、住址等等。在关系型数据库当中一个表就是一个关系,一个关系型数据库可以包含多个表。
传统的关系型数据库(是指,同一数据存储在一个服务器内的非分布式存储)中支持以事务的方式对数据进行访问,事务包括对数据库进行的一系列的操作,包括:检索(也即查询)和更新(增加数据、删除数据和修改已有数据)。
一般地,事务均涉及对数据库中数据的更新,数据库软件响应事务时,包括开启事务,执行事务中所包括的操作、以及提交事务也即提交操作所更新的数据至数据库三个阶段。在事务开启后,执行事务中的一系列操作,在执行操作完毕时,向数据库提交更新的数据(一般地,事务均涉及到对数据的更新),当然,还可以使用回滚事务的方式撤销事务开启后针对数据执行的一系列操作,相当于没有对数据进行更新。
为了保证事务对数据库的操作的完整性,在传统的关系型数据库的事务机制中,事务访问需要具有原子性和隔离性,下面分别进行说明。
1)事务的原子性是指,事务中包含的操作作为数据库的逻辑工作单位,具有强关联性,必须连续地一次性执行,也即要么全部执行,要么完全不执行。在一个事务被执行完毕后,这时对数据的所有的更新对其他事务是可见的,或者完全没有更新。前者称事务已提交,后者称事务撤销(或事务流产)。
例如,如果把一个事务看作是一个程序,它要么完整的被执行,要么完全不执行,就是说事务的一系列操作或者完全应用到数据库或者完全不影响数据库。
2)事务的隔离性是指,并发的事务是相互隔离的。即一个事务内部的操作及正在访问的数据必须封锁起来,避免其它事务对该数据更新。隔离性是针对并发事务间的冲突提供的安全保证。
可以通过对事务访问的数据加锁的方式在并发的事务之间进行隔离,可以避免异常情况出现。
对于使用单机(使用单一存储服务器存储数据)的数据库系统来说,由于只使用一个存储服务器(也可视为存储节点)存储数据,因此可以通过串行或单机内多任务调度的办法来实现事务的隔离性和原子性,下面结合图2进行说明。
图2为本发明实施例提供的数据库系统10的一个可选的结构示意图,数据存储于单一的存储服务器12(在运行的操作系统部署数据库软件而形成数据库)承载的数据库中,因此,各事务操作的对象总是指向存储服务器12的数据库中的数据,为了实现事务的隔离性,当用户11(通过客户端)发起的事务(例如,图2中的事务1和事务2)操作存储服务器12中的同一数据时,使用串行或调度的方式进行处理。
为便于说明,下文中图2中以存储服务器12响应用户11的并发的多个事务进行说明,可以理解地,对于多个访问方发起的多个事务适用于下文的记载。
例如,按照特定顺序事务对事务1和事务2进行处理,假设访问方发起的事务1先于用户11发起的事务2,则按照事务1-事务2的先后顺序,存储服务器12部署的数据库软件首先执行事务1:执行事务1中包括的操作,提交事务1针对数据的更新到数据库,至此事务1结束。然后执行事务2包括的操作,提交事务2针对数据的更新至数据库,至此事务2结束。
又例如,根据预定的调度算法调度事务进行响应,示例性地,根据访问方的优先级依次调度事务,假设事务2的调度优先级高于事务1,则按照事务2-事务1的先后顺序调度响应事务,存储服务器12部署的数据库软件首先执行事务2:执行事务2中包括的操作,提交事务2针对数据的更新到数据库,至此事务2结束。然后执行事务1包括的操作,提交事务1针对数据的更新至数据库,至此事务1结束。
对于多个事务的处理可以参照上述方案而实施,可以看出,对于包括单个存储服务器的数据库系统来说,通过串行或调度的方式即可实现事务之间的隔离性,但是,对于分布式数据库系统,由于同一数据(例如用户的账户数据)可能分布在多个存储服务器中,因此无法简单应用上述串行或调度的方式处理事务。
如图3所示分布式数据库系统20的一个可选的软硬件结构示意图,数据库系统20可以由硬件、数据库(以特定组织格式存储的数据)和软件构成。
其中硬件是指构成计算机系统的各种物理设备,包括存储所需的外部设备,硬件的配置应满足整个数据库系统的需要。
数据库是指长期存储在计算机内的、有组织和可共享的数据的集合。数据库中的数据按一定的关系模型组织、描述和存储,具有较小的冗余,较高的数据独立性和易扩展性,并可为各种用户共享。
软件:包括操作系统、数据库软件如数据库管理系统(DBMS,Database ManagementSystem)以及应用程序,数据库软件在操作系统的支持下工作,解决如何地组织和存储数据,如何获取和维护数据的问题。其主要功能包括:数据的组织格式的定义、数据访问功能、数据库的运行管理和数据库的建立与维护。
在图3示例性示出的分布式数据库系统20的一个可选的架构示意图进行说明。
存储集群(对应存储层)的多个存储服务器运行的操作系统中部署数据库软件(如分布式关系型数据库软件、分布式非关系型数据库软件)以形成数据库,数据分布存储在多个存储服务器承载的数据库中。
访问服务器(对应访问服务层),作为分布式数据库系统的入口,运行的操作系统中运行应用,用于接收用户发起的事务或操作(这里的操作是指非事务型的操作,也就是说各操作之间不具有关联性),与存储服务器以及锁服务器交互,实现对用户发起的事务或操作的响应,包括向锁服务器请求锁定事务的目标数据、向存储服务器提交用户发起的事务或操作供存储集群执行,在必要时,向发起事务或者操作的用户返回结果。
锁服务器(对应锁服务层),维护存储集群中存储的数据的锁定记录,也就是记录在存储集群中处于锁定状态的数据;在锁服务器运行的操作系统部署有锁定请求处理逻辑,根据事务需要访问的目标数据的锁定情况也就是目标数据是否处于锁定状态,对事务针对目标数据的锁定请求进行响应,或者将事务针对目标数据的锁定请求进行阻塞处理(中止响应),以及排队处理,也就是将事务针对目标数据的锁定请求存储到目标数据对应的队列中。
可以理解地,锁服务器能够分别维护针对多个目标数据的队列,每个队列中存储有不同事务针对目标数据的锁定请求,例如:
队列1:事务1针对数据1的锁定请求;事务2针对数据1的锁定请求。
队列2:事务3针对数据2的锁定请求;事务4针对数据2的锁定请求。
结合用户发起的事务的目标数据的不同锁定情况进行说明。
情况1)目标数据未处于锁定状态
当事务对应的目标数据未处于锁定状态,为了避免存储集群执行事务时不会有其他的事务或者操作访问事务造成冲突,锁服务器指示所述存储集群针对事务对目标数据进行锁定,例如通过向存储集群发送针对目标数据的通知锁消息的方式指示,在存储集群返回已经锁定目标数据时,锁服务器本地添加目标数据的锁定记录,以记录目标数据处于锁定状态。
示例性地,锁定目标数据是指,为目标数据添加相应事务的事务锁,使得只有存储集群执行该事务时才可以访问目标数据,从而实现屏蔽存储集群执行其他事务或者操作时访问该目标数据,实现了事务“独占”目标数据的效果。
另外,由于事务的目标数据未处于锁定状态,代表目标数据可以随时被访问,因此锁服务器通知访问服务器向所述存储集群提交所述事务,使存储集群于针对所锁定的所述目标数据执行所述事务。
存储服务器在针对锁定目标数据执行完毕访问服务器锁所提交的事务时,可以通过向锁服务器发送针对目标数据的撤销锁消息,通知已经执行完毕事务,请求解除针对目标数据的锁定,锁服务器根据该消息确定事务执行完毕,如果没有其他事务需要访问该目标数据,则锁服务器可以向存储集群确认撤销锁消息,指示存储集群解除针对目标数据的锁定。
对于事务来说以锁定目标数据的方式访问,避免了因其他事务或操作访问因冲突而出错的可能,实现了事务的原子性。
情况2)目标数据处于锁定状态
这是由于已经针对当前事前之前的事务(称为历史事务)锁定了该目标数据导致,由于目标数据无法访问,为了避免存储集群执行事务出错,锁服务器阻塞访问服务器发送的事务针对目标数据的锁定请求。
例如,锁服务器不向访问服务器返回可以向存储集群提交事务的确认消息,或者,通知访问服务器等待指示后才向存储集群提交事务。
另外,锁服务器还将事务针对目标数据的锁定请求添加到目标数据对应的队列中,等待存储集群向锁服务器发送针对目标数据的解除锁消息,若接收到该解除锁消息,说明存储集群已经执行完毕历史事务,并请求解除锁定,此时由于目标数据的队列非空,因此锁服务器指示向存储集群继续发送针对事务的通知锁消息,使存储集群针对该事务继续锁定目标数据。
对于存储集群来说,可以使用事务的标识区分针对不同事务的锁定操作,从而得知锁定的数据可对哪些事务开放访问。
锁服务器从目标数据的队列中提取锁定请求,指示访问服务器可以向存储集群提交所提取访问请求对应事务,当根据存储集群发送的撤销锁消息确定该事务被存储集群执行完毕时,继续提取队列中的访问请求,直至接收到存储集群发送的撤销锁消息且队列为空,此时不再有事务需要访问目标数据,锁服务器向存储集群确认可以解除目标数据的锁定,清除锁服务器维护的目标数据的锁定记录。
通过队列的方式对事务的锁定请求依次进行响应,避免了事务访问同一数据而冲突的情况,实现了事务访问之间的隔离性。
另外,用户侧还存在向分布式数据库系统发起操作的情况,下面进行说明。
用户向分布式数据库系统发起操作时,访问服务器作为入口接收该操作,并向存储集群提交用户发起的操作,根据存储集群执行操作的情况对应处理。
情况1)存储集群执行操作成功。
说明操作需要访问的目标数据当前未处于锁定状态,这属于分布式数据库中较为普遍的情况,一般来说,用户侧发起的针对分布式数据库系统的操作型访问多于事务型访问,访问服务器直接向存储集群提交操作,多数情况下可以执行操作成功,这种在忽视目标数据是否锁定的情况下,向存储集群“盲”提交操作的方式,可以节省与锁服务器的交互流程,提升操作的处理效率。
2)存储集群执行操作失败。
当存储集群执行操作失败时,存储集群向访问服务器返回出错消息,说明锁服务器已经针对当前事前之前的事务(称为历史事务)锁定了该目标数据导致。
访问服务器根据出错信息得知发起的操作的目标数据已经加锁,将之前发起的操作转换为单一操作事务(也就是仅包括用户发起的该操作的事务),请求锁服务器锁定事务需要访问的目标数据。
为了避免存储集群执行事务出错,锁服务器阻塞访问服务器发送的单一操作事务针对目标数据的锁定请求。
例如,锁服务器不向访问服务器返回可以向存储集群提交事务的确认消息,或者,通知访问服务器等待指示后才向存储集群提交事务。
另外,锁服务器还将单一操作事务针对目标数据的锁定请求添加到目标数据对应的队列中,等待存储集群向锁服务器发送针对目标数据的解除锁消息,若接收到该解除锁消息,说明存储集群已经执行完毕历史事务,并请求解除锁定,此时由于目标数据的队列非空,因此锁服务器指示向存储集群继续发送针对事务的通知锁消息,使存储集群针对该事务继续锁定目标数据。
对于存储集群来说,可以使用事务的标识区分针对不同事务的锁定操作,从而得知锁定的数据可对哪些事务开放访问。
锁服务器从目标数据的队列中提取锁定请求,指示访问服务器可以向存储集群提交所提取访问请求对应事务,当根据存储集群发送的撤销锁消息确定该事务被存储集群执行完毕时,继续提取队列中的访问请求,直至接收到存储集群发送的撤销锁消息且队列为空,此时不再有事务需要访问目标数据,锁服务器向存储集群确认可以解除目标数据的锁定,清除锁服务器维护的目标数据的锁定记录。
在操作的目标数据锁定时,将操作转换为单一操作事务,通过事务的方式对目标数据进行访问,由于事务依次对锁定的目标数据进行访问,实现了操作与事务之间的隔离性。
在4-1示出的分布式数据库系统的一个可选的硬件结构示意图中,分布式数据库系统中使用多个存储服务器(也可视为存储节点)存储数据时,通过在分布式数据库系统中设定锁服务器的方式来实现事务的隔离性和原子性。
如图4-1所示的分布式数据库系统20,包括由多个存储服务器21构成的存储集群、访问服务器22、使用各种客户端访问分布式数据库系统的用户24和锁服务器23,下面分别进行说明。
存储集群中的存储服务器21用于采用分布式的方式存储数据,数据在存储服务器21中进行存储前首先进行分区,分区的数据分散存储在多个存储服务器中。
例如,对于图1表格式的一个有关作者信息的名为authors的表,其中不同的行或列可能分布在不同的存储服务器中,数据可以采用不同的分区方式。
例如,分区的方式为水平分区(Horizontal Partitioning),这种形式的分区是对表的行进行分区,通过这样的方式不同分区里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。
举例来说,一个包含十年发票记录的表可以被分区为十个不同的分区,每个分区包含一年的记录。
又例如,垂直分区(Vertical Partitioning),这种分区方式一般来说是通过对表的垂直划分来减少表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应的行。
举例来说,一个包含了text列(保存字符的列)和BLOB列(保存二进制数据的列)的表,假设这些text列和BLOB列又不经常被访问,则把这些不经常使用的text列和BLOB列划分到另一个单独的分区,在保证数据相关性的同时还能提高访问速度。
另外,存储集群还根据访问服务器的指示锁定数据,并针对执行访问服务器提交的事务或者操作,在事务或者操作结束后通知访问服务器可以撤销锁定。
访问服务器用于统一处理不同用户发起的事务或操作,用户侧的客户端中设置有软件开发套件(SDK,Software Development Kit),SDK事实上形成分布式数据库系统面向用户的接口层,用于向分布式数据库系统发起事务或操作、以及获取相应处理结果的逻辑。
例如,对于用户侧的用于网上支付的客户端来说,用户1向用户2进行网上转账时,用户侧的客户端发起这样的事务:操作1,从用户1的账户转出一笔钱;操作2,向用户2的账户转入一笔钱。
另外,需要指出的是,图4-1中仅示出了一个访问服务器22,实际应用中如图4-2所示,分布式数据库系统中可以设置多个访问服务器22,每个访问服务器22定向对特定的用户24群体发起的事务或操作进行处理。
例如,特定的用户全体可以从用户侧的客户端的类型、用户所属的地区等维度进行划分,实现各访问服务器的负载均衡的效果。
分布式数据库系统针对用户发起的事务进行处理时,参见图5-1示出的事务处理方法的一个可选的流程示意图。
用户经由用户侧的客户端(包括SDK,用于实现向访问服务器发起事务)向分布式数据库系统发起事务(步骤101),访问服务器作为入口,针对事务的目标数据向锁服务器提交锁定请求(步骤102)。锁服务器检索本地数据的锁定记录,检测目标数据是否处于锁定状态,这里,假设检索到目标数据未锁定,则向访问服务器确认目标数据可以锁定,在锁服务器中记录目标数据为锁定状态的锁定记录(步骤103)。
对于目标数据而言,用户向分布式数据库系统提交事务时可以一并提交事务的目标数据在数据库中的索引,使访问服务器获知事务需要访问的目标数据并向锁服务器提交针对目标数据的锁定请求。
锁服务器向存储集群发送通知锁消息,指示存储集群锁定分散存储在各存储服务器的目标数据(步骤104)。存储集群锁定目标数据(步骤105),是指存储集群通过运行的数据库软件,仅对当前的事务开放访问(查询和更新)的目标数据的权限,屏蔽其他事务以及操作对目标数据进行访问。
锁服务器得到目标数据锁定后,通知访问服务器可以向存储集群访问目标数据(步骤106),访问服务器向存储集群提交事务(步骤107),在目标数据的锁定期间,存储集群通过数据库软件执行当前所响应的事务,包括向目标数据执行事务中包括的操作,向存储集群承载的数据库提交针对目标数据的更新,提交成功后事务结束(步骤108)。
在事务结束后,存储集群向锁服务器发送针对目标数据的撤销锁消息(步骤109),指示事务已经结束,可以撤销针对目标数据的锁定,锁服务器清除目标数据的锁定记录(步骤110)。
可以看出,通过锁服务器对事务需要访问的目标数据进行锁定处理,使得只有当前响应的事务可以操作目标数据,例如,当为事务1锁定目标数据后,只有事务1可以访问目标数据,即使用户又发起相同目标数据的事务,由于事务没有访问该目标数据的权限,从而避免其他事务或操作对该目标数据进行操作导致冲突的问题,实现了事务之间的隔离性;
同理,对于用户后续发起的操作而言,同样不能访问处于锁定状态的目标数据,这就避免了在执行事务所包括的操作时插入其他操作访问目标数据的可能性,实现了事务的原子性。
需要指出的是,如果用户发起的事务的需要访问的目标数据不同,则锁服务器对不同目标数据的锁定之间不存在冲突。但是实际应用中,会出现用户发起的两个或多个事务的访问的目标数据相同的情况。
例如,锁服务器针对用户发起的事务1锁定了数据1,后续用户发起目标数据也是数据1的事务2及事务3,针对这样的情况提供对锁定请求进行阻塞以及排队的方案,下面结合图5-2示出的事务处理方法的一个可选的流程示意图进行说明。
用户经由用户侧的客户端(包括SDK,用于实现向访问服务器发起事务)向分布式数据库系统发起事务(步骤201),访问服务器作为入口,针对用户发起的事务的目标数据向锁服务器提交锁定请求(步骤202)。
对于目标数据而言,用户向分布式数据库系统提交事务时可以一并提交事务的目标数据在数据库中的索引,使访问服务器获知事务需要访问的目标数据并向锁服务器提交针对目标数据的锁定请求。
锁服务器检索本地数据的锁定记录,检测目标数据是否处于锁定状态,这里,假设检索到目标数据处于锁定状态,则向访问服务器确认目标数据无法锁定(步骤203),对服务针对目标数据的锁定请求进行阻塞,并将锁定请求存入目标数据相应的队列(步骤204),直至存储集群针对当前锁定的目标数据执行完毕访问服务器在步骤201之前提交的历史事务,并向锁服务器发送针对目标数据的撤销锁消息(步骤205),锁服务器确定目标数据在存储集群中已经处于可访问的状态。
对于队列中的锁定请求,锁服务器执行以下处理:从队列中按照先入先出的顺序提取锁定请求(提取的锁定请求在队列中不再保存),并向存储服务器发送针对事务的通知锁消息(步骤206),指示存储集群针对事务继续锁定目标数据,与之前的锁定的区别在于,针对目标数据添加针对步骤201中用户发起的事务的事务锁,通知访问服务器可以向存储集群提交所提取的锁定请求对应的事务(步骤207)。
访问服务器向存储集群提交相应的事务(从队列中提取的锁定请求所对应的事务)(步骤208),存储集群执行相应事务中包括的操作,提交对目标数据进行更新(步骤209),在向数据库提交更新的数据成功后,事务结束,存储集群向锁服务器发送针对目标数据的撤销锁消息(步骤210)。
锁服务器根据队列中的锁定请求的情况,如果队列中还存在其他事务针对目标数据的锁定请求,则向存储服务器发送通知锁消息,指示存储集群继续保持目标数据的锁定状态,以继续执行队列中的锁定请求所对应的事务,直至接收到存储集群发送的针对目标数据的撤销锁消息,且对应目标数据的队列为空时,锁服务器不再向存储集群发送针对目标数据的通知锁消息,并可以清除目标数据的锁定记录(步骤211)。
例如,针对用户发起的事务1锁定了数据1,后续用户发起目标数据也是数据1的事务2及事务3,由于事务2以及事务3仅需要对数据1进行操作,则锁服务器阻塞事务2和事务3针对数据1的锁定请求,形成事务2锁定请求-事务3锁定请求这样的队列,当锁服务器接收到来自存储集群针对数据1的撤销锁消息,确定事务1结束。
锁服务器发现队列中还存在事务2针对数据1的锁定请求,则再次向存储集群发送通知锁消息以继续锁定数据1,通知访问服务器可以向存储集群提交事务2,存储集群运行数据库软件执行事务2包括的操作对数据1进行更新,向数据库提交数据1的更新结果,在提交成功后存储集群向锁服务器发送针对数据1的撤销锁消息。
当锁服务器接收到来自存储集群针对数据1的撤销锁消息,确定事务2结束,在队列中删除事务2的锁定请求,并顺序提取事务3的访问请求,再次向存储集群发送通知锁消息以锁定数据1,存储集群运行数据库软件执行事务3包括的操作对数据1进行更新,向数据库提交数据1的更新结果,在提交成功后存储集群向锁服务器发送针对数据1的撤销锁消息。
至此,锁服务器发现数据1的队列中不再有锁定请求,则锁服务器可以清除数据1的锁定状态。由于,队列中的锁定请求对应的事务都得到了响应,并且每个事务的响应过程中对目标数据实现了“独占”,确保了事务之间的隔离性和事务的原子性。
分布式数据库系统针对用户发起的操作进行处理时,由于这里的操作是非事务型的操作,操作之间不具有关联性,也就是一个操作的结果对另一个操作不产生影响,针对操作的处理方式与图5-1以及图5-2存在区别。
实际应用中,对分布式数据库系统的访问多数是以操作的形式发起,换句话说,处于锁定状态的数据是少量的数据,因此,对于用户发起的操作,访问服务器可以绕过锁服务器而直接向存储集群提交操作,多数的操作(操作需要访问的数据没有锁定)会被存储集群直接执行,而少数的操作(操作需要访问的数据因被事务访问而处于锁定状态)需要进行队列处理,从而能够提升操作的处理效率,下面结合图5-3和图5-4示出的事务处理方法的一个可选的流程示意图进行说明。
当访问服务器接收到用户侧客户端发起的操作(步骤301)时,访问服务器向存储集群提交操作(步骤302),存储集群根据操作需要访问的目标数据的锁定情况,进行不同的处理:
1)参见图5-3,如果目标数据未处于锁定状态则操作可以被成功执行,例如存储集群通过运行的数据库软件对目标数据执行操作(步骤303a),向存储集群承载的数据库提交操作结果(例如,在操作更新了目标数据时)(步骤304a),向访问服务器返回操作结果,经由访问服务器返回用户。
2)如果目标数据处于锁定状态,说明当前事务之前已经有历史事务在对目标数据进行访问,访问服务器提交的操作会失败(步骤303b),相应地,存储集群发现数据无法操作,向访问服务器返回出错信息(步骤304b),访问服务器根据出错信息得知发起的操作的目标数据已经加锁,将之前发起的操作转换为单一操作事务(步骤305b)。
单一操作事务是将操作以事务的代码语法描述形成,与常规事务的区别在于,单一操作事务中仅包括一个操作,例如对于select操作而言,形成的单一事务的代码描述的一个可选的示例为:
声明事务开始的代码;
select操作;
声明事务结束的代码。
这里,将操作转换为单一操作事务的目的在于,实现相同目标数据的操作与事务之间的隔离性。
由于操作所需要访问的目标数据在锁定时被转换为单一操作事务,也就是将对分布式数据库的操作型访问转换为事务型访问的效果,因此,后续针对单一操作事务的处理可以参照前述的图5-2实施。
具体而言,访问服务器针对单一操作事务向锁服务器提交针对目标数据的锁定请求(步骤306b),锁服务器根据目标数据的锁定记录,确定目标数据处于锁定状态,向访问服务器返回目标数据当前无法锁定(步骤307b),访问服务器将单一操作事务针对目标数据的访问请求进行阻塞,并将单一操作事务针对目标数据的锁定请求存入对应的队列中(步骤308b)。
可以理解地,在目标数据对应的队列不存在时(利用缓存资源)建立队列并加入单一操作事务,在队列中已经有事务排队时,加入到队列的队尾,由于目标数据处于锁定状态,因此目标数据的队列中必然有至少一个事务的锁定请求,这里假设队列中包括新加入的单一操作事务的锁定请求、以及一个常规的事务的锁定请求。
存储集群使用运行的数据库软件执行该常规的事务包括的操作,并向存储集群维护的数据库成功提交更新的数据后,该常规的事务结束,存储集群向锁服务器发送针对目标数据的撤销锁消息(步骤309b),锁服务器发现队列中还存在单一操作事务的锁定请求,因此,向存储集群发送针对目标数据的通知锁消息,使存储集群继续保持针对目标数据的锁定(步骤310b),与存储服务器之前的锁定不同,针对单一操作事务锁定目标数据,使单一操作事务具有访问目标数据的访问权限,而屏蔽其他事务或者操作访问目标数据。
锁服务器通知访问服务器可以向存储集群提交单一操作事务,访问服务器向存储集群提交单一操作事务(步骤311b)。
存储集群基于运行的数据库软件执行访问服务器提交的单一操作事务(步骤312b),单一操作事务结束后,存储集群向锁服务器发送针对目标数据的撤销锁消息(步骤313b),访问服务器发现队列中不再有针对目标数据的锁定请求,因此可以清除针对目标数据的锁定记录(步骤314b)。
另外,访问服务器还可以向用户返回操作的结果。
可以看出,对于用户发起的操作,通过向存储集群直接提交的方式进行响应,由于用户侧发起的操作的比例往往超出发起的操作的比例,因此多数操作可以直接得到响应,确保了操作的处理效率;当操作的目标数据锁定时,则转换为单一操作事务,对相应的锁定请求排队以处理访问目标数据,实现了操作与事务之间的隔离性。
上述分布式数据库系统可以应用于分布式的关系型数据库、分布式的非关系型数据库,以非关系型数据库为例,分布式数据库系统可以应用于分布式的键值(Key-Value)存储数据库、分布式的列存储数据库、分布式的文档型数据库以及分布式的图形(Graph)数据库。
这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。以分布式的键值数据库为例,相关技术提供的键-值(key-vlue)数据库软件来说普遍不支持事务机制,当分布式数据库系统的存储集群运行key-vlue数据库软件时,如果操作需要访问的key处于锁定状态,则访问服务器将操作需要访问的key(代表操作)的锁定请求在队列中排队,当访问服务器接收到存储集群发送的针对key的撤销锁消息时,再次要求存储集群锁定key,并向存储集群提交事务,由于key已经被锁定,因此在执行事务的过程中不会插入执行其他的操作或者事务,操作结束后存储集群向访问服务器通知撤销锁消息,访问服务器通知锁服务器可以清除key的锁定记录。
对在分布式数据库系统中实现事务访问时带来的技术效果进行说明,例如,事务的隔离性可以在事务并发操作时避免出现如下的问题:
问题1)丢失修改,如图6-1所示,两个事务1和2读入同一数据并修改,事务2提交的结果破坏了事务1提交的结果,导致事务1的修改被丢失。
问题2)脏读(Dirty Read):事务1更新了一个数据,如图6-2,如果事务1(计算A-1)提交失败,事务2(计算A-1)读到了该数据的事务1未提交的更新结果,事务2读到的就是脏数据。
问题3)不可重复读(虚读)(Non Repeatable Read):在同一个事务中,对于同一数据读取到的结果不一致。比如,针对同一数据,如图6-3所示,事务2(计算B=B*2)在事务1(计算A+B并验算)提交针对数据的更新前读到的数据,和提交后读到的数据可能不同。
问题4)幻读(Phantom Read):在同一个事务中,同一个查询多次返回的结果不一致。例如,事务A新增了一条记录,事务B在事务A提交前后各执行了一次查询操作,发现后一次比前一次多了一条记录。
如前所述,事务之间的隔离通过对事务的目标数据进行锁定实现,实际应用中,通过锁定可以实现事务之间的不同级别的隔离,示例性地,隔离的级别由低到高可以包括:
读提交(Read Committed):只有在事务针对目标数据的更新被提交到数据库后,其更新结果才会被其他事务访问,可以解决脏读问题。
可重复读(Repeatable Read):在一个事务中,对于同一数据的读取结果总是相同的,无论是否有其他事务对这份数据进行操作,以及这个事务是否提交针对数据的操作结果。可以解决脏读、以及不可重复读的问题。
可序列化(Serializable):事务串行化执行,隔离级别最高,牺牲了数据库的并发性,可以解决针对相同目标数据的并发事务的所有问题。
事务之间隔离的级别和并发事务的吞吐量之间存在反比关系。较多事务的可隔离性可能会带来较高的冲突和较多的事务流产,而流产的事务要消耗资源,这些资源必须要重新被访问,因此,根据对分布式的数据库的性能需求而选择合适的事务的隔离级别。
本发明实施例具有这样的有益效果:
1)通过对事务需要访问的目标数据进行锁定处理,使得只有当前响应的事务可以操作目标数据,例如,当为事务1锁定目标数据后,只有事务1可以访问目标数据,即使用户又发起相同目标数据的事务,由于事务没有访问该目标数据的权限,从而避免其他事务或操作对该目标数据进行操作导致冲突的问题,实现了事务之间的隔离性;
2)对于用户后续发起的操作而言,同样不能访问处于锁定状态的目标数据,这就避免了在执行事务所包括的操作时插入其他操作访问目标数据的可能性,实现了事务的原子性。
3)访问发现数据的队列中不再有锁定请求,则通知锁服务器可以清除数据1的锁定状态。由于,队列中的事务都得到了响应,并且每个事务的响应过程中对目标数据实现了“独占”,确保了事务之间的隔离性和事务的原子性。
4)对于用户发起的操作,通过向存储集群直接提交的方式进行响应,由于用户侧发起的操作的比例往往超出发起的操作的比例,因此多数操作可以直接得到响应,确保了操作的处理效率;当操作的目标数据锁定时,则转换为单一操作事务,对相应的锁定请求排队以处理访问目标数据,实现了操作与事务之间的隔离性。
本领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储事务处理装置、随机存取存储器(RAM,Random Access Memory)、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机事务处理装置(可以是个人计算机、服务器、或者网络事务处理装置等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储事务处理装置、RAM、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (17)
1.一种分布式数据库系统,其特征在于,包括:
存储层,包括至少两个存储服务器,用于将数据分区后分布在至少两个服务器中存储;
访问层,用于接收用户发起的事务,向锁服务层请求锁定所述存储层中存储的所述事务需要访问的目标数据;
接收用户发起的非事务型操作,向所述存储层直接提交所述非事务型操作,其中,所述非事务型操作之间不具有关联性;
当接收到出错消息时,将所述非事务型操作转换成仅包括所述非事务型操作的单一操作事务,并请求所述锁服务层锁定所述单一操作事务需要访问的目标数据;
所述锁服务层,用于根据所维护所述存储层中数据的锁定记录确定所述目标数据是否处于锁定状态;
当确定所述目标数据未处于锁定状态时,响应所述事务针对所述目标数据的锁定请求;
当确定所述目标数据处于锁定状态时,将所述事务针对所述目标数据的锁定请求进行阻塞,并存储到所述目标数据对应队列中进行排队,以及
将所述单一操作事务针对所述目标数据的锁定请求添加到所述目标数据对应的队列中。
2.如权利要求1所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于在所维护所述存储层中数据的锁定记录中查找到所述目标数据的锁定记录时确定所述目标数据处于锁定状态,未查找到所述目标数据的锁定记录时,确定所述目标数据未处于锁定状态。
3.如权利要求1所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于当确定所述目标数据未处于锁定状态时,指示所述存储层开放以执行所述事务的方式访问所述目标数据,屏蔽以执行其他事务的方式访问所述目标数据。
4.如权利要求1所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于当确定所述目标数据未处于锁定状态时,通知所述访问层向所述存储层提交所述事务;
所述存储层,还用于针对所锁定的所述目标数据执行所述事务。
5.如权利要求1所述的分布式数据库系统,其特征在于,
所述访问层,还用于当确定所述目标数据处于锁定状态、且当所述存储层执行完毕针对所述目标数据的历史事务时,指示所述访问层向所述存储层提交所述队列中锁定请求对应的事务,直至所述存储层执行完毕提交的所述事务且所述队列为空。
6.如权利要求1所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于当所述目标数据未处于锁定状态时,形成所述目标数据的锁定记录,当所述存储层执行完毕所述事务时,清除所述目标数据的锁定记录。
7.如权利要求1所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于当确定所述目标数据未处于锁定状态、且当所述存储层执行完毕针对所述目标数据的历史事务时,指示所述访问层向所述存储层提交所述队列中锁定请求对应的事务进行执行,直至所述存储层执行完毕提交的所述事务且所述队列为空。
8.如权利要求7所述的分布式数据库系统,其特征在于,
所述锁服务层,还用于指示所述存储层针对所述队列中锁定请求对应的事务锁定所述目标数据。
9.一种事务处理方法,其特征在于,包括:
将数据分区后分布在至少两个服务器中存储;
接收用户发起的事务,锁定存储层中存储的所述事务需要访问的目标数据;
接收用户发起的非事务型操作,向所述存储层直接提交所述非事务型操作,其中,所述非事务型操作之间不具有关联性;
当接收到出错消息时,将所述非事务型操作转换成仅包括所述非事务型操作的单一操作事务,并请求锁服务层锁定所述单一操作事务需要访问的目标数据;
根据所维护所述存储层中数据的锁定记录确定所述目标数据是否处于锁定状态;
当确定所述目标数据未处于锁定状态时,响应所述事务针对所述目标数据的锁定请求;
当确定所述目标数据处于锁定状态时,将所述事务针对所述目标数据的锁定请求进行阻塞,并存储到所述目标数据对应队列中进行排队,以及
将所述单一操作事务针对所述目标数据的锁定请求添加到所述目标数据对应的队列中。
10.如权利要求9所述的事务处理方法,其特征在于,所述响应所述事务针对所述目标数据的锁定请求,包括:
在所维护的数据的锁定记录中查找到所述目标数据的锁定记录时确定所述目标数据处于锁定状态,未查找到所述目标数据的锁定记录时,确定所述目标数据未处于锁定状态。
11.如权利要求9所述的事务处理方法,其特征在于,所述将所述事务针对所述目标数据的锁定请求进行阻塞,并存储到所述目标数据对应队列中进行排队,包括:
当确定所述目标数据未处于锁定状态时,开放以执行所述事务的方式访问所述目标数据,屏蔽以执行其他事务的方式访问所述目标数据。
12.如权利要求9所述的事务处理方法,其特征在于,还包括:
当确定所述目标数据未处于锁定状态时,提交所述事务,并针对所锁定的所述目标数据执行所述事务。
13.如权利要求9所述的事务处理方法,其特征在于,还包括:
当确定所述目标数据处于锁定状态、且当执行完毕针对所述目标数据的历史事务时,提交所述队列中锁定请求对应的事务并进行执行,直至执行完毕提交的所述事务且所述队列为空。
14.如权利要求9所述的事务处理方法,其特征在于,还包括:
当所述目标数据未处于锁定状态时,形成所述目标数据的锁定记录,当执行完毕所述事务时,清除所述目标数据的锁定记录。
15.如权利要求9所述的事务处理方法,其特征在于,还包括:
当确定所述目标数据未处于锁定状态、且当执行完毕针对所述目标数据的历史事务时,提交所述队列中锁定请求对应的事务,直至所述执行完毕提交的所述事务且所述队列为空。
16.如权利要求15所述的事务处理方法,其特征在于,还包括:
针对所述队列中锁定请求对应的事务锁定所述目标数据。
17.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,当所述计算机程序被至少一个处理器执行时实现如权利要求9至16中任一项所述的事务处理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610932469.8A CN107977376B (zh) | 2016-10-24 | 2016-10-24 | 分布式数据库系统及事务处理方法 |
PCT/CN2017/106568 WO2018077073A1 (zh) | 2016-10-24 | 2017-10-17 | 分布式数据库系统、事务处理方法、锁服务器及存储介质 |
US16/251,401 US11243920B2 (en) | 2016-10-24 | 2019-01-18 | Distributed database system, transaction processing method, lock server and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610932469.8A CN107977376B (zh) | 2016-10-24 | 2016-10-24 | 分布式数据库系统及事务处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107977376A CN107977376A (zh) | 2018-05-01 |
CN107977376B true CN107977376B (zh) | 2020-07-07 |
Family
ID=62003981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610932469.8A Active CN107977376B (zh) | 2016-10-24 | 2016-10-24 | 分布式数据库系统及事务处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11243920B2 (zh) |
CN (1) | CN107977376B (zh) |
WO (1) | WO2018077073A1 (zh) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110521188B (zh) * | 2017-03-17 | 2022-10-11 | 康维达无线有限责任公司 | 网络服务层中的分布式事务管理 |
WO2018176397A1 (zh) * | 2017-03-31 | 2018-10-04 | 华为技术有限公司 | 一种锁分配的方法、装置和计算设备 |
CN110019112B (zh) | 2017-08-25 | 2023-10-31 | 阿里巴巴集团控股有限公司 | 数据事务处理方法、装置以及电子设备 |
CN108959403A (zh) * | 2018-06-06 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种分布式事务处理方法及装置 |
CN109117189B (zh) * | 2018-07-02 | 2021-06-08 | 杭州振牛信息科技有限公司 | 数据处理方法、装置及计算机设备 |
CN109033364A (zh) * | 2018-07-26 | 2018-12-18 | 郑州云海信息技术有限公司 | 一种处理分布式事务的方法、配置中心及节点 |
CN109634665A (zh) * | 2018-11-08 | 2019-04-16 | 阿里巴巴集团控股有限公司 | 一种数据记录并发操作请求的控制方法及装置 |
US11106658B2 (en) * | 2018-11-28 | 2021-08-31 | Snowflake Inc. | Task scheduling in database systems |
US10824345B2 (en) * | 2018-11-29 | 2020-11-03 | Intuit Inc. | Systems and methods for storing object state on hash chains |
CN109783449A (zh) * | 2018-12-13 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 数据查询处理方法、平台、系统及可读存储介质 |
CN109815227B (zh) * | 2018-12-13 | 2024-04-16 | 平安科技(深圳)有限公司 | 数据锁管理方法、装置、计算机设备及存储介质 |
US10691506B2 (en) * | 2018-12-28 | 2020-06-23 | Intel Corporation | Distributed lock for data acquisition systems |
CN110147379B (zh) * | 2019-04-02 | 2023-06-30 | 平安科技(深圳)有限公司 | 基于数据锁的信息采集方法、装置、计算机设备 |
US11296867B2 (en) * | 2019-05-01 | 2022-04-05 | Intuit Inc. | Systems and methods for hash chain migration |
CN110188110B (zh) * | 2019-05-30 | 2024-05-07 | 深圳前海微众银行股份有限公司 | 一种构建分布式锁的方法及装置 |
CN110134704B (zh) * | 2019-05-31 | 2021-11-02 | 厦门大学嘉庚学院 | 一种基于分布式缓存的大数据集群事务实现方法 |
CN110659303A (zh) * | 2019-10-10 | 2020-01-07 | 北京优炫软件股份有限公司 | 一种数据库节点的读写控制方法及装置 |
US11966407B1 (en) * | 2019-10-24 | 2024-04-23 | Luma Health, Inc. | Systems and methods for communicating with a plurality of databases |
CN110888858B (zh) * | 2019-10-29 | 2023-06-30 | 北京奇艺世纪科技有限公司 | 数据库的操作方法和装置、存储介质、电子装置 |
CN110888844B (zh) * | 2019-11-22 | 2023-03-21 | 浪潮电子信息产业股份有限公司 | 一种数据删除方法、系统、设备及计算机可读存储介质 |
US11789922B1 (en) * | 2019-12-13 | 2023-10-17 | Amazon Technologies, Inc. | Admitting for performance ordered operations of atomic transactions across a distributed database |
CN112994916B (zh) * | 2019-12-17 | 2024-05-24 | 中兴通讯股份有限公司 | 业务状态分析方法、服务器及存储介质 |
CN111259034A (zh) * | 2020-02-17 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 一种缓存数据管理方法和相关装置 |
US11422716B2 (en) * | 2020-04-08 | 2022-08-23 | Samsung Electronics Co., Ltd. | Systems and method for distributed read/write locking with network key values for storage devices |
US20220058179A1 (en) * | 2020-08-24 | 2022-02-24 | International Business Machines Corporation | Executing database transactions |
CN112035472B (zh) * | 2020-08-28 | 2023-11-07 | 中国平安财产保险股份有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
CN112632093A (zh) * | 2020-12-30 | 2021-04-09 | 北京嘀嘀无限科技发展有限公司 | 工单处理方法、设备、系统、存储介质及程序产品 |
CN112929280A (zh) * | 2021-01-21 | 2021-06-08 | 中信银行股份有限公司 | 一种应用请求处理方法、系统及计算机可读存储介质 |
CN113610417A (zh) * | 2021-08-13 | 2021-11-05 | 北京沃东天骏信息技术有限公司 | 数据处理方法、装置、计算机系统和存储介质 |
CN115113994B (zh) * | 2021-08-30 | 2023-06-20 | 腾讯科技(深圳)有限公司 | 请求处理方法、装置、计算设备及存储介质 |
CN117597676A (zh) * | 2021-10-20 | 2024-02-23 | 贝宝公司 | 使用排序键的数据库管理 |
CN115495205B (zh) * | 2022-11-01 | 2023-03-14 | 武汉大数据产业发展有限公司 | 一种基于分布式事务锁实现数据一致性的方法和装置 |
CN116303489B (zh) * | 2023-01-16 | 2023-09-01 | 北京优炫软件股份有限公司 | 一种分层局部式表锁的实现方法以及实现系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101273333A (zh) * | 2005-04-13 | 2008-09-24 | 普罗格雷斯软件公司 | 容错分布式锁定管理 |
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式系统下共享资源的访问方法及分布式系统 |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3244166B2 (ja) * | 1996-12-25 | 2002-01-07 | ユニデン株式会社 | 情報予約送信方式及び情報予約送信方法並びに送信サーバ |
US20070040699A1 (en) * | 2005-06-09 | 2007-02-22 | Khairullah Inshan A | Asynchronous physical exchange system |
US7814494B1 (en) * | 2005-08-26 | 2010-10-12 | Oracle America, Inc. | Method and system for performing reliable resource locking |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
US7792805B2 (en) * | 2006-05-30 | 2010-09-07 | Oracle America, Inc. | Fine-locked transactional memory |
JP4295333B2 (ja) * | 2007-05-18 | 2009-07-15 | 株式会社日立製作所 | データベースの制御方法及びプログラム |
CN102135980B (zh) * | 2010-12-21 | 2013-03-13 | 北京高森明晨信息科技有限公司 | 一种处理实时事务的方法及装置 |
CN104065636B (zh) * | 2013-07-02 | 2015-09-16 | 腾讯科技(深圳)有限公司 | 数据处理方法和系统 |
US10296371B2 (en) * | 2014-03-17 | 2019-05-21 | International Business Machines Corporation | Passive two-phase commit system for high-performance distributed transaction execution |
US10157108B2 (en) * | 2014-05-27 | 2018-12-18 | International Business Machines Corporation | Multi-way, zero-copy, passive transaction log collection in distributed transaction systems |
CN104239418B (zh) * | 2014-08-19 | 2018-01-19 | 天津南大通用数据技术股份有限公司 | 支持分布式数据库的分布锁方法以及分布式数据库系统 |
CN105608086B (zh) * | 2014-11-17 | 2021-07-27 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
US10185736B2 (en) * | 2015-04-27 | 2019-01-22 | Microsoft Technology Licensing, Llc | Replicable differential store data structure |
US9740582B2 (en) * | 2015-12-30 | 2017-08-22 | Sybase, Inc. | System and method of failover recovery |
US11080271B2 (en) * | 2016-09-09 | 2021-08-03 | Sap Se | Global database transaction management service |
US10402285B2 (en) * | 2016-09-09 | 2019-09-03 | Sap Se | Hybrid database concurrent transaction control |
-
2016
- 2016-10-24 CN CN201610932469.8A patent/CN107977376B/zh active Active
-
2017
- 2017-10-17 WO PCT/CN2017/106568 patent/WO2018077073A1/zh active Application Filing
-
2019
- 2019-01-18 US US16/251,401 patent/US11243920B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101273333A (zh) * | 2005-04-13 | 2008-09-24 | 普罗格雷斯软件公司 | 容错分布式锁定管理 |
CN103297456A (zh) * | 2012-02-24 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 一种分布式系统下共享资源的访问方法及分布式系统 |
CN102831156A (zh) * | 2012-06-29 | 2012-12-19 | 浙江大学 | 一种云计算平台上的分布式事务处理方法 |
CN103036717A (zh) * | 2012-12-12 | 2013-04-10 | 北京邮电大学 | 分布式数据的一致性维护系统和方法 |
CN105955804A (zh) * | 2016-04-22 | 2016-09-21 | 星环信息科技(上海)有限公司 | 一种处理分布式事务的方法与设备 |
Also Published As
Publication number | Publication date |
---|---|
US11243920B2 (en) | 2022-02-08 |
US20190155795A1 (en) | 2019-05-23 |
WO2018077073A1 (zh) | 2018-05-03 |
CN107977376A (zh) | 2018-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107977376B (zh) | 分布式数据库系统及事务处理方法 | |
AU2016244128B2 (en) | Processing database transactions in a distributed computing system | |
US9400829B2 (en) | Efficient distributed lock manager | |
CN104793988B (zh) | 跨数据库分布式事务的实现方法和装置 | |
US6349310B1 (en) | Database management system and method for accessing rows in a partitioned table | |
US6397227B1 (en) | Database management system and method for updating specified tuple fields upon transaction rollback | |
US6453313B1 (en) | Database management system and method for dequeuing rows published to a database table | |
US7912821B2 (en) | Apparatus and method for data management | |
EP4029191B1 (en) | Supporting blockchain collections in a database | |
US20080215586A1 (en) | Simulating Multi-User Activity While Maintaining Original Linear Request Order for Asynchronous Transactional Events | |
US9460144B2 (en) | Lock acceleration | |
US11436212B2 (en) | Concurrent transaction processing in a database system | |
US11243820B1 (en) | Distributed deadlock detection and resolution in distributed databases | |
Ghandeharizadeh et al. | Strong consistency in cache augmented SQL systems | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
Chen et al. | Peep: A parallel execution engine for permissioned blockchain systems | |
Padhye et al. | Scalable transaction management with snapshot isolation on cloud data management systems | |
Kaur et al. | Concurrency control in distributed database system | |
US11423003B2 (en) | Optimistic concurrency control for database transactions | |
CN113886403A (zh) | 一种针对高竞争电商业务的数据管理系统及事务处理方法 | |
Zhu et al. | Interactive transaction processing for in-memory database system | |
US12135697B2 (en) | Schema evolution for key columnar data into row-organized sequences | |
US12093248B1 (en) | Online index creation for multi-version database without table locks | |
US20240378187A1 (en) | Fencing mechanism of statements for distributed multi-version concurrency control | |
Peluso et al. | On the viability of speculative transactional replication in database systems: a case study with PostgreSQL |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230919 Address after: 518057 Tencent Building, No. 1 High-tech Zone, Nanshan District, Shenzhen City, Guangdong Province, 35 floors Patentee after: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. Patentee after: TENCENT CLOUD COMPUTING (BEIJING) Co.,Ltd. Address before: 2, 518000, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |