CN110168514B - 一种事务处理方法、装置及设备 - Google Patents
一种事务处理方法、装置及设备 Download PDFInfo
- Publication number
- CN110168514B CN110168514B CN201780002963.7A CN201780002963A CN110168514B CN 110168514 B CN110168514 B CN 110168514B CN 201780002963 A CN201780002963 A CN 201780002963A CN 110168514 B CN110168514 B CN 110168514B
- Authority
- CN
- China
- Prior art keywords
- data
- transaction
- partition
- partitions
- snapshots
- 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1865—Transactional file systems
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
- G06F11/1451—Management of the data involved in backup or backup restore by selection of backup contents
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1466—Management of the backup or restore process to make the backup process non-disruptive
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- 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
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
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)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种事务处理方法、装置及设备,涉及数据库技术领域,所述方法包括:接收待处理事务,所述待处理事务是在至少两个数据分区中进行操作的事务(21);获取所述至少两个数据分区对应的,且满足一致性的数据快照(22);根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作(23)。通过对多分区事务涉及的各个数据分区获取满足一致性的数据快照,并基于数据快照进行多分区事务对应的操作,支持读事务和写事务之间的并行执行,避免写事务与读事务之间相互阻塞的情况,从而达到提高系统的吞吐量和服务等级的效果。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种事务处理方法、装置及设备。
背景技术
传统的基于数据库本地事务的解决方案只能保障单个服务的一次处理具有一致性,但无法保障多个分布服务间处理的一致性,因此需要建立一套分布式服务处理之间的协调机制,以实现多版本并发控制(Multi-Version Concurrency Control,MVCC)。
在相关技术中,服务器区分单分区事务(事务操作只涉及一个数据分区)和多分区事务(事务操作涉及多个数据分区),并对每一个数据分区分别设置事务队列。在接收到一个事务时,服务器将单分区事务添加入对应的数据分区的事务队列,并将多分区事务添加到对应的多个数据分区的事务队列。在对事务进行处理时,服务器对各个事务队列中的事务逐一进行处理,其中,为了保证数据分区之间的一致性,对于多个数据分区中相同的多分区写事务,服务器会进行协同处理。
比如,请参考图1,其示出了相关技术涉及的一种事务处理示意图。在图1中,数据分区1对应事务队列1,数据分区2对应事务队列2,其中,事务队列1中包含两个事务,分别为单分区事务1和多分区事务2,而事务队列2中包含两个事务,分别为多分区事务2和单分区事务3。在处理事务的过程中,服务器按照事务队列,首先分别提取出队列1中单分区事务1和队列2中的多分区事务2,此时,服务器针对数据分区1执行单分区事务1,并针对数据分区2执行多分区事务2,在单分区事务1处理完成后,服务器提取到事务队列1中的多分区事务2,此时,由于针对数据分区1的多分区事务2尚未执行完成,此时即便针对数据分区2的多分区事务2已经执行完成,服务器也不会立刻执行队列2中的单分区事务3,而是等待针对数据分区2的多分区事务2执行完成后,再执行单分区事务3。
多分区事务一般是长事务,通常处理的时间比较久,而单分区事务通常是短事务,处理的时间比较短,在上述相关技术中,当不同的事务队列中的相同多分区事务的处理进度不同时,多分区事务的处理会对单分区事务形成阻塞,从而导致系统的吞吐量和服务等级不高,影响用户体验。
发明内容
为了提高系统的吞吐量和服务等级,本申请的实施例提供了一种事务处理方法、装置及设备。
第一方面,提供了一种事务处理方法,所述方法包括:
接收待处理事务,所述待处理事务是在至少两个数据分区中进行操作的事务;获取所述至少两个数据分区对应的,且满足一致性的数据快照;根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作。
在上述第一方面所示的方案中,对于涉及至少两个数据分区的多分区事务,通过对多分区事务涉及的各个数据分区获取满足一致性的数据快照,并基于数据快照进行多分区事务对应的操作,支持读事务和写事务之间的并行执行,避免写事务与读事务之间相互阻塞的情况,从而达到提高系统的吞吐量和服务等级的效果。
在一种可能的设计中,所述待处理事务是在所述至少两个数据分区中进行读操作的事务。
在一种可能的设计中,所述获取所述至少两个数据分区对应的,且满足一致性的数据快照,包括:获取所述至少两个数据分区各自的数据快照,以及所述至少两个数据分区各自的数据快照的版本信息;根据所述至少两个数据分区各自的数据快照的版本信息,检测所述至少两个数据分区各自的数据快照是否满足一致性;若检测结果为所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
在上述可能的设计方案中,在获取多分区事务对应的数据快照时,还一并获取数据快照的版本信息,并基于获取到的数据快照的版本信息来检查多个数据分区分别对应的数据快照之间是否满足一致性,避免获取到不满足一致性的快照。
在一种可能的设计中,所述获取所述至少两个数据分区对应的,且满足一致性的数据快照,还包括:若检测结果为所述至少两个数据分区各自的数据快照不满足一致性,则重新获取版本低的数据分区的数据快照,以及重新获取到的数据快照的版本信息;根据重新获取到的数据快照的版本信息检测所述至少两个数据分区各自的数据快照是否满足一致性。
在上述可能的设计方案中,在获取到的数据快照不满足一致性时,对于数据快照版本低的数据分区,重新获取该数据分区对应的数据快照和版本信息,并继续判断数据快照之间是否满足一致性。
在一种可能的设计中,所述方法还包括:若检测结果为所述至少两个数据分区各自的数据快照不一致,则删除已获取的版本低的数据分区的数据快照。
在上述可能的设计方案中,所述数据快照的版本信息包含所述数据快照生成时,所述数据快照对应的数据分区中最近一次写入的多分区写事务的标识,所述多分区写事务是在至少两个数据分区中进行写操作的事务。
在上述可能的设计方案中,使用最近一次写入的多分区写事务的标识作为数据分区的版本信息,避免多分区读操作时读取到写入不一致的数据,保证数据读取的准确性。
在一种可能的设计中,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,所述根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作,包括:
在所述至少两个数据分区对应的,且满足一致性的数据快照中执行所述待处理事务对应的写操作;将执行所述待处理事务对应的写操作之后的数据快照保存为对应的数据分区中的数据。
在一种可能的设计中,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,所述方法还包括:
在根据所述至少两个数据分区各自对应且满足一致性的数据快照执行所述待处理事务对应的写操作成功后,将所述待处理事务的标识更新为所述至少两个数据分区各自对应的版本信息。
第二方面,提供了一种事务处理装置,该装置具有实现上述第一方面及第一方面的可能的设计方案所提供的事务处理方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多于一个与上述功能相对应的单元。
第三方面,提供了一种事务处理设备,该设备包括:处理器、存储器和通信接口,该通信接口被配置为由该处理器控制;该设备中的处理器控制该通信接口,通过执行存储器中存储的程序或指令以实现上述第一方面及第一方面的可能的设计方案所提供的事务处理方法。
第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有可执行程序,该可执行程序由处理器执行以实现上述第一方面及第一方面的可能的设计方案所提供的事务处理方法。
第五方面,提供了一种事务处理系统,系统包括事务处理装置和至少两个数据分区;该事务处理装置用于实现上述第一方面及第一方面的可能的设计方案所提供的事务处理方法。
附图说明
图1是相关技术涉及的一种事务处理示意图;
图2A是本申请各个实施例涉及的一种事务处理系统的架构图;
图2B是本申请各个实施例涉及的一种多分区事务处理流程示意图;
图3是本申请一个示例性实施例提供的事务处理方法的方法流程图;
图4是图3所示实施例涉及的一种第二写事务队列与数据分区的对应关系示意图;
图5是图3所示实施例涉及的一种第二读事务队列与数据分区的对应关系示意图;
图6是图3所示实施例涉及的第一事务队列与特殊分区的对应关系示意图;
图7是本申请一个示例性实施例提供的一种参与节点组成示意图;
图8是本申请一个示例性实施例提供的事务处理设备实现示意图;
图9是本申请一个示例性实施例提供的事务处理设备实现示意图;
图10是本申请一个示例性实施例提供的事务处理设备的结构示意图;
图11是本申请一个示例性实施例提供的一种事务处理装置的结构方框图;
图12是本申请一个示例性实施例提供的一种事务处理系统的系统构成图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图2A是本申请所涉及的一种事务处理系统的架构图。该系统包括以下设备:事务处理设备210以及至少一个终端设备220。
其中,事务处理设备210可以是一台通用计算机或者工作站,或者,事务处理设备210也可以是单台服务器、服务器集群或者云计算中心等。
在本申请实施例中,事务处理设备210对应的数据可以分为一个或者多个数据分区。其中,分区是指一个连续的取值范围。在本申请实施例中,数据分区可以是将数据的字段(主键字段或非主键字段)按照一定的哈希(hash)算法进行哈希计算后得到的一段连续区间。
事务处理设备210与至少一个终端设备220之间通过有线或者无线网络相连接。
事务处理设备210用于对至少一个终端设备220发送的事务进行处理,其中,至少一个终端设备220发送的事务还可以分为单分区事务和多分区事务。从另一角度来说,至少一个终端设备220发送的事务还可以分为读事务和写事务。
在实际应用中,对于同一个数据分区,写事务会改变数据分区中存储的数据,而读事务则不会改变数据分区中存储的数据,即写事务和读事务实际上是可以并行执行的。因此,请参考图2B,其是本申请各个实施例涉及的多分区事务处理流程示意图,如图2B所示,事务处理设备210在处理事务时,对于多分区事务的处理步骤如下:
步骤21,接收待处理事务,该待处理事务是在至少两个数据分区中进行操作的事务。
步骤22,获取该至少两个数据分区对应的,且满足一致性的数据快照。
步骤23,根据该至少两个数据分区对应的,且满足一致性的数据快照执行该待处理事务对应的操作。
即在本申请实施例中,事务处理设备在进行读操作或者写操作时,并不直接在数据分区中操作,而是在数据分区对应的数据快照中进行操作,对于一个数据分区,同一时间可以向一个写事务以及至少一个读事务提供数据快照,也就是说,可以同时支持一个写事务和至少一个读事务的处理,即对该数据分区的写事务和读事务之间不会相互阻塞,从而提高系统的吞吐量和服务等级。
图3是本申请一个示例性实施例提供的事务处理方法的方法流程图。该方法可以用于如图1所示系统的事务处理设备210中。如图3所示,该事务处理方法可以包括如下步骤:
步骤301,接收终端设备发送的待处理事务,若该待处理事务是多分区事务,则进入步骤302,若该待处理事务是单分区事务,则进入步骤303。
其中,单分区事务是在单个数据分区中进行操作的事务,多分区事务是在至少两个数据分区中进行操作的事务。
更具体的,单分区读事务是在涉及的单个数据分区中进行读操作的事务,单分区写事务是在涉及的单个数据分区中进行写操作的事务;相应的,多分区读事务是在涉及的至少两个数据分区中进行读操作的事务,多分区写事务是在涉及的至少两个数据分区中进行写操作的事务。
在本申请实施例中,终端设备可以向事务处理设备发送事务处理请求,该事务处理请求中包含待处理的事务。
其中,上述事务处理请求中可以包含分区指示信息,该分区指示信息可以指示该待处理的事务是单分区事务还是多分区事务。
可选的,上述事务处理请求可以不包含分区指示信息,分区指示信息可以由事务处理设备解析事务处理请求中的关键信息获得。
步骤302,根据多分区事务的事务类型,将该多分区事务添加入第一读事务队列或者第一写事务队列。
其中,上述事务处理请求中还可以包含事务的事务类型,或者,事务处理设备也可以根据待处理的事务进行分析以确定对应的事务类型。
本申请实施例中的事务队列可以分为两级队列,事务处理设备在接收到多分区事务时,首先将多分区事务添加入第一级队列,后续在并行处理的过程中,再将第一级队列中的多分区事务添加入第二级队列。其中,第一级队列为上述第一读事务队列和第一写事务队列;第二级队列是每一个数据分区各自对应的第二读事务队列和第二写事务队列。
其中,第一级队列包括第一读事务队列和/或第一写事务队列,事务处理设备接收到一个多分区事务之后,若该多分区事务的事务类型是读事务,则将该多分区事务添加入第一读事务队列,反之,若该多分区事务的事务类型是写事务,则将该多分区事务添加入第一写事务队列。
步骤303,根据单分区事务的事务类型,将该单分区事务添加至对应的数据分区的第二读事务队列或者第二写事务队列。
在本申请实施例中,每个数据分区只对应一个第二写事务队列,而每个第二写事务队列可以对应一个或者多个数据分区。当事务处理设备接收到单分区事务时,若该单分区事务是写事务,则将该单分区事务添加至该单分区事务对应的第二写事务队列。
比如,请参考图4,其示出了本申请实施例涉及的一种第二写事务队列与数据分区的对应关系示意图;如图4(a)所述,数据分区1和数据分区2可以对应同一个第二写事务队列(写事务队列1),即对数据分区1的单分区写事务和对数据分区2的单分区写事务都添加至写事务队列1;或者,如图4(b)所示,两个数据分区可以分别对应一个第二写事务队列(即数据分区1对应写事务队列1,数据分区2对应写事务队列2),即对数据分区1的单分区写事务添加至写事务队列1,对数据分区2的单分区写事务添加至写事务队列2。
数据分区与第二读事务队列之间没有对应关系的限定,可以是一对一、一对多或者多对多的关系。当事务处理设备接收到单分区事务时,若该单分区事务是读事务,则将该单分区事务添加至该单分区事务对应的第二读事务队列,其中,当该单分区事务对应多个第二读事务队列时,只将该单分区事务添加至对应的多个第二读事务队列中的一个队列。
比如,请参考图5,其示出了本申请实施例涉及的一种第二读事务队列与数据分区的对应关系示意图;如图5(a)所述,数据分区1和数据分区2可以对应同一个第二读事务队列(读事务队列1),即对数据分区1的单分区读事务和对数据分区2的单分区读事务都添加至读事务队列1;或者,如图5(b)所示,两个数据分区可以分别对应一个第二读事务队列(即数据分区1对应读事务队列1,数据分区2对应读事务队列2),即对数据分区1的单分区读事务添加至读事务队列1,对数据分区2的单分区读事务添加至读事务队列2;或者,如图5(c)所示,数据分区1可以同时对应读事务队列1和读事务队列2,即对数据分区1的单分区读事务可以添加至读事务队列1或者读事务队列2;或者,如图5(d)所示,数据分区1可以同时对应读事务队列1和读事务队列2,同时,数据分区2也同时对应读事务队列1和读事务队列2,即对数据分区1的单分区读事务可以添加至读事务队列1或者读事务队列2,并且,对数据分区2的单分区读事务也可以添加至读事务队列1或者读事务队列2。
可选的,数据分区虽然与第一事务队列没有对应关系,但可以给第一事务队列分配具有特殊标志的特殊分区,该特殊分区不用来存储数据,而特殊分区的特殊标志用于区别数据分区或其他特殊分区。
请参考图6,其示出了本申请实施例涉及的第一事务队列与特殊分区对应关系示意图;如图6(a)所述,特殊分区分为写特殊分区和读特殊分区,写特殊分区和第一写事务队列的数量各自为一,且一一对应。所有的多分区写事务都进该写特殊分区对应的第一写事务队列;如图6(b)所示,第一读事务队列有一至多个(图中示出为两个),每个第一读事务队列都对应一个读特殊分区(图中示出为第一读事务队列1对应读特殊分区1,第一读事务队列2对应读特殊分区2)。对于多分区读事务,该多分区事务可以进第一读事务队列1,也可以进第一读事务队列2。
需要说明的是,上述写特殊分区对应的第一写事务队列,也可以作为一个特殊的写队列加入到第二写事务队列中。
类似的,上述读特殊分区对应的第一读事务队列,也可以作为特殊的读队列加入到第二读事务队列中。
步骤304,对读事务队列和写事务队列并行处理。
在本申请实施例中,事务处理设备对上述步骤302和步骤303涉及到的各个读事务队列和写事务队列进行并行处理时,事务处理设备对同一个写事务队列中的各个写事务进行串行处理,即对于一个写事务队列中的多个写事务,事务处理设备在对前一个写事务处理完成后,才会处理该写事务队列中的下一个写事务。事务处理设备对同一个读事务队列中的各个读事务可以串行处理;或者,事务处理设备对同一个读事务队列中的各个读事务也可以并行处理,比如,对于一个读事务队列,事务处理设备可以通过多个线程同时处理该读事务队列中的多个读事务。
在本申请实施例中,事务处理设备可以通过数据快照对各个事务进行处理,另外,由于本申请实施例中涉及到多分区读事务和多分区写事务的处理,而多分区事务的处理过程中需要考虑数据的一致性原则,因此,在本申请实施例中,通过数据快照对各个事务进行处理时,需要保证获取到的数据快照满足一致性。具体处理过程可以如下:
一、对于单分区读事务或者单分区写事务的处理。
在对单分区读事务或者单分区写事务进行处理时,事务处理设备可以获取单分区读事务或者单分区写事务对应的数据分区的数据快照,并在成功获取到数据快照后,根据数据快照实现事务的读或者写。
具体的,在对单分区写事务进行处理时,对于上述任意一个第二写事务队列,事务处理设备获取该第二写事务队列中到达处理位置(比如,该处理位置可以是队列的队首位置)的单分区写事务,获取该单分区写事务对应的数据分区的数据快照,并在获取到的数据快照中写入该单分区写事务对应的写入数据,并将写入数据后的数据快照存储为对应的数据分区中的数据。其中,上述将数据写入数据快照,并将数据快照存储为数据分区中的数据的步骤可以称为写事务的提交(commit)。
类似的,在对单分区读事务进行处理时,对于上述任意一个第二读事务队列,事务处理设备获取该第二读事务队列中到达处理位置的单分区读事务,获取该单分区读事务对应的数据分区的数据快照,从获取到的数据快照中读取该单分区读事务对应的数据,并将读取的数据发送给对应的终端设备,同时将该数据快照删除。
由于单分区事务只涉及到的单个数据分区,而单个数据分区的数据快照不存在不满足一致性的问题,即在本申请实施例中,当待处理事务只涉及一个数据分区时,可以认为获取到的该待处理事务对应的数据快照必然是满足一致性的。
二、对于多分区读事务的处理。
对于读事务队列中的任一多分区事务,事务处理设备可以确定该多分区事务对应的各个数据分区,获取该各个数据分区各自对应的,且满足一致性的数据快照,并对各个数据分区各自的数据快照分别进行该多分区事务对应的读操作。
在本发明实施例中,各个数据分区各自对应的数据快照满足一致性,是指对于各个数据分区中的任意两个数据分区,在获取这两个数据分区的数据快照时,最近一次同时涉及到这两个数据分区的多分区写事务在这两个数据分区中已写入完成。
具体的,对于上述第一读事务队列中的各个多分区事务,事务处理设备可以获取该第一读事务队列中到达处理位置的多分区事务,并将获取到的多分区事务添加至该多分区事务对应的一个第二读事务队列中,当该多分区事务到达该第二读事务队列中的处理位置时,事务处理设备再获取该多分区事务对应的各个数据分区各自的数据快照。或者,事务处理设备获取到该第一读事务队列中到达处理位置的多分区事务后,也可以直接获取该多分区事务对应的各个数据分区各自的数据快照。
其中,由于多分区读事务会涉及到对多个数据分区中的数据进行读取操作,而本申请实施例中的读事务和写事务是并行处理的,而多分区写事务在不同的数据分区中commit的时间并不是绝对相同的,因此,多分区写事务的对外可见性也可能存在先后顺序,在某一时刻,对同一个多分区读事务对应的不同的数据分区获取到的数据快照不满足一致性,此时直接按照获取到的数据快照读取的数据可能会不一致。因此,在本申请实施例中,事务处理设备在获取上述多分区读事务涉及的至少两个数据分区对应的,且满足一致性的数据快照时,可以获取该至少两个数据分区各自的数据快照,以及该至少两个数据分区各自的数据快照的版本信息,并根据该各个数据分区各自的数据快照中的数据的版本信息,检测该各个数据分区各自的数据快照是否满足一致性,若该各个数据分区各自的数据快照满足一致性,则执行对各个数据分区各自的数据快照分别进行该多分区事务对应的读操作的步骤;反之,若各个数据分区各自的数据快照不满足一致性,则对于数据的版本信息对应的版本低(即不是最高版本)的数据分区,事务处理设备删除已获取的数据版本低的数据快照,并重新获取该据分区的数据快照,并根据重新获取到的数据快照中的数据的版本信息检测各个数据分区的数据快照是否一致。
在本申请实施例中,上述数据快照中的数据的版本信息包含该数据快照生成时,该数据快照对应的数据分区中最近一次写入的多分区事务(即多分区写事务)的标识。
其中,事务处理设备在接收到一个多分区事务后,可以为该多分区事务分配对应的标识。具体的,上述多分区事务的标识可以是多分区事务的ID或者唯一编号。
进一步的,不同的多分区事务的标识可以用来区分不同的多分区事务被处理的先后顺序,比如,以多分区事务的标识是ID为例,事务处理设备在分配事务类型为写事务的多分区事务的ID时,分配给各个多分区事务的ID从1开始递增,则ID越小的多分区事务,其被处理的顺序越靠前,对应的数据的版本也越低,而ID越大的多分区事务,其被处理的顺序越靠后,对应的数据的版本也越高。
三、对于多分区写事务的处理。
对于该写事务队列中的任一待处理事务(即多分区写事务),事务处理设备可以确定该多分区写事务对应的至少两个数据分区,获取该至少两个数据分区各自的数据快照,对该至少两个数据分区各自的数据快照分别进行该多分区写事务对应的写操作,当对该至少两个数据分区各自的数据快照分别进行的写操作完成后,将该至少两个数据分区各自的数据快照保存为该至少两个数据分区各自的数据。
在本申请实施例中,由于事务处理设备对同一个写事务队列中的各个写事务进行串行处理,即对于一个写事务队列中的多个写事务,事务处理设备在对前一个写事务处理完成后,才会处理该写事务队列中的下一个写事务,也就是说,当事务处理设备在处理一个多分区写事务时,该多分区写事务对应的至少两个数据分区各自对应的上一个写事务都已经处理完成,因此,此时获取到的该至少两个数据分区各自对应的数据快照,必然是满足单一性的,即在处理多分区写事务时,事务处理设备不需要通过数据快照对应的版本信息来检测获取到的数据快照是否满足单一性。
可选的,在根据上述至少两个数据分区各自对应且满足一致性的数据快照执行多分区写事务(即待处理事务)对应的写操作成功后,事务处理设备还将待处理事务的标识更新为上述至少两个数据分区各自对应的版本信息。
具体的,对于上述第一写事务队列中的各个多分区写事务,事务处理设备可以获取该第一写事务队列中到达处理位置的多分区写事务,并将获取到的多分区写事务添加至该多分区写事务涉及的各个数据分区各自对应的第二写事务队列中,当该多分区写事务在各个数据分区各自对应的第二写事务队列中都到达处理位置时,事务处理设备获取各个数据分区各自的数据快照。其中,各个数据分区可能同时对应有待处理的单分区写事务和多分区写事务,为了避免出现数据不一致的情况,在处理写入事务时,同一个数据分区对应的写事务,无论是单分区事务还是多分区事务,都需要统一进行串行处理,因此,在本申请实施例中,对于第一写事务队列中的多分区写事务,事务处理设备在处理到该多分区写事务时,将该多分区写事务分别添加至涉及到的各个数据分区各自对应的第二写事务队列中,与各个数据分区各自的单分区写事务一起进行串行排序,各个数据分区各自对应的第二写事务队列中的每一个队列都执行到该多分区写事务时,事务处理设备才获取各个数据分区对应的数据快照并执行写入操作。或者,在上述任意一个第二写事务队列执行到该多分区写事务时,事务处理设备可以不用等待其它包含该多分区写事务的第二写事务队列执行到该多分区写事务,而是直接获取已经执行到该多分区写事务的第二写事务队列所对应的数据分区的数据快照,并在获取到的数据快照中进行写操作,等到在该多分区写事务涉及的所有数据分区对应的数据快照中都完成该多分区写事务对应的写操作后,在将该多分区写事务对应的所有写入后的数据快照存储为各自对应的数据分区中的数据。
可选的,对于上述第一写事务队列中的各个多分区事务,事务处理设备可以获取该第一写事务队列中到达处理位置的多分区事务,并将获取到的多分区事务添加至写特殊分区对应的第二写事务队列中,当写特殊分区对应的第二写事务队列的该事务被调度到(即被处理到)时,事务处理设备获取各个数据分区各自的数据快照。其中,该写特殊分区对应第二写事务队列的该事务执行时,会阻塞其他数据分区的单分区写事务。
在实际应用中,还可能出现某两个数据分区对应的第二写事务队列是同一个队列的情况,事务处理设备在这两个数据分区对应的第二写事务队列中只添加一次该多分区写事务。
综上所述,本申请实施例所示的事务处理方法,事务处理设备对多分区事务涉及的各个数据分区获取满足一致性的数据快照,并基于数据快照进行多分区事务对应的读操作或者写操作,支持读事务和写事务之间的并行执行,避免同一数据分区对应的写事务和读事务之间相互阻塞的情况,从而达到提高系统的吞吐量和服务等级的效果。
在本申请实施例中,上述图3对应的实施例中的各个步骤可以分别由事务处理设备中不同的功能组件来实现。这些功能组件可以是通过软件或者软硬结合实现的逻辑功能组件。比如,上述每个功能组件可以是一个独立的功能节点(比如独立的虚拟机或者进程),各个功能节点之间交互实现事务的处理。
具体比如,上述事务处理设备中的功能节点可以分为两种,分别可以称为协调节点和参与节点。其中,协调节点的个数可以是一个,作用是负责协调处理多分区事务;可选的,协调节点的个数可以是多个,其中一个协调节点用来处理多分区写和/或读事务,其他协调节点用来负责处理多分区读事务,也就是多分区写的协调节点只有一个,多分读的协调节点可以有多个。而参与节点可以有多个,并且每个参与节点对应各自的数据分区,其作用是负责独自处理涉及对应的数据分区的单分区事务,或者在协调节点协调下处理涉及对应的数据分区的多分区事务;可选的每个参与节点除了有各自对应的数据分区,还有写特殊分区以及读特殊分区,写特殊分区和读特殊分区用来处理协调节点下发的多分区写事务和多分区读事务。
其中,协调节点负责管理上述图3所示实施例中的第一读事务队列和第一写事务队列,而每个参与节点负责各自的一至多个数据分区对应的第二读事务队列和第二写事务队列。
可选的,每个参与节点负责的第二读事务队列和第二写事务队列还包括读特殊分区和写特殊分区对应的读队列和写队列。
其中,上述参与节点所执行的步骤可以分别由三种功能模块来实现。具体的,请参考图7,其是本申请一个示例性实施例提供的一种参与节点组成示意图。在图7中,参与节点70包括排序模块701、调度模块702以及存储引擎703。
其中,上述排序模块701用于实现将单分区事务添加至相应的第二读事务队列/第二写事务队列的步骤。或者,排序模块701也可以用于实现将协调节点从第一队列(包括第一写事务队列和/或第一读事务队列)分发的多分区事务添加到对应的第二队列(包括第二写事务队列和/或第二读事务队列)进行排序的步骤。
上述调度模块702用于实现对第二读事务队列/第二写事务队列中的事务进行调度处理的步骤。
上述存储引擎703用于实现获取、存储以及删除对应数据分区的数据快照,以及,维护获取到的数据快照中的数据的版本信息的功能。
可选的,每个参与节点70中,存储引擎703有且只有一个,且该参与节点70将对应的一至多个数据分区作为一个整体进行读写处理,即在处理一个事务时,无论该事务是否涉及到该参与节点对应的数据分区中的所有数据分区,存储引擎703都获取对应的所有数据分区的数据快照,且该所有数据分区中的数据共用一个版本信息。
或者,当参与节点70上的数据分区的数量大于或者等于两个时,参与节点70中,存储引擎703也可以有多个,且每个存储引擎703负责存储其中一个或多个数据分区的数据快照和版本信息。参与节点70在处理一个事务时,可以只获取本节点上的数据分区中,该事务涉及的部分数据分区的数据快照。
在一种可能的实现场景中,多个数据分区对应同一个第二写事务队列,即涉及到该多个数据分区的单分区写事务和多分区写事务都会被添加至同一个第二写事务队列。
可选的,协调节点是独立于上述各个参与节点之外的一个功能节点,该协调节点负责管理第一读事务队列和第一写事务队列,并协调各个参与节点处理第一读事务队列和第一写事务队列中的多分区事务。
或者,协调节点同时也是一个参与节点,该协调节点除了管理第一读事务队列和第一写事务队列,以及协调各个参与节点处理第一读事务队列和第一写事务队列中的多分区事务之外,还负责管理对应的第二读事务队列和第二写事务队列,以及处理对应的第二读事务队列和第二写事务队列中的事务。
或者,协调节点同时也是一个参与节点,该协调节点的第一写事务队列是第二写事务队列中写特殊分区对应的写事务队列,该协调节点的第一读事务队列是第二读事务队列中读特殊分区对应的读事务队列。对于多分区事务,可以先添加至第一事务队列,待多分区事务调度到时,再分发给数据分区对应的第二事务队列,或者可选的,对于多分区事务,可以先添加至第一事务队列,待多分事务调度到时,再分发给特殊分区对应的第二事务队列,对于本节点来说,认为已经到达执行位置,不需要再向本节点的特殊分区的第二事务队列中添加请求。
或者,协调节点同时也是一个参与节点,该协调节点的第一写事务队列等同于该节点上的第二写事务队列,该协调节点的第一读事务队列等同于该节点上的第二读事务队列。对于多分区写事务,直接进每个第一写事务队列也即第二写事务队列中,待所有第一写事务队列也即第二写事务队列调度到同一个多分区写事务时,再分发请求给第二写事务队列,对于本节点认为已经到达执行位置,不需要再向本节点的所有第二写事务队列添加请求。类似的,对于多分区读事务,直接进某一个第一读事务队列也即第二读事务队列中,待该事务被调度到时,再分发请求给第二读事务队列,对于本节点认为已经到达执行位置,不需要再向本节点的第二读事务队列添加请求。
图8是本申请一个示例性实施例提供的事务处理设备实现示意图。在图8中,事务处理设备80可以包括至少一个参与节点(图8中示出为参与节点811和参与节点812)以及协调节点820。其中,每个参与节点上有一至多个数据分区(图8中示出为参与节点811上有数据分区1和数据分区2,参与节点812上有数据分区3)。协调节点可以是参与节点中的一个,或者,协调节点也可以是独立的节点,。以每个参与节点对应一个写事务队列和一个读事务队列为例,在图8中,协调节点820管理第一写事务队列851和第一读事务队列852,参与节点811管理第二写事务队列831和第二读事务队列832,参与节点812管理第二写事务队列841和第二读事务队列842。
图9是本申请一个示例性实施例提供的事务处理设备实现示意图。在图9中,事务处理设备80可以包括至少一个参与节点(图9中示出为参与节点811和参与节点812)以及至少两个协调节点820(图9中示出为3个协调节点820,分别为协调节点820-1、协调节点820-2以及协调节点820-3)。其中,每个参与节点上有一至多个数据分区(图9中示出为参与节点811上有数据分区1和数据分区2,参与节点812上有数据分区3)。协调节点可以是参与节点中的一个,或者,协调节点也可以是独立的节点,。以每个参与节点对应一个写事务队列和一个读事务队列为例,在图9中,3个协调节点820分别管理一个第一写事务队列851和两个第一读事务队列852(第一读事务队列852分别为第一读事务队列852-1以及第一读事务队列852-2,其中,协调节点820-2对应管理第一读事务队列852-1,协调节点820-3对应管理第一读事务队列852-2),参与节点811管理第二写事务队列831和第二读事务队列832,参与节点812管理第二写事务队列841和第二读事务队列842。
终端设备在向事务处理设备发送事务处理请求时,将单分区事务对应的请求直接发送给该单分区事务对应的参与节点,由参与节点将该单分区事务添加至相应的写事务队列或者读事务队列;比如,在图8或图9中,参与节点811接收到终端设备发送的事务处理请求时,将事务处理请求对应的单分区写事务添加至写事务队列831,并将事务处理请求对应的单分区读事务添加至读事务队列832;而参与节点812接收到终端设备发送的事务处理请求时,将事务处理请求对应的单分区写事务添加至写事务队列841,并将事务处理请求对应的单分区读事务添加至读事务队列842。
对于多分区事务,终端设备则将对应的请求发送给协调节点820,由协调节点820将该多分区事务添加至协调节点820对应的写事务队列或者读事务队列;具体的,协调节点820接收到终端设备发送的事务处理请求后,将事务处理请求对应的多分区写事务添加至写事务队列851,并将事务处理请求对应的多分区读事务添加至读事务队列852。其中,协调节点820在将多分区写事务添加入写事务队列851时,可以为该多分区写事务分配一个事务ID。
其中,参与节点对事务的处理过程可以如下:
一、对单分区事务的处理。
单分区事务由该事务涉及的数据分区所在的参与节点处理。比如,以图8或图9中的参与节点811为例,在对写事务队列831进行处理时,参与节点811通过一个线程对写事务队列831中的各个写事务进行串行处理,比如,当参与节点811按照队列顺序从写事务队列831中提取出一个涉及数据分区1的单分区写事务之后,参与节点811获取数据分区1的数据快照,并在获取到的数据快照中写入该提取到的单分区写事务对应的写入数据之后,将写入数据之后的数据快照存储为该数据分区1中的数据。
在对读事务队列832进行处理时,参与节点811通过一个线程对读事务队列832中的各个单分区读事务进行串行处理。具体的,对于数据分区1涉及的单分区读事务,参与节点811可以获取数据分区1的数据快照,并在获取到的数据快照中读取该单分区读事务对应的数据,在将读取到的数据发送给终端设备之后,将获取到的数据快照删除。
二、对多分区写事务的处理。
多分区写事务由协调节点协调各个参与节点进行处理,比如,以图8或图9所示,协调节点820通过一个线程对写事务队列851中的各个多分区写事务进行串行处理。具体的,对于每一个多分区写事务,假设该多分区写事务涉及到向数据分区1和数据分区3中写入数据,则协调设备820将多分区写事务分别发送给参与节点811和参与节点812,参与节点811将该多分区写事务添加至写事务队列831,参与节点812将该多分区写事务添加至写事务队列841,参与节点811处理到该多分区写事务时,获取数据分区1的数据快照,在获取数据快照成功后,向协调节点返回获取成功响应,或者,在获取数据快照失败后,向协调节点返回获取失败响应,类似的,参与节点812处理到该多分区写事务时,获取数据分区3的数据快照,并根据获取数据快照成功与否,向协调节点返回获取成功响应或者获取失败响应。
若协调节点820接收到其中一个参与节点发送的获取失败响应,则向另一个参与节点发送删除快照请求,指示另一个参与节点删除获取成功的数据快照。
如果协调节点820确认接收到参与节点811和参与节点812各自发送的获取成功响应,则分别向参与节点811和参与节点812发送事务处理指示,参与节点811向数据分区1对应的数据快照中写入数据,并根据写入成功与否,向协调节点820返回写入成功响应或者写入失败响应;同时,参与节点812向数据分区3对应的数据快照中写入数据,并根据写入成功与否,向协调节点返回写入成功响应或者写入失败响应。
若协调节点820接收到其中一个参与节点发送的写入失败响应,则向另一个参与节点发送删除快照请求,指示另一个参与节点删除写入成功的数据快照。
如果协调节点820确认接收到参与节点811和参与节点812各自发送的写入成功响应,则分别向参与节点811和参与节点812发送提交指示;参与节点811将写入成功的数据快照保存为数据分区1中的数据,并在保存完成后,将数据分区1中的数据的版本号更新为该多分区写事务的事务id;参与节点812也将写入成功的数据快照保存为数据分区3中的数据,并在保存完成后,将数据分区2中的数据的版本号更新为该多分区写事务的事务id。
三、对多分区读事务的处理。
多分区读事务由协调节点协调各个参与节点进行处理,比如,以图8或图9所示,协调节点820通过一个线程对读事务队列852中的各个多分区读事务进行串行处理,具体的,对于某一个多分区读事务,假设该多分区读事务涉及到读取数据分区1和数据分区3中的数据,则协调节点820分别向参与节点811和参与节点812发送快照获取请求,参与节点811接收到该请求后,获取数据分区1的数据快照,并向协调节点820返回该数据快照中的数据的版本信息,其中,数据快照中的数据的版本信息是该数据分区1中最近一次commit完成的多分区写事务的id;相应的,参与节点812接收到该请求后,获取数据分区3的数据快照,并向协调节点820返回该数据快照中的数据的版本信息;协调节点820接收到参与节点811发送的数据分区1的数据快照中的数据的版本信息,以及参与节点812发送的数据分区3的数据快照中的数据的版本信息后,根据版本信息检测该数据分区1的数据快照与数据分区3的数据快照是否满足一致性。
在本发明实施例中,当数据快照的版本信息是数据快照对应的数据分区中最近一次写入的多分区写事务的标识时,至少两个数据分区各自对应的数据快照之间满足一致性,可以是该至少两个数据分区各自对应的数据快照的版本信息相同;或者,该至少两个数据分区各自对应的数据快照之间满足一致性,也可以是对于该至少两个数据分区中的每一个数据分区,获取到的该数据分区的数据快照的版本信息与预存的该数据分区的版本信息相同。
比如,协调节点820根据版本信息检测数据分区1的数据快照与数据分区3的数据快照是否满足一致性的方式可以如下:
1)若数据分区1和数据分区3是同时进行多分区写入的两个数据分区(即一个多分区写事务涉及到数据分区1时,同时也必然涉及到数据分区3),则协调节点820可以直接比对两个数据分区各自对应的版本信息是否相同,若是,则说明两个数据分区各自对应的数据快照满足一致性;若两个数据分区各自对应的版本信息不相同,则可以进一步根据版本信息确定低版本的数据分区(即对应最近完成的多分区写事务的id小的数据分区,其版本较低)。
2)若数据分区1和数据分区3不是同时进行多分区写入的两个数据分区(即一个多分区写事务涉及到数据分区1时,可能不会涉及到数据分区3)。在这种情况下,协调节点820可以维护各个数据分区各自对应的版本信息,当协调节点820在处理一个多分区写事务的过程中,向某一个参与节点发送提交指示后,即将自身维护的该多分区写事务涉及的数据分区的版本信息更新为该多分区写事务的id;相应的,每个参与节点也各自维护自己对应的数据分区的版本信息,在处理一个多分区写事务的过程中,当参与节点接收到协调节点820发送的提交指示后,在将当前写入完成的数据快照成功保存为对应的数据分区中的数据之后,将自身维护的该数据分区的版本信息更新为该多分区写事务的id。在后续处理一个多分区读事务时,参与节点获取到该多分区读事务涉及的数据分区的数据快照,并将该数据快照对应的版本信息发送给协调节点820后,协调节点820将参与节点发送的版本信息与自己维护的该数据分区对应的版本信息进行比对,若参与节点发送的该多分区读事务对应的各个数据快照的版本信息,与协调节点自身维护的对应数据分区中版本信息都相同,则说明获取到的该多分区读事务对应的各个数据分区的数据快照之间满足一致性。若参与节点发送的该多分区读事务对应的各个数据快照的版本信息中,有一个或者一个以上的版本信息与协调节点自身维护的对应数据分区中版本信息不同,则可以确定该一个或者一个以上的版本信息对应的数据快照的版本低。
若检测出数据分区1的数据快照与数据分区3的数据快照不满足一致性,则协调节点820根据版本信息确定版本低的数据快照对应的参与节点,并向确定的参与节点发送重新获取数据快照的请求,参与节点接收到重新获取数据快照的请求后,删除原来的数据快照,并重新获取数据快照,并将重新获取的数据快照中的数据的版本信息返回给协调节点820,协调节点820根据该重新获取的数据快照中的数据的版本信息,再次检测该数据分区1的数据快照与数据分区3的数据快照是否满足一致性。
若检测出数据分区1的数据快照与数据分区3的数据快照满足一致性,则协调节点820分别向参与节点811和参与节点812发送事务处理指示,指示参与节点811和参与节点812分别处理该多分区读请求。参与节点811和参与节点812接收到该事务处理指示后,即在获取到的数据快照中读取该多分区读请求对应的数据,并根据读取成功与否,向协调节点820发送读取成功响应或者读取失败响应。
协调节点820接收到参与节点811和参与节点812中的任一节点发送的读取失败响应后,即向另一参与节点发送删除快照请求,指示另一参与节点删除获取的数据快照。
协调节点820接收到参与节点811和参与节点812分别发送的读取成功响应后,即向参与节点811和参与节点812分别发送删除快照请求,指示两个参与节点删除获取的数据快照。
图10是本申请一个示例性实施例提供的事务处理设备100的结构示意图,该事务处理设备100可以实现为图1所示的网络环境中的事务处理设备210。如图10所示,该事务处理设备100可以包括:处理器101以及通信接口104。
处理器101可以包括一个或者一个以上处理单元,该处理单元可以是中央处理单元(英文:central processing unit,CPU)或者网络处理器(英文:network processor,NP)等。
通信接口104可以包括网络接口。其中,该网络接口用于连接终端设备。具体的,该网络接口可以包括有线网络接口,比如以太网接口或者光纤接口,或者,网络接口也可以包括无线网络接口,比如无线局域网接口或者蜂窝移动网络接口。事务处理设备100通过该网络接口104与各个终端设备进行通信。
可选的,该事务处理设备100还可以包括存储器103,处理器101可以用总线与存储器103和通信接口104相连。
存储器103可用于存储软件程序,该软件程序可以由处理器101执行。此外,该存储器103中还可以存储各类业务数据或者用户数据。该软件程序可以包括事务接收模块、快照获取模块、执行模块以及更新模块等。
其中,事务接收模块由处理器101执行,以实现上述图3所示实施例中有关接收终端设备发送的多分区事务以及单分区事务的功能。
快照获取模块由处理器101执行,以实现上述图3所示实施例中有关获取满足一致性的数据快照的功能。
执行模块由处理器101执行,以实现上述图3所示实施例中有关执行读操作或者写操作的功能。
更新模块由处理器101执行,以实现上述图3所示实施例中有关更新数据分区对应的数据快照中的数据的版本信息的功能。
可选地,该事务处理设备100还可以包括输出设备105以及输入设备107。输出设备105和输入设备107与处理器101相连。输出设备105可以是用于显示信息的显示器、播放声音的功放设备或者打印机等,输出设备105还可以包括输出控制器,用以提供输出到显示屏、功放设备或者打印机。输入设备107可以是用于用户输入信息的诸如鼠标、键盘、电子触控笔或者触控面板之类的设备,输入设备107还可以包括输出控制器以用于接收和处理来自鼠标、键盘、电子触控笔或者触控面板等设备的输入。
下述为本申请的装置实施例,可以用于执行本申请的方法实施例。对于本申请的装置实施例中未披露的细节,请参照本申请的方法实施例。
图11是本申请一个示例性实施例提供的一种事务处理装置的结构方框图,该事务处理装置可以通过硬件电路或者软件硬件的结合实现成为事务处理设备的部分或者全部,该事务处理设备可以是上述图2A所示的实施例中的事务处理设备210。该事务处理装置可以包括:事务接收单元1101、快照获取单元1102、执行单元1103以及更新单元1104。
其中,事务接收单元1101由处理器81执行,以实现上述图3所示实施例中有关接收终端设备发送的多分区事务以及单分区事务的功能。
快照获取单元1102,用于实现上述图3所示实施例中有关获取满足一致性的数据快照的功能。
执行单元1103,用于实现上述图3所示实施例中有关执行读操作或者写操作的功能。
更新单元1104,用于实现上述图3所示实施例中有关更新数据分区对应的数据快照中的数据的版本信息的功能。
图12是本申请一个示例性实施例提供的一种事务处理系统的系统构成图。如图11所示,该事务处理系统可以包括:事务处理装置122以及至少两个数据分区124。
其中,事务处理装置122可以实现为上述图11所示的事务处理装置,该事务处理装置用于实现如图3所示实施例中的事务处理方法。
需要说明的是:上述实施例提供的事务处理装置在进行事务处理时,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将设备的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。另外,上述实施例提供的事务处理装置与事务处理方法的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请的实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (23)
1.一种事务处理方法,其特征在于,所述方法包括:
接收待处理事务,所述待处理事务是在至少两个数据分区中进行操作的事务;
获取所述至少两个数据分区对应的,且满足一致性的数据快照;
根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作;
其中,所述获取所述至少两个数据分区对应的,且满足一致性的数据快照,包括:
根据所述至少两个数据分区各自的数据快照的版本信息,检测所述至少两个数据分区各自的数据快照是否满足一致性;
若检测结果为所述至少两个数据分区各自的数据快照不满足一致性,则重新获取版本低的数据分区的数据快照,以及重新获取到的数据快照的版本信息,根据重新获取到的数据快照的版本信息检测所述至少两个数据分区各自的数据快照是否满足一致性,若确定所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
2.根据权利要求1所述的方法,其特征在于,所述待处理事务是在所述至少两个数据分区中进行读操作的事务。
3.根据权利要求1所述的方法,其特征在于,所述获取所述至少两个数据分区对应的,且满足一致性的数据快照,还包括:
获取所述至少两个数据分区各自的数据快照,以及所述至少两个数据分区各自的数据快照的版本信息;
若检测结果为所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若检测结果为所述至少两个数据分区各自的数据快照不一致,则删除已获取的版本低的数据分区的数据快照。
5.根据权利要求1至4任一所述的方法,其特征在于,
所述数据快照的版本信息包含所述数据快照生成时,所述数据快照对应的数据分区中最近一次写入的多分区写事务的标识,所述多分区写事务是在至少两个数据分区中进行写操作的事务。
6.根据权利要求1所述的方法,其特征在于,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,所述根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作,包括:
在所述至少两个数据分区对应的,且满足一致性的数据快照中执行所述待处理事务对应的写操作;
将执行所述待处理事务对应的写操作之后的数据快照保存为对应的数据分区中的数据。
7.根据权利要求1所述的方法,其特征在于,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,所述方法还包括:
在根据所述至少两个数据分区各自对应且满足一致性的数据快照执行所述待处理事务对应的写操作成功后,将所述待处理事务的标识更新为所述至少两个数据分区各自对应的版本信息。
8.一种事务处理装置,其特征在于,所述装置包括:
事务接收单元,用于接收待处理事务,所述待处理事务是在至少两个数据分区中进行操作的事务;
快照获取单元,用于获取所述至少两个数据分区对应的,且满足一致性的数据快照;
执行单元,用于根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作;
其中,所述快照获取单元,用于:
根据所述至少两个数据分区各自的数据快照的版本信息,检测所述至少两个数据分区各自的数据快照是否满足一致性;
若检测结果为所述至少两个数据分区各自的数据快照不满足一致性,则重新获取版本低的数据分区的数据快照,以及重新获取到的数据快照的版本信息,根据重新获取到的数据快照的版本信息检测所述至少两个数据分区各自的数据快照是否满足一致性,若确定所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
9.根据权利要求8所述的装置,其特征在于,所述待处理事务是在所述至少两个数据分区中进行读操作的事务。
10.根据权利要求8所述的装置,其特征在于,所述快照获取单元,还用于
获取所述至少两个数据分区各自的数据快照,以及所述至少两个数据分区各自的数据快照的版本信息;
若检测结果为所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
11.根据权利要求8所述的装置,其特征在于,所述快照获取单元,还用于
若检测结果为所述至少两个数据分区各自的数据快照不一致,则删除已获取的版本低的数据分区的数据快照。
12.根据权利要求8至11任一所述的装置,其特征在于,
所述数据快照的版本信息包含所述数据快照生成时,所述数据快照对应的数据分区中最近一次写入的多分区写事务的标识,所述多分区写事务是在至少两个数据分区中进行写操作的事务。
13.根据权利要求8所述的装置,其特征在于,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,所述执行单元,具体用于
在所述至少两个数据分区对应的,且满足一致性的数据快照中执行所述待处理事务对应的写操作;
将执行所述待处理事务对应的写操作之后的数据快照保存为对应的数据分区中的数据。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
更新单元,用于当所述待处理事务是在所述至少两个数据分区中进行写操作的事务时,在对所述至少两个数据分区各自对应且满足一致性的数据快照执行所述待处理事务对应的写操作成功后,将所述待处理事务的标识更新为所述至少两个数据分区各自对应的版本信息。
15.一种事务处理设备,其特征在于,所述设备包括:通信接口、处理器和存储器;所述存储器中存储有所述处理器可执行的程序或指令,所述处理器控制所述通信接口,通过执行所述处理器中存储的程序或指令以实现权利要求1至7任一所述的事务处理方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有可执行程序,所述可执行程序由处理器执行以实现权利要求1至7任一所述的事务处理方法。
17.一种事务处理系统,其特征在于,所述系统包括事务处理装置和至少两个数据分区;
所述事务处理装置,用于接收待处理事务,所述待处理事务是在所述至少两个数据分区中进行操作的事务,获取所述至少两个数据分区对应的,且满足一致性的数据快照,根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作;
其中,在获取所述至少两个数据分区对应的,且满足一致性的数据快照时,所述事务处理装置,具体用于
根据所述至少两个数据分区各自的数据快照的版本信息,检测所述至少两个数据分区各自的数据快照是否满足一致性;
若检测结果为所述至少两个数据分区各自的数据快照不满足一致性,则重新获取版本低的数据分区的数据快照,以及重新获取到的数据快照的版本信息,根据重新获取到的数据快照的版本信息检测所述至少两个数据分区各自的数据快照是否满足一致性,若确定所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
18.根据权利要求17所述的系统,其特征在于,所述待处理事务是在所述至少两个数据分区中进行读操作的事务。
19.根据权利要求17所述的系统,其特征在于,在获取所述至少两个数据分区对应的,且满足一致性的数据快照时,所述事务处理装置,还具体用于
获取所述至少两个数据分区各自的数据快照,以及所述至少两个数据分区各自的数据快照的版本信息;
若检测结果为所述至少两个数据分区各自的数据快照满足一致性,则确定成功获取到所述至少两个数据分区各自对应且满足一致性的数据快照。
20.根据权利要求17所述的系统,其特征在于,所述事务处理装置,还用于
若检测结果为所述至少两个数据分区各自的数据快照不一致,则删除已获取的版本低的数据分区的数据快照。
21.根据权利要求17至20任一所述的系统,其特征在于,
所述数据快照的版本信息包含所述数据快照生成时,所述数据快照对应的数据分区中最近一次写入的多分区写事务的标识,所述多分区写事务是在至少两个数据分区中进行写操作的事务。
22.根据权利要求17所述的系统,其特征在于,所述待处理事务是在所述至少两个数据分区中进行写操作的事务,在根据所述至少两个数据分区对应的,且满足一致性的数据快照执行所述待处理事务对应的操作时,所述事务处理装置,具体用于
在所述至少两个数据分区对应的,且满足一致性的数据快照中执行所述待处理事务对应的写操作;将执行所述待处理事务对应的写操作之后的数据快照保存为对应的数据分区中的数据。
23.根据权利要求17所述的系统,其特征在于,所述事务处理装置,还用于
当所述待处理事务是在所述至少两个数据分区中进行写操作的事务时,在根据所述至少两个数据分区各自对应且满足一致性的数据快照执行所述待处理事务对应的写操作成功后,将所述待处理事务的标识更新为所述至少两个数据分区各自对应的版本信息。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2017/087194 WO2018223262A1 (zh) | 2017-06-05 | 2017-06-05 | 一种事务处理方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110168514A CN110168514A (zh) | 2019-08-23 |
CN110168514B true CN110168514B (zh) | 2022-06-10 |
Family
ID=64565652
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780002963.7A Active CN110168514B (zh) | 2017-06-05 | 2017-06-05 | 一种事务处理方法、装置及设备 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20200110739A1 (zh) |
EP (1) | EP3627359B1 (zh) |
JP (1) | JP6924898B2 (zh) |
KR (1) | KR102353141B1 (zh) |
CN (1) | CN110168514B (zh) |
WO (1) | WO2018223262A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475262B (zh) * | 2020-04-02 | 2024-02-06 | 百度国际科技(深圳)有限公司 | 区块链中事务请求处理方法、装置、设备和介质 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5287496A (en) * | 1991-02-25 | 1994-02-15 | International Business Machines Corporation | Dynamic, finite versioning for concurrent transaction and query processing |
AU6104800A (en) * | 1999-07-16 | 2001-02-05 | Intertrust Technologies Corp. | Trusted storage systems and methods |
US7334004B2 (en) * | 2001-06-01 | 2008-02-19 | Oracle International Corporation | Consistent read in a distributed database environment |
US8949220B2 (en) * | 2003-12-19 | 2015-02-03 | Oracle International Corporation | Techniques for managing XML data associated with multiple execution units |
US8375290B1 (en) * | 2004-02-25 | 2013-02-12 | Avaya Inc. | Document version marking and access method and apparatus |
US7653665B1 (en) | 2004-09-13 | 2010-01-26 | Microsoft Corporation | Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation |
US8713046B2 (en) | 2011-11-08 | 2014-04-29 | Sybase, Inc. | Snapshot isolation support for distributed query processing in a shared disk database cluster |
US8935205B2 (en) * | 2011-11-16 | 2015-01-13 | Sap Ag | System and method of performing snapshot isolation in distributed databases |
CN102819615A (zh) * | 2012-08-30 | 2012-12-12 | 天津火星科技有限公司 | 一种基于应用快照的数据库持续数据保护方法 |
US9098522B2 (en) | 2012-11-29 | 2015-08-04 | Sap Se | Version garbage collection using snapshot lists |
US9411533B2 (en) * | 2013-05-23 | 2016-08-09 | Netapp, Inc. | Snapshots and versioning of transactional storage class memory |
US9632878B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Verification of database table partitions during backup |
CN104461768B (zh) * | 2013-09-22 | 2018-08-14 | 华为技术有限公司 | 副本存储装置及副本存储方法 |
US9779128B2 (en) * | 2014-04-10 | 2017-10-03 | Futurewei Technologies, Inc. | System and method for massively parallel processing database |
US9990224B2 (en) * | 2015-02-23 | 2018-06-05 | International Business Machines Corporation | Relaxing transaction serializability with statement-based data replication |
CN106598992B (zh) * | 2015-10-15 | 2020-10-23 | 南京中兴软件有限责任公司 | 数据库的操作方法及装置 |
CN106610876B (zh) * | 2015-10-23 | 2020-11-03 | 中兴通讯股份有限公司 | 数据快照的恢复方法及装置 |
US20170139980A1 (en) * | 2015-11-17 | 2017-05-18 | Microsoft Technology Licensing, Llc | Multi-version removal manager |
-
2017
- 2017-06-05 WO PCT/CN2017/087194 patent/WO2018223262A1/zh unknown
- 2017-06-05 KR KR1020197036437A patent/KR102353141B1/ko active IP Right Grant
- 2017-06-05 EP EP17912603.2A patent/EP3627359B1/en active Active
- 2017-06-05 JP JP2020517246A patent/JP6924898B2/ja active Active
- 2017-06-05 CN CN201780002963.7A patent/CN110168514B/zh active Active
-
2019
- 2019-12-04 US US16/703,362 patent/US20200110739A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
WO2018223262A1 (zh) | 2018-12-13 |
JP6924898B2 (ja) | 2021-08-25 |
EP3627359B1 (en) | 2023-10-04 |
US20200110739A1 (en) | 2020-04-09 |
JP2020522830A (ja) | 2020-07-30 |
EP3627359A1 (en) | 2020-03-25 |
CN110168514A (zh) | 2019-08-23 |
KR20200006098A (ko) | 2020-01-17 |
EP3627359A4 (en) | 2020-04-22 |
KR102353141B1 (ko) | 2022-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10152500B2 (en) | Read mostly instances | |
US8880488B1 (en) | Efficient extent-based B-tree insertion | |
US11636107B2 (en) | Database management system, computer, and database management method | |
EP3722973A1 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
CN107153643B (zh) | 数据表连接方法及装置 | |
US9378078B2 (en) | Controlling method, information processing apparatus, storage medium, and method of detecting failure | |
US10747777B2 (en) | Computer system and transaction processing management method | |
US20120246661A1 (en) | Data arrangement calculating system, data arrangement calculating method, master unit and data arranging method | |
CN106874281A (zh) | 实现数据库读写分离的方法和装置 | |
US8812468B2 (en) | Database management method | |
JP2019503534A (ja) | データベース操作方法及び装置 | |
US11966754B2 (en) | Cluster bootstrapping for distributed computing systems | |
JP2024521730A (ja) | Sqlクエリを加速するための決定的分散キャッシュのための技術 | |
CN114090113B (zh) | 数据源处理插件动态加载的方法、装置、设备及存储介质 | |
CN110168514B (zh) | 一种事务处理方法、装置及设备 | |
US10127270B1 (en) | Transaction processing using a key-value store | |
US20180267831A1 (en) | Information processing apparatus, stage-out processing method and recording medium recording job management program | |
CN109976881B (zh) | 事务识别方法和装置、存储介质以及电子装置 | |
CN113778975B (zh) | 基于分布式数据库的数据处理方法及装置 | |
CN112000671A (zh) | 基于区块链的数据库表处理方法、装置及系统 | |
CN106055322A (zh) | 一种流程调度方法及装置 | |
CN110515959B (zh) | 数据一致性实现方法、装置及可读存储介质 | |
CN117573617A (zh) | 一种数据均衡方法及装置 | |
CN116529722A (zh) | 双主机架构中的批作业性能改进 | |
CN117312373A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |