一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库系统、管理事务的方法及装置与流程

2022-02-20 12:34:13 来源:中国专利 TAG:


1.本技术涉及数据库技术领域,具体涉及一种数据库系统、管理事务的方法及装置。


背景技术:

2.数据库系统(database db)通过事务处理机制对客户端业务提供数据操作的原子性(atomicity,a),一致性(consistency,c),隔离性(isolation,i),持久性(durability,d),即acid。数据库系统的事务是一个数据库操作序列,由事务开始与事务结束之间执行的全部数据库操作组成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务的这一特点也正体现了事务的原子性(a)。
3.数据库系统在对事务处理过程中,为了实现事务间的并发控制,通常采用全局事务管理器(global transaction mangement,gtm)来对事务进行标识和排序,gtm中通过注册槽位的方式记录有所有的活跃事务,活跃事务指的是正在被数据节点(datanode,dn)执行的事务。数据库系统在对客户端提供服务的过程中,协调节点(coordinator node,cn)接收到客户端发送的请求(例如:查询)后,会使用锁向gtm申请各注册槽位的快照,以得到活跃事务链表,该活跃事务链表中会包含所有的活跃事务。然后,cn将该活跃事务链表发送给dn,dn就可以根据该活跃事务链表与本地事务进行比对,从而确定出dn中已提交事务。
4.因为锁不能同时被其他事务使用,当并发事务多时,会存在锁冲突,采用锁从注册槽位获取到活跃事务链表的方式,会严重影响并发性。而且gtm管理全局的活跃事务,所生成的活跃事务链表的内容大,需要消耗很大的网络流量,制约了数据库系统的并发数及扩展性。


技术实现要素:

5.本技术实施例提供一种数据库系统以及一种管理事务的方法,用于降低网络流量,提升数据库系统的并发数及扩展性。本技术实施例还提供了相应的装置。
6.本技术第一方面提供一种数据库系统,包括:第一全局事务管理器(globaltransaction mangement,gtm)、第一数据节点(datanode,dn)和协调节点(coordinatornode,cn);cn用于向第一dn发送查询,第一dn用于响应于查询,确定目标提交序列号(commitseqno,csn),根据目标csn确定第一dn上的已提交事务,以及根据已提交事务确定查询对应的查询结果,目标csn是第一gtm分配的,目标csn用于区分第一dn上的已提交事务和活跃事务,活跃事务为正在执行中的事务。
7.该第一方面中,数据库系统可以是分布式数据库系统(distributed database system,ddbs)。该数据库系统可以包括一个或多个dn,一个或多个cn,若该数据库系统包括两个gtm,则该第一gtm为主gtm,另一gtm为备用gtm。数据库的事务是一个数据库操作序列,由事务开始(begin)与事务结束(commit)之间执行的全部操作组成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务提交指的是事务被执行完后提交到数据存储器中保存。csn是事务提交后由第一gtm分配的一个全局序列号,整个数据库系统
中,每个已提交事务都有一个唯一的csn,目标csn是第一gtm所分配的一个最新的csn,或者是第一dn所分配的一个最新的csn。在接收到查询时的每个已提交事务的csn比目标csn小,当然,也可以是每个已提交事务的csn比目标csn大,所以可以通过csn比较的方式,确定出第一dn上的已提交事务。查询指的是一个query。第一dn上有本地事务标识与csn的映射关系,根据csn可以查找到已提交事务的本地事务标识,第一dn中存储的数据记录有对应的本地事务标识,这样就可以根据已提交事务的本地事务标识扫描数据,得到查询结果,查询结果是与查询对应的数据。相比于第一gtm通过锁确定活跃事务链表,第一gtm、cn和第一dn之间发送活跃事务链表,第一dn通过活跃事务链表确定已提交事务。该第一方面提供的方案,第一gtm只需要维护一个全局最新的csn,既避免了锁冲突,又可以减少第一gtm查找大量活跃事务的计算量,有利于第一gtm接入更多的请求,提供了第一gtm的处理能力。第一gtm、cn和第一dn三者之间只需要发送一个csn,可以降低网络流量。第一dn通过csn比较大小的方式就可以确定已提交事务,可以减少第一dn的计算量,由此可见,该第一方面提供的方案,有利于提高数据库系统的并发数及扩展性。
8.在第一方面的一种可能的实现方式中,cn用于接收第一dn发送的指示目标事务提交成功的消息,并响应于消息,向第一gtm发送事务提交通知,事务提交通知用于指示目标事务已提交;第一gtm用于根据事务提交通知,将所分配的第一全局csn分配给目标事务,并向cn发送目标事务的csn;cn用于向第一dn发送的目标事务的csn;第一dn用于存储目标事务的csn与第一标识之间的映射关系,第一标识为第一dn为目标事务在第一dn上的本地事务标识。
9.该种可能的实现方式中,目标事务提交成功的消息和事务提交通知均用于指示事务提交成功,两者可以是同一消息,事务提交通知也可以是cn基于目标事务提交成功的消息得到的。目标事务提交后,第一gtm会将第一全局csn分配给该目标事务。第一dn会为本地提交的目标事务生成本地事务标识,然后存储目标事务的本地事务标识与目标事务的csn之间的映射关系,这样就可以通过目标事务的csn与该映射关系确定到该目标事务在第一dn上的本地事务标识,进而查找到该目标事务。该种可能的实现方式,相比于由第一gtm为每个事务分配一个事务标识,由第一dn为事务生成本地事务标识,减轻了第一gtm的负载,而且减少了第一gtm、cn和第一dn之间为传递事务标识而产生的网络流量,从而提高了数据库系统的吞吐量。
10.在第一方面的一种可能的实现方式中,数据库系统还包括第二dn,目标事务由第一dn和第二dn共同执行;cn用于向第一dn发送目标事务的全局标识,全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识;第一dn用于根据全局标识确定共同执行目标事务的第二dn。
11.该种可能的实现方式中,目标事务结束的消息可以是客户端触发的,也可以是cn触发的。cn响应于目标事务结束的消息会确定该目标事务由一个dn执行,还是由多个dn执行,该处的多个包括两个。若由多个dn执行,则说明该事务是分布式事务,考虑到数据库系统出现故障时要做故障恢复,需要将分布在不同dn上的同一事务查找到。所以,针对执行目标事务的dn,cn会下发全局标识(global identity,gid),这样,多个dn就可以根据gid准确查找到该分布式事务的所有参与dn。针对执行同一事务的不同dn,cn所下发的gid是不相同的,以目标事务由第一dn和第二dn两个dn共同执行为例,那么cn给第一dn下发的gid1中包
括第二dn的标识和第二标识,cn给第二dn下发的gid2中包括第一dn的标识和第一标识。这样,在发生故障时,第一dn可以通过gid1为该目标事务查找到第二dn,第二dn也可以通过gid2为该目标事务查找到第一dn,从而实现出现故障时对目标事务的恢复。
12.在第一方面的一种可能的实现方式中,cn还用于向第一dn发送查询之前,确定查询涉及包含第一dn的至少两个dn,向第一gtm发送快照请求;接收第一gtm发送的目标csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn,并向第一dn发送目标csn。
13.该种可能的实现方式中,cn在接收查询后,会先确定该查询涉及一个dn,还是涉及多个dn。若涉及多个dn,则cn会向第一gtm请求第一gtm当前所分配的第二全局csn,也就是目标csn。然后,cn将该目标csn以及查询封装为第一请求发送给第一dn,第一dn解析该第一请求,就可以从中获取到该目标csn,当然,也可以分别发送查询和目标csn。
14.在第一方面的一种可能的实现方式中,cn用于向第一dn发送查询之前,确定查询只涉及第一dn;cn还用于向第一dn发送单节点标识;第一dn用于根据单节点标识,从第一dn的本地缓存中获取目标csn,目标csn是第一gtm为第一dn最近一次提交的事务所分配的csn。
15.该种可能的实现方式中,cn在接收查询后,会先确定该查询涉及一个dn,还是涉及多个dn。若涉及一个dn,cn可以直接向第一dn发送第一请求,该第一请求中携带一个单节点标识即可,当然,也可以不用封装为第一请求,分开发送查询和单节点标识即可,该单节点标识用于指示该查询只涉及第一dn,第一dn根据该单节点标识就可以使用本地最近一次提交的事务的csn作为目标csn即可。因为查询只涉及第一dn,所以使用该dn上最后一次得到的csn也可以实现上述已提交事务查找的过程,不需要必须从第一gtm获取全局最新的csn,这样进一步减少cn向第一gtm请求目标csn所产生的网络流量。
16.在第一方面的一种可能的实现方式中,第一dn用于根据目标csn确定已提交事务,包括:第一dn用于确定出csn不大于目标csn的事务为已提交事务;或者,第一dn用于确定出csn不小于目标csn的事务为已提交事务。
17.该种可能的实现方式中,若查询涉及多个dn,目标csn是第一gtm所分配的csn都是全局最大的csn或者最小的csn,若查询涉及一个dn,目标csn是第一dn所分配的本地的最大的csn或者最小的csn,所以可以通过比较大小的方式确定已提交的事务。该种比较方式可以提高已提交事务的查找速度。
18.在第一方面的一种可能的实现方式中,数据库系统还包括第二gtm,第二gtm用于备份第一gtm的数据;第一gtm用于向cn发送目标事务的csn时,第一gtm用于通过异步线程将第三全局csn发送给第二gtm,第三全局csn是第一gtm在第一全局csn基础上递增或递减得到的。
19.该种可能的实现方式中,通过异步线程将第一gtm所分配的最新全局csn,也就是第三全局csn发送给第二gtm,可以确保该数据库系统的可靠性。第三全局csn是在第一全局csn的基础上通过递增或递减的方式再得到的。通常csn采用递增的方式,当然也可以是递减的方式,或者其他的csn更新方式。以递增为例,递增的步长通常为1,当然也可以为2或者其他数值。以递增的步长是1为例,若第一全局csn是0000005,则第三全局csn为0000006。
20.在第一方面的一种可能的实现方式中,cn用于确定全局清理值,全局清理值是全局的dn所持有的csn中最小的csn,并向第一dn发送全局清理值,全局清理值用于第一dn清
理脏数据。需要说明的是,当第一gtm采用递减的方式维护csn时,全局清理值是全局的dn所持有的csn中最大的csn。
21.该种可能的实现方式中,第一gtm不需要参与对数据的清理,由cn发起收集全局清理值,cn通知第一dn定期根据全局清理值进行脏数据清理,脏数据可以理解为是被修改过事务id的历史数据,对客户端已不可见。这种脏数据清理的方案,可以降低第一gtm的负担,提高第一gtm的性能。
22.本技术第二方面提供一种管理事务的方法,该方法包括:数据库系统中的第一数据节点dn接收数据库系统中的协调节点cn发送的查询,第一dn响应于查询确定目标提交序列号csn,目标csn是数据库系统中的第一gtm分配的,目标csn用于区分第一dn上的已提交事务和活跃事务,活跃事务为正在执行中的事务;第一dn根据目标csn确定第一dn上的已提交事务;根据已提交事务确定查询对应的查询结果。
23.该第二方面中,基于上述第一方面所介绍的数据库系统,第一dn可以通过csn比较的方式,确定出第一dn上的已提交事务。相比于第一dn通过活跃事务链表确定已提交事务,可以减少第一dn的计算量,有利于提高数据库系统的并发数及扩展性。
24.在第二方面的一种可能的实现方式中,该方法还包括:第一dn接收cn发送的目标事务的csn;第一dn存储目标事务的csn与第一标识之间的映射关系,第一标识为第一dn为目标事务在第一dn上的本地事务标识。
25.该种可能的实现方式中,目标事务提交后,第一gtm会将最新的全局csn分配给该目标事务,第一dn会为本地提交的目标事务生成本地事务标识,然后存储目标事务的本地事务标识与目标事务的csn之间的映射关系,这样就可以通过目标事务的csn与该映射关系确定到该目标事务在第一dn上的本地事务标识,以及根据第一dn中存储的数据上的本地事务标识确定查询对应的数据。该种可能的实现方式,相比于由第一gtm为每个事务分配一个事务标识,由第一dn为事务生成本地事务标识,减轻了第一gtm的负载,而且减少了第一gtm、cn和第一dn之间为传递事务标识而产生的网络流量,从而提高了数据库系统的吞吐量。
26.在第二方面的一种可能的实现方式中,数据库系统还包括第二dn,目标事务由第一dn和第二dn共同执行;第一dn可以在接收cn发送的目标事务的csn之前,接收cn发送的目标事务的全局标识,全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识;第一dn根据全局标识确定共同执行目标事务的第二dn。
27.该种可能的实现方式中,目标事务由第一dn和第二dn两个dn共同执行为例,那么cn给第一dn下发的gid1中包括第二dn的标识和第二标识,cn给第二dn下发的gid2中包括第一dn的标识和第一标识。这样,在发生故障时,第一dn可以通过gid1为该目标事务查找到第二dn,第二dn也可以通过gid2为该目标事务查找到第一dn,从而实现出现故障时对目标事务的恢复。
28.在第二方面的一种可能的实现方式中,该查询涉及包含第一dn的至少两个dn,该方法还包括:第一dn接收cn发送的目标csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn。
29.该种可能的实现方式中,在查询涉及到至少两个dn时,需要通过第一gtm所分配的全局csn作为目标csn,来确定已提交事务。
30.在第二方面的一种可能的实现方式中,该查询只涉及第一dn,该方法还包括:第一dn接收cn发送的单节点标识;上述步骤:第一dn根据目标csn确定已提交事务,包括:第一dn根据单节点标识,从第一dn的本地缓存中获取目标csn,目标csn是第一gtm为第一dn最近一次提交的事务所分配的csn。
31.该种可能的实现方式中,因为查询只涉及到第一dn,所以使用该第一dn上最后一次得到的csn也可以实现上述已提交事务查找的过程,不需要必须从第一gtm获取全局最新的csn,这样进一步减少cn向第一gtm请求目标csn所产生的网络流量。
32.在第二方面的一种可能的实现方式中,上述步骤:第一dn根据目标csn确定已提交事务,包括:第一dn确定出csn不大于目标csn的事务为已提交事务;或者,第一dn确定出csn不小于目标csn的事务为已提交事务。
33.该种可能的实现方式中,若查询涉及多个dn,目标csn是第一gtm所分配的csn都是全局最大的csn或者最小的csn,若查询涉及一个dn,目标csn是第一dn所分配的本地的最大的csn或者最小的csn,所以可以通过比较大小的方式确定已提交的事务。该种比较方式可以提高已提交事务的查找速度。
34.在第二方面的一种可能的实现方式中,第一dn向cn发送第一dn所持有的最小的csn,最小的csn用于cn确定全局清理值,全局清理值是全局的dn所持有的csn中最小的csn。第一dn接收cn发送的全局清理值,根据全局清理值清理脏数据。需要说明的是,当第一gtm采用递减的方式维护csn时,全局清理值是全局的dn所持有的csn中最大的csn。
35.该种可能的实现方式中,第一gtm不需要参与对数据的清理,由cn发起收集全局清理值,cn通知第一dn定期根据全局清理值进行脏数据清理,脏数据可以理解为是被修改过事务id的历史数据,对客户端已不可见。这种脏数据清理的方案,可以降低第一gtm的负担,提高第一gtm的性能。
36.本技术第三方面提供一种管理事务的方法,该方法包括:数据库系统中的第一全局事务管理器gtm接收数据库系统中的协调节点cn发送的快照请求;第一gtm根据快照请求向cn发送目标提交序列号csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn,目标csn用于数据库系统中的第一数据节点dn确定第一dn上的已提交事务。
37.该第三方面中,基于上述第一方面所描述的数据库系统,第一gtm只需要维护一个全局最新的csn,既避免了锁冲突,又可以减少第一gtm查找大量活跃事务的计算量,有利于第一gtm接入更多的请求。而且第一gtm、cn和第一dn三者之间只需要发送一个csn,可以降低网络流量。由此可见,该第三方面提供的方案,有利于提高数据库系统的并发数及扩展性。
38.在第三方面的一种可能的实现方式中,该方法还包括:第一gtm接收cn发送的事务提交通知,事务提交通知用于指示目标事务已提交;第一gtm根据事务提交通知,将第一全局csn分配给目标事务,并向cn发送目标事务的csn。
39.在第三方面的一种可能的实现方式中,数据库系统还包括第二gtm,第二gtm用于备份第一gtm的数据;第一gtm向cn发送目标事务的csn时,第一gtm通过异步线程将第三全局csn发送给第二gtm,第三全局csn是第一gtm在第一全局csn基础上递增或递减得到的。
40.该种可能的实现方式中,通过异步线程将第一gtm所分配的最新全局csn,也就是第三全局csn发送给第二gtm,可以确保该数据库系统的可靠性。在第一全局csn的基础上通
过递增或递减的方式得到第三全局csn。通常csn采用递增的方式,当然也可以是递减的方式,或者其他的csn更新方式。以递增为例,递增的步长通常为1,当然也可以为2或者其他数值。以递增的步长是1为例,若第一全局csn是0000005,则第三全局csn为0000006。
41.本技术第四方面提供一种管理事务的方法,包括;数据库系统中的协调节点cn向数据库系统中的第一全局事务管理器gtm发送快照请求;cn接收第一gtm发送的目标提交序列号csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn;cn向数据库系统中的第一数据节点dn发送查询和目标csn,目标csn用于第一dn确定第一dn上的已提交事务。
42.该第四方面中,基于上述第一方面所描述的数据库系统,相比于第一gtm、cn和第一dn之间发送活跃事务链表,该第四方面提供的方案,第一gtm、cn和第一dn三者之间只需要发送一个csn,可以降低网络流量。
43.在第四方面的一种可能的实现方式中,该方法还包括:cn接收第一dn发送的指示目标事务提交成功的消息;cn向第一gtm发送事务提交通知,事务提交通知用于指示目标事务已提交;cn接收第一gtm发送的目标事务的csn,目标事务的csn是第一gtm将第一全局csn分配给目标事务得到的;cn向第一dn发送目标事务的csn,目标事务的csn用于第一dn存储目标事务的csn与第一标识之间的映射关系,第一标识为第一dn为目标事务在第一dn上的本地事务标识。
44.该种可能的实现方式中,目标事务提交成功的消息和事务提交通知均用于指示事务提交成功,两者可以是同一消息,事务提交通知也可以是cn基于目标事务提交成功的消息得到的。目标事务提交后,第一gtm会将当前所分配的第一全局csn分配给该目标事务,第一dn会为本地提交的目标事务生成本地事务标识,然后存储目标事务的本地事务标识与目标事务的csn之间的映射关系,这样就可以通过目标事务的csn与该映射关系确定到该目标事务在第一dn上的本地事务标识,进而通过本地事务标识查找到数据。该种可能的实现方式,相比于由第一gtm为每个事务分配一个事务标识,由第一dn为事务生成本地事务标识,减轻了第一gtm的负载,而且减少了第一gtm、cn和第一dn之间为传递事务标识而产生的网络流量,从而提高了数据库系统的吞吐量。
45.在第四方面的一种可能的实现方式中,数据库系统还包括第二dn,目标事务由第一dn和第二dn共同执行,该方法还包括:cn向第一dn发送目标事务的全局标识,全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识,全局标识用于第一dn根据全局标识确定共同执行目标事务的第二dn。
46.该种可能的实现方式中,cn接收到目标事务结束的消息会确定该目标事务由一个dn执行,还是由多个dn执行,该处的多个包括两个。若由多个dn执行,则说明该事务是分布式事务,考虑到数据库系统出现故障时要做故障恢复,需要将分布在不同dn上的同一事务查找到。所以,针对执行目标事务的dn,cn会下发gid,这样,多个dn就可以根据gid准确查找到该分布式事务的所有参与dn,从而实现出现故障时对目标事务的恢复。
47.在第四方面的一种可能的实现方式中,cn向第一gtm发送快照请求之前,确定查询涉及包含第一dn的至少两个dn。
48.在第四方面的一种可能的实现方式中,cn接收全局的每个dn发送的所持有的最小的csn,根据全局的每个dn所持有的最小的csn确定全局清理值,全局清理值是全局的dn所
持有的csn中最小的csn。cn向第一dn发送全局清理值,该全局清理值用于第一dn根据全局清理值清理脏数据。
49.该种可能的实现方式中,gtm不需要参与对数据的清理,由cn发起收集全局清理值,cn通知第一dn定期根据全局清理值进行脏数据清理,脏数据可以理解为是被修改过事务id的历史数据,对客户端已不可见。
50.本技术第五方面提供一种管理事务的方法,该方法应用于数据库系统,数据库系统包括第一全局事务管理器gtm、第一数据节点dn和协调节点cn,该方法还包括:cn确定查询只涉及到第一dn,cn向第一dn发送查询和单节点标识。
51.该种可能的实现方式中,cn在接收到客户端发送的查询后,会先确定该查询涉及到单节点还是涉及到多节点。若涉及到单节点,cn可以直接向第一dn发送查询和单节点标识,该单节点标识用于指示该查询是涉及到第一dn,第一dn根据该单节点标识就可以使用本地最近一次提交的事务的csn作为目标csn即可。因为单节点事务只涉及一个dn,所以使用该dn上最后一次得到的csn也可以实现上述已提交事务查找的过程,不需要必须从第一gtm获取全局最新的csn,这样进一步减少cn向第一gtm请求目标csn所产生的网络流量。
52.本技术第六方面,提供了一种管理事务的装置,该装置为上述第一方面的数据库系统中的第一dn,该装置用于执行上述第二方面或第二方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第二方面或第二方面的任意可能的实现方式中的方法的模块或单元,如:接收单元、第一处理单元、第二处理单元和第三处理单元,需要说明的是,这三个处理单元所执行的功能也可以通过一个或两个处理单元来实现。
53.本技术第七方面,提供了一种管理事务的装置,该装置为上述第一方面的数据库系统中的第一gtm,该装置用于执行上述第三方面或第三方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第三方面或第三方面的任意可能的实现方式中的方法的模块或单元,如:接收单元和发送单元。
54.本技术第八方面,提供了一种管理事务的装置,该装置为上述第一方面的数据库系统中的cn,该装置用于执行上述第四方面、第五方面或第四方面的任意可能的实现方式中的方法。具体地,该装置包括用于执行上述第四方面、第五方面或第四方面的任意可能的实现方式中的方法的模块或单元,如:接收单元和发送单元。
55.本技术第九方面,提供了一种管理事务的装置。该装置为上述第一方面的数据库系统中的第一dn,该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第二方面或第二方面的任意可能的实现方式中的方法。
56.本技术第十方面,提供了一种管理事务的装置。该装置为上述第一方面的数据库系统中的第一gtm,该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第三方面或第三方面的任意可能的实现方式中的方法。
57.本技术第十一方面,提供了一种管理事务的装置。该装置为上述第一方面的数据库系统中的cn,该装置可以包括至少一个处理器、存储器和通信接口。处理器与存储器和通
信接口耦合。存储器用于存储指令,处理器用于执行该指令,通信接口用于在处理器的控制下与其他网元进行通信。该指令在被处理器执行时,使处理器执行第四方面、第五方面或第四方面的任意可能的实现方式中的方法。
58.本技术第十二方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第二方面,及其各种实现方式中的任一种管理事务的方法。
59.本技术第十三方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第三方面,及其各种实现方式中的任一种管理事务的方法。
60.本技术第十四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有程序,该程序使得处理器执行上述第五方面、第四方面,及其各种实现方式中的任一种管理事务的方法。
61.本技术第十五方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第二方面或者第二方面的任一种可能的实现方式所提供的一种管理事务的方法。
62.本技术第十六方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第三方面或者第三方面的任一种可能的实现方式所提供的一种管理事务的方法。
63.本技术第十七方面,提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备实施上述第五方面、第四方面或者第四方面的任一种可能的实现方式所提供的一种管理事务的方法。
64.本技术第十八方面提供了一种芯片系统,该芯片系统包括处理器,用于支持管理事务的装置实现上述第二方面或第二方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于保存管理事务的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
65.本技术第十九方面提供了一种芯片系统,该芯片系统包括处理器,用于支持管理事务的装置实现上述第三方面或第三方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于保存管理事务的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
66.本技术第二十方面提供了一种芯片系统,该芯片系统包括处理器,用于支持管理事务的装置实现上述第五方面、第四方面或第四方面任意一种可能的实现方式中所涉及的功能。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于保存管理事务的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
67.可以理解地,上述提供的任一种管理事务的装置、计算机存储介质或者计算机程序产品均用于执行上文所提供的对应的管理事务的装置的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
68.图1a是数据库系统的一架构示意图;
69.图1b是本技术实施例提供的分布式数据库系统的一架构示意图;
70.图1c是本技术实施例提供的分布式数据库系统的另一架构示意图;
71.图1d是本技术实施例提供的数据库系统的一实施例示意图;
72.图2是本技术实施例提供的管理事务的方法的一实施例示意图;
73.图3a是本技术实施例提供的一场景示例示意图;
74.图3b是本技术实施例提供的另一场景示例示意图;
75.图4是本技术实施例提供的管理事务的方法的另一实施例示意图;
76.图5a是本技术实施例提供的另一场景示例示意图;
77.图5b是本技术实施例提供的另一场景示例示意图;
78.图6是本技术实施例提供的管理事务的方法的另一实施例示意图;
79.图7a是本技术实施例提供的另一场景示例示意图;
80.图7b是本技术实施例提供的另一场景示例示意图;
81.图8是本技术实施例提供的管理事务的方法的另一实施例示意图;
82.图9是本技术实施例提供的管理事务的装置的一实施例示意图;
83.图10是本技术实施例提供的管理事务的装置的另一实施例示意图;
84.图11是本技术实施例提供的管理事务的装置的另一实施例示意图;
85.图12是本技术实施例提供的管理事务的装置的一结构示意图;
86.图13是本技术实施例提供的数据库系统的另一结构示意图。
具体实施方式
87.下面结合附图,对本技术的实施例进行描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
88.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
89.本技术实施例提供一种数据库系统以及一种管理事务的方法,用于降低网络流量,提升数据库系统的并发数及扩展性。本技术实施例还提供了相应的装置。以下分别进行详细说明。
90.本技术实施例提供的方法可应用于数据库系统(database system)中。图1a示出了数据库系统的一种典型的逻辑架构,根据图1a,数据库系统100包括数据库110和数据库管理系统(database management system,dbms)130。
91.其中,数据库110是存储在数据存储器(data storage)120中的有组织的数据集合,即按照特定的数据模型组织、存储和使用的相关联的数据集合。根据组织数据所使用的数据模型的不同,数据可分为多种类型,比如关系型数据(relational data)、图(graph)数据、时序(time series)数据等。关系型数据是使用关系模型建模的数据,通常表示为表,表中的行表示一个对象或实体的相关值的集合。图数据,简称为“图”,用于表示对象或实体之间的关系,比如社交关系。时间序列数据,简称时序数据,是按时间顺序记录和索引的数据列,用于描述一个对象在时间维度上的状态变化信息。
92.数据库管理系统130是数据库系统的核心,是用于组织、存储以及维护数据的系统软件。客户端200可以通过数据库管理系统130访问数据库110,数据库管理员也通过数据库管理系统进行数据库的维护工作。数据库管理系统130提供多种功能,供客户端200建立,修改和查询数据库,其中,客户端200可以为应用程序,或者用户设备。数据库管理系统130所提供的功能可以包括但不限于以下几项:(1)数据定义功能,数据库管理系统130提供数据定义语言(data definition language,ddl)来定义数据库110的结构,ddl用于刻画数据库框架,并可以被保存在数据字典中;(2)数据存取功能,数据库管理系统130提供数据操纵语言(data manipulation language,dml),实现对数据库110的基本存取操作,比如检索、插入、修改和删除;(3)数据库运行管理功能,数据库管理系统130提供数据控制功能对数据库110运行进行有效地控制和管理,以确保数据正确有效;(4)数据库的建立和维护功能,包括数据库初始数据的载入,数据库的转储、恢复、重组织,系统性能监视、分析等功能;(5)数据库的传输,数据库管理系统提供处理数据的传输,以实现客户端与数据库管理系统之间的通信,通常与操作系统协调完成。
93.数据存储器120包括但不限于固态硬盘(solid state drives,ssd)、磁盘阵列、云存储或其他类型的非瞬态计算机可读存储介质。所属领域的技术人员可以理解一个数据库系统可能包括比图1a中所示的部件更少或更多的组件,或者包括与图1a所示组件不同的组件,图1a仅仅示出了与本发明实施例所公开的实现方式更加相关的组件。
94.本技术实施例提供的数据库系统可以为分布式数据库系统(distributed databasesystem,ddbs)。ddbs在对事务处理过程中,为了实现事务间的并发控制,通常采用全局事务管理器(global transaction mangement,gtm)来对事务进行管理。下面结合图1b和图1c介绍ddbs。
95.图1b为采用共享磁盘(shared-storage)架构的分布式数据库系统示意图,包括一个或多个协调节点(coordinator node,cn),多个数据节点(datanode,dn)、一个或多个gtm(如图1b中的第一gtm和第二gtm)。第一gtm作为主gtm,第二gtm用于备份第一gtm的数据,在第一gtm出现故障时接替第一gtm的工作,这样可以确保ddbs的高可靠性。cn和dn之间通过网络通道来通信。在一个实施例中,该网络通道可以由交换机、路由器和网关等网络设备组成的。cn、dn、和gtm共同实现数据库管理系统的功能,为客户端提供数据库的检索、插入、修改和删除等服务。在一个实施例中,每个cn、dn、和gtm上部署有数据库管理系统。共享数据存储器中存储有可供多个dn共享的数据,dn可以通过网络通道对数据存储器中的数据执行
读写操作。共享数据存储器可以为共享磁盘阵列。分布式数据库系统中的cn、dn、第一gtm或第二gtm可以为物理机,比如数据库服务器,也可以为运行在抽象硬件资源上的虚拟机(virtual machine,vm)或容器(container)。在一个实施例中,cn、dn、第一gtm或第二gtm为虚拟机或容器,网络通道为虚拟交换网络,该虚拟交换网络包括虚拟交换机。cn、dn、第一gtm或第二gtm中部署的数据库管理系统为dbms实例(instance),该dbms实例可以是进程或线程,这些dbms配合完成数据库关系系统的功能。在另一个实施例中,cn、dn、第一gtm或第二gtm为物理机,网络通道包括一个或多个交换机,交换机为存储区网络(storage area network,san)交换机、以太网交换机,光纤交换机或其它物理交换设备。
96.图1c为采用无共享(shared-nothing)架构的分布式数据库系统示意图,每个dn具有各自独享的硬件资源(如数据存储器)、操作系统和数据库,cn、dn、第一gtm或第二gtm之间通过网络通道来通信,该网络通道可以参阅上述图1b部分的相应介绍进行理解。该体系下,数据将根据数据库模型和应用特点被分配到各个dn上,查询任务将被cn分割成若干部分,在所有dn上并行执行,彼此协同计算,作为整体提供数据库服务,所有通信功能都在一个高宽带网络互联体系上实现。如同图1b所描述的shared-storage架构的分布式数据库系统一样,这里的cn、dn、第一gtm或第二gtm既可以是物理机,也可以是虚拟机。
97.在本技术所有实施例中,数据库系统的数据存储器(data storage)包括但不限于固态硬盘(solid state drives,ssd)、磁盘阵列或其他类型的非瞬态计算机可读介质。图1b-1c中虽未示出数据库,应理解,数据库存储在数据存储器中。所属领域的技术人员可以理解一个数据库系统可能包括比图1a-1c中所示的部件更少或更多的组件,或者包括与图1a-1c中所示组件不同的组件,图1a-1c仅仅示出了与本技术实施例所公开的实现方式更加相关的组件。但所属领域的技术人员可理解成一个分布式数据库系统可包含任何数量的cn和dn。各cn和dn的数据库管理系统功能可分别由运行在各cn和dn上的软件、硬件和/或固件的适当组合来实现。
98.上述图1b和图1c所描述的分布式数据库系统中包括多个dn和多个cn,其中,每个dn的功能是基本相同的,每个cn的功能也是基本相同的。为了便于描述,下面使用第一dn和cn进行介绍,第一dn为多个dn中的任意一个dn,cn为多个cn中的任意一个cn。
99.基于上述图1b和图1c所介绍的分布式数据库系统,对管理事务的方法可以包括对已提交事务的可见性管理和对活跃事务提交过程中的管理两个方面。下面分别进行介绍。
100.一、对已提交事务的可见性管理。
101.可见性是针对客户端而言的,客户端只能访问到在发送操作请求之前的已提交事务,这些事务称对于客户端可以描述为“可见”。对发送操作时处于正在执行的活跃事务或等待执行的待执行事务都不能访问,这些事务称对于客户端可以描述为“不可见”。
102.数据库系统的事务是一个数据库操作序列,由事务开始与事务结束之间执行的全部操作组成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。举例来说,将由账户a到账户b的转账过程作为一个事务,那么该事务可以包括两个操作:1、将账户a的余额减去转账金额。2、将账户b的余额增加转账金额。如果第二个操作没有完成,那么整个事务都应该取消。也就是说,事务中包含的所有操作都执行成功,事务才执行成功,否则事务执行失败。执行成功后事务才能提交到数据存储器中存储,提交后该事务称为已提交事务。
103.在一个实施例中,第一gtm维护有全局的提交序列号(commit sequence number,csn),并且根据事务提交原子递增或递减,即每一个事务提交,gtm以原子操作的方式将全局csn增加或减少,比如加1csn可以是一个64位的字符串,也可以是其他长度的字符串,对于csn的长度,本技术中不做限定,csn可以是以数字的形式来表示,也可以是通过其他字符,如:abcd的形式来表示,或者通过数字与字符混用的形式来表示。在对已提交事务的管理过程中,如图1d所示,cn接收客户端的查询,向第一dn发送查询;查询可以是与cn从客户端接收的查询相同的查询,也可以是cn根据从客户端接收的查询生成的。需要说明的是,本技术所有实施例中的“查询”,是指操作数据库的请求或语句(statement),比如用于检索、插入、修改和删除数据的语句。第一dn响应于查询,确定目标提交序列号csn,根据目标csn确定第一dn上的已提交事务,以及根据已提交事务确定查询对应的查询结果,目标csn是第一gtm分配的,目标csn用于区分第一dn上的已提交事务和活跃事务,活跃事务为正在执行中的事务。
104.本技术实施例中,cn在接收到客户端的查询后,会先判断该查询涉及单节点还是涉及多节点。在一种实现方式中,cn可以通过查询的执行计划来确定该查询涉及到单个dn还是多个dn。执行计划中描述了执行查询涉及的操作以及涉及的dn,通过解析查询对应的执行计划即可确定该查询涉及单个dn还是多个dn。然后可以按照不同的流程执行管理事务的方法,下面分别进行介绍。
105.1、cn确定查询涉及多个dn后的管理事务的方法可以参阅图2进行理解。
106.如图2所示,本技术实施例提供的管理事务的方法的一实施例包括:
107.101、cn向第一gtm发送快照请求。对应地,第一gtm接收cn发送的快照请求。
108.102、第一gtm向cn发送目标提交序列号csn。对应地,cn接收第一gtm发送的目标提交序列号csn。
109.目标csn用于区分第一dn上的已提交事务和活跃事务,活跃事务为正在执行中的事务。
110.第一gtm会维护一个全局csn,该全局csn可以是全局最大的csn,也可以是全局最小的csn。全局即指整个数据库系统。
111.该目标csn即为第一gtm接收到快照请求时所分配的全局csn。
112.103、cn向第一dn发送第一请求。对应地,第一dn接收cn发送的第一请求。
113.第一请求中包括查询和目标csn。实际上,也可以不将查询和目标csn封装为第一请求,也可以是分开两个消息独立传送查询和目标csn。
114.查询指的是一个query,可以包括查询、修改、增加或删除语句。
115.104、第一dn从第一请求提取出目标提交序列号csn。
116.第一dn可以解析第一请求,从该查询的指定字段中提取出csn,该指定字段可以是第一dn和cn预先协商好的字段。
117.105、第一dn根据目标csn确定第一dn上的已提交事务。
118.每个已提交事务都有一个csn,该csn是在事务提交到数据存储器后由第一gtm分配的。第一gtm通常按照递增或递减的方式分配csn。所以第一dn可以通过比较大小的方式确定出已提交事务。若第一gtm按照递增的方式分配csn,那么目标csn就是所有已分配csn中最大的csn,第一dn可以通过比大小的方式确定出csn不大于目标csn的事务为已提交事
务。若第一gtm按照递减的方式分配csn,那么目标csn就是所有已分配csn中最小的csn,第一dn可以通过比大小的方式确定出csn不小于目标csn的事务为已提交事务。
119.以第一gtm按照递增的方式分配csn为例,结合图3a和图3b所示的场景进行介绍。
120.如图3a所示,在第一dn接收到目标csn=4时,第一dn上,已提交事务有tx1、tx3和tx5,活跃事务有tx2、tx4和tx6。其中,tx1的csn=1,tx3的csn=2,tx5的csn=3。tx2、tx4和tx6还未被分配csn。那么采用csn=4与csn=1、2和3比较,就可以确定出比csn=4小的已提交事务有tx1、tx3和tx5。
121.如图3b所示,若接收到目标csn=4时,刚好有事务tx6提交,第一gtm为事务tx6分配的csn=8,这种情况下,虽然该tx6也是已提交事务,但tx6对客户端不可见,所以通过csn=4与6比较后,该tx6不会被确定为该场景的已提交事务。
122.106、第一dn根据已提交事务确定查询对应的查询结果。
123.第一dn上有本地事务标识与csn的映射关系,根据csn可以查找到已提交事务的本地事务标识,第一dn中存储的数据记录有对应的本地事务标识,这样就可以根据已提交事务的本地事务标识扫描数据,得到查询结果,查询结果是与查询对应的数据。
124.结合上述图3a和图3b所示的场景,若第一事务是tx3,可以结合tx3的本地标识,从tx1、tx3和tx5中确定出tx3。
125.相比于第一gtm通过锁确定活跃事务链表,第一gtm、cn和第一dn之间发送活跃事务链表,第一dn通过活跃事务链表确定已提交事务。本技术实施例提供的方案,第一gtm只需要维护一个全局最新的csn,既避免了锁冲突,又可以减少第一gtm查找大量活跃事务的计算量,有利于第一gtm接入更多的请求。第一gtm、cn和第一dn三者之间只需要发送一个csn,可以降低网络流量。第一dn通过csn比较大小的方式就可以确定已提交事务,可以减少第一dn的计算量,可见,本技术实施例提供的方案有利于提高数据库系统的并发数及扩展性。
126.2、cn确定查询涉及单个dn后的管理事务的方法可以参阅图4进行理解。
127.201、cn向第一dn发送第一请求。对应地,第一dn接收cn发送的第一请求。
128.第一请求中包含查询和单节点标识。该单节点标识用于指示该查询只涉及到第一节点。
129.查询和单节点标识也可以不用封装在第一请求中,也可以分开两次单独发送查询和单节点标识。
130.202、第一dn从第一请求中解析出单节点标识,根据单节点标识,从第一dn的本地缓存中获取目标csn。
131.目标csn是第一gtm为第一dn最近一次提交的事务所分配的csn。
132.203、第一dn根据目标csn确定第一dn上的已提交事务。
133.每个已提交事务都有一个csn,该csn是在事务提交到数据存储器后由第一gtm分配的。第一gtm通常按照递增或递减的方式分配csn。所以第一dn可以通过比较大小的方式确定出已提交事务。若第一gtm按照递增的方式分配csn,那么目标csn就是第一dn上最大的csn,第一dn可以通过比大小的方式确定出csn不大于目标csn的事务为已提交事务。若第一gtm按照递减的方式分配csn,那么目标csn就是第一dn上最小的csn,第一dn可以通过比大小的方式确定出csn不小于目标csn的事务为已提交事务。
134.以第一gtm按照递增的方式分配csn为例,结合图5a和图5b所示的场景进行介绍。
135.如图5a所示,接收到第一请求时,第一dn上,已提交事务有tx1、tx3和tx5,活跃事务有tx2、tx4和tx6。其中,tx1的csn=1,tx3的csn=2,tx5的csn=3。tx2、tx4和tx6还未被分配csn。
136.第一dn通过该第一请求中的单节点标识确定目标csn=3,也就是第一dn上目前最大的csn。
137.那么采用csn=3与csn=1、2和3比较,就可以确定出csn小于和等于csn=3的已提交事务有tx1、tx3和tx5。也就是,不大于目标csn=3的已提交事务有tx1、tx3和tx5。
138.如图5b所示,若接收到第一请求时,确定出目标csn=3,刚好有事务tx6提交,第一gtm为事务tx6分配的csn=8,这种情况下,虽然该tx6也是已提交事务,但tx6对客户端不可见,所以通过csn=3与6比较后,该tx6不会被确定为该场景的已提交事务。
139.204、第一dn根据已提交事务确定查询对应的查询结果。
140.该过程可以参阅上述步骤106进行理解。
141.因为单节点事务只涉及一个dn,所以使用该dn上最后一次得到的csn也可以实现上述已提交事务查找的过程,不需要必须从第一gtm获取全局最新的csn,这样进一步减少cn向第一gtm请求目标csn所产生的网络流量。
142.二、对活跃事务提交过程中的管理
143.目标事务是第一dn上正在执行的事务,也就是活跃事务,该活跃事务通过cn接收客户端发送的目标事务结束(commit)的消息来终止执行的,cn接收目标事务结束的消息后会确定该目标事务由一个dn执行,还是由多个dn共同执行,然后可以按照不同的流程执行管理事务的方法,下面分别进行介绍。
144.1、cn确定目标事务是多节点事务后的管理事务的方法可以参阅图6进行理解。
145.300、cn接收客户端发送的目标事务结束的消息。
146.301、cn根据目标事务结束的消息,确定目标事务由第一dn和第二dn共同执行。
147.多个dn共同执行指的是由两个或两个以上的dn共同执行的事务。cn可以根据该目标事务开始时涉及到的执行该目标事务的dn的记录,来确定该目标事务由哪些dn来共同执行的,如该目标事务开始时,cn确定了该目标事务由dn1和dn2共同执行,那么cn中就会存储有该目标事务与dn1和dn2的记录,在cn接收到目标事务结束的消息后,cn就可以从目标事务与dn1和dn2的记录中确定出dn1和dn2执行了该目标事务。
148.302、cn用于向第一dn发送目标事务的全局标识(global identity,gid)。对应地,第一dn接收cn发送的目标事务的全局标识。
149.全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识。
150.针对多节点事务,考虑到数据库系统出现故障时要做故障恢复,需要将分布在不同dn上的同一事务查找到。所以,针对执行目标事务的dn,cn会下发gid,这样,多个dn就可以根据gid准确查找到该多节点事务的所有参与dn。针对执行同一事务的不同dn,cn所下发的gid是不相同的,下面结合图7a介绍多节点事务中的gid。如图7a所示,cn1确定目标事务由dn1、dn3和dn5共同执行,则向dn1发送gid1,向dn3发送gid2,向dn5发送gid3。
151.gid1表示为:t50_cn1_t200_dn3,其中,t50_cn1表示的是协调节点的标识,dn3是
数据节点的标识,t200是目标事务在dn3上的本地事务标识。
152.gid2表示为:t50_cn1_t300_dn5,其中,t50_cn1表示的是协调节点的标识,dn5是数据节点的标识,t300是目标事务在dn5上的本地事务标识。
153.gid3表示为:t50_cn1_t100_dn1,其中,t50_cn1表示的是协调节点的标识,dn1是数据节点的标识,t100是目标事务在dn1上的本地事务标识。
154.其中,t100、t200和t300可以分别是dn1、dn3和dn5为目标事务生成的本地节点标识,然后通知给cn1的。
155.cn1可以根据gid1查找到共同执行目标事务的dn3,dn3可以根据gid2查找到共同执行目标事务的dn5,dn5可以根据gid3查找到共同执行目标事务的dn1,实现图7中的查找闭环,从而查找到共同执行目标事务的所有参与dn。这样,数据库系统在故障恢复时可以通过上述示例的关系查找目标事务,从而快速恢复目标事务。
156.303、第一dn用于根据全局标识确定共同执行目标事务的第二dn,并提交目标事务。
157.提交目标事务指的是第一dn将目标事务提交到数据存储器中存储。
158.304、第一dn向cn发送指示目标事务提交成功的消息。对应地,cn接收第一dn发送的指示目标事务提交成功的消息。
159.305、cn向第一gtm发送事务提交通知。对应地,第一gtm接收cn发送的事务提交通知。
160.事务提交通知用于指示目标事务已提交。目标事务提交成功的消息和事务提交通知均用于指示事务提交成功,两者可以是同一消息,事务提交通知也可以是cn基于目标事务提交成功的消息得到的。
161.306、第一gtm根据事务提交通知,将第一全局csn分配给目标事务。
162.因为数据库系统中的cn可以有多个,第一gtm可以通过多个工作线程对应不同cn发送过来的请求。为了确保数据库系统的高可靠性,第一gtm用于向cn发送目标事务的csn时,第一gtm用于通过异步线程将第三全局csn发送给第二gtm,第三全局csn是第一gtm在第一全局csn基础上递增或递减得到的。通常csn采用递增的方式,当然也可以是递减的方式,或者其他的csn更新方式。以递增为例,递增的步长通常为1,当然也可以为2或者其他数值。以递增的步长是1为例,若第一全局csn是0000005,则第三全局csn为0000006。
163.上述第一gtm向cn发送csn以及向第二gtm发送csn的过程可以参阅图7b的场景进行理解。如图7b所示,第一gtm中的工作线程1与cn1通信连接,工作线程2与cn2通信连接,工作线程3与cn3通信连接。第一gtm可以通过工作线程1给cn1下发第一全局csn,通过工作线程2给cn2下发第一全局csn,通过工作线程3给cn3下发第一全局csn。第一gtm发送第一全局csn后会通过递增或递减的方式得到第三全局csn,第一gtm通过异步线程向第二gtm下发第三全局csn。
164.307、第一gtm向cn发送目标事务的csn,对应地,cn接收第一gtm发送的目标事务的csn。
165.308、cn向第一dn发送的目标事务的csn。对应地,第一dn接收cn发送的目标事务的csn。
166.309、第一dn存储目标事务的csn与第一标识之间的映射关系。
167.第一标识为第一dn为目标事务在第一dn上的本地事务标识。
168.第一dn会为本地提交的目标事务生成本地事务标识,然后存储目标事务的本地事务标识与目标事务的csn之间的映射关系,这样就可以通过目标事务的csn与该映射关系确定到该目标事务在第一dn上的本地事务标识,以及根据第一dn中存储的数据上的本地事务标识确定查询对应的数据。该种可能的实现方式,相比于由第一gtm为每个事务分配一个事务标识,由第一dn为事务生成本地事务标识,减轻了第一gtm的负载,而且减少了第一gtm、cn和第一dn之间为传递事务标识而产生的网络流量,从而提高了数据库系统的吞吐量。
169.2、cn确定目标事务是单节点事务后的管理事务的方法可以参阅图8进行理解。
170.400、cn接收客户端发送的目标事务结束的消息。
171.401、cn根据目标事务结束的消息,确定目标事务由第一dn单独执行。
172.402、cn向第一dn发送目标事务结束的消息。
173.403、第一dn提交目标事务。
174.提交目标事务指的是第一dn将目标事务提交到数据存储器中存储。
175.步骤404至步骤409与步骤304至步骤309相同,此处不再重复赘述。
176.另外,本技术实施例中,数据库系统还包括第二gtm,第二gtm用于备份第一gtm的数据;第一gtm用于向cn发送目标事务的csn时,第一gtm用于通过异步线程将第三全局csn发送给第二gtm。
177.第一gtm中仅维护全局递增csn号,第一gtm中的一个worker线程对应cn端连接过来的一个请求。
178.以上多个管理事务的方法的实施例都可以减少网络流量,提高数据库系统的并发数及扩展性。
179.上述实施例中所描述的目标事务结束的消息是由客户端触发的,这种由客户端触发开始,由客户端触发结束的事务可以称为“显示事务”,实际上,数据库系统也可以管理“隐式事务”,隐式事务指的是由cn触发开始,由cn触发结束的事务。
180.另外,上述数据库系统还可以定期清理脏数据,脏数据可以理解为是被修改过事务id的历史数据,对客户端已不可见。
181.该脏数据的清理过程可以理解为:数据库系统中的每个dn向cn发送所持有的最小的csn,cn根据全局的dn所持有的最小的csn确定全局清理值,全局清理值是全局的dn所持有的csn中最小的csn。cn向第一dn发送全局清理值,第一dn接收cn发送的全局清理值,根据全局清理值清理脏数据。需要说明的是,当第一gtm采用递减的方式维护csn时,全局清理值是全局的dn所持有的csn中最大的csn。
182.该实施例中,第一gtm不需要参与对数据的清理,由cn发起收集全局清理值,cn通知第一dn定期根据全局清理值进行脏数据清理,脏数据可以理解为是被修改过事务id的历史数据,对客户端已不可见。这种脏数据清理的方案,可以降低第一gtm的负担,提高第一gtm的性能。
183.为了便于说明本技术实施例提高的方案与现有技术在效果上的差异,工程人员做了测试,并记录下了如下表1中的数据。
184.表1:
[0185] 4cn 8dn16cn 32dn32cn 64dn
原有gtm模式800000800000800000本技术gtm模式1600000650000017000000
[0186]
表1中,在包括4个cn,8个dn的数据库系统中,采用原有的gtm模式,该gtm每分钟的可以处理的事务量是800000,采用本技术的gtm模式,gtm每分钟的可以处理的事务量是1600000。在包括16个cn,32个dn的数据库系统中,采用原有的gtm模式,该gtm每分钟的可以处理的事务量是800000,采用本技术的gtm模式,gtm每分钟的可以处理的事务量是6500000。在包括32个cn,64个dn的数据库系统中,采用原有的gtm模式,该gtm每分钟的可以处理的事务量是800000,采用本技术的gtm模式,gtm每分钟的可以处理的事务量是17000000。由以上表1中的数据对比可见,原有的gtm模式随着cn和dn的增加,集群整体的吞吐不会增高,整个gtm模式制约着集群的性能上限,采用本技术的gtm模式后,gtm处理性能极大优化,随着节点数的增加,集群整体的性能和吞吐可以线性扩展。
[0187]
以上多个实施例描述了数据库系统和管理事务的方法,下面结合附图介绍本技术实施例提供的管理事务的装置。
[0188]
如图9所示,本技术实施例提供的管理事务的装置50为上述数据库系统中的第一数据节点dn,数据库系统还包括第一全局事务管理器gtm和协调节点cn;该装置50包括:
[0189]
接收单元501,用于接收cn发送的查询。
[0190]
第一处理单元502,用于响应于接收单元501接收的查询,确定目标提交序列号csn,目标csn是第一gtm分配的,目标csn用于区分第一dn上的已提交事务和活跃事务,活跃事务为正在执行中的事务。
[0191]
第二处理单元503,用于根据第一处理单元502确定的目标csn确定第一dn上的已提交事务。
[0192]
第三处理单元504,用于根据第二处理单元503确定的已提交事务确定查询对应的查询结果。
[0193]
本技术实施例提供的装置可以通过csn比较的方式,确定出已提交事务。相比于第一dn通过活跃事务链表确定已提交事务,可以减少计算量,有利于提高数据库系统的并发数及扩展性。
[0194]
可选地,接收单元501,还用于接收cn发送的目标事务的csn。
[0195]
第一处理单元502,还用于存储目标事务的csn与第一标识之间的映射关系,第一标识为第一dn为目标事务在第一dn上的本地事务标识。
[0196]
可选地,数据库系统还包括第二dn,目标事务由第一dn和第二dn共同执行;接收单元501,还用于在接收cn发送的目标事务的csn之前,接收cn发送的目标事务的全局标识,全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识。
[0197]
第一处理单元502,还用于根据全局标识确定共同执行目标事务的第二dn。
[0198]
可选地,查询涉及包含第一dn的至少两个dn,接收单元501,还用于接收cn发送的目标csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn。
[0199]
可选地,查询只涉及第一dn,接收单元501,还用于接收cn发送的单节点标识。
[0200]
第二处理单元503,用于根据单节点标识,从第一dn的本地缓存中获取目标csn,目标csn是第一gtm为第一dn最近一次提交的事务所分配的csn。
[0201]
可选地,第二处理单元503,用于确定出csn不大于目标csn的事务为已提交事务;
或者,第一dn确定出csn不小于目标csn的事务为已提交事务。
[0202]
可选地,该装置还可以包括发送单元,该发送单元可以向cn发送第一dn所持有的最小的csn,最小的csn用于cn确定全局清理值,全局清理值是全局的dn所持有的csn中最小的csn。
[0203]
接收单元501还用于接收cn发送的全局清理值。
[0204]
第一处理单元502用于根据全局清理值清理脏数据。
[0205]
以上,管理事务的装置50的相关内容可以参阅前述方法实施例部分的第一dn的相关内容进行理解,此处不再重复赘述。
[0206]
如图10所示,本技术实施例提供的管理事务的装置60为上述数据库系统中的第一全局事务管理器gtm,数据库系统还包括第一数据节点dn和协调节点cn;该装置包括:接收单元601、发送单元602和处理单元603。
[0207]
接收单元601,用于接收cn发送的快照请求。
[0208]
发送单元602,用于根据快照请求向cn发送目标提交序列号csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn,目标csn用于第一dn确定第一dn上的已提交事务。
[0209]
本技术实施例提供的管理事务的装置60只需要维护一个全局最新的csn,既避免了锁冲突,又可以减少查找大量活跃事务的计算量,有利于接入更多的请求。而且只需要发送一个csn,以降低网络流量,有利于提高数据库系统的并发数及扩展性。
[0210]
可选地,接收单元601,还用于接收cn发送的事务提交通知,事务提交通知用于指示目标事务已提交。
[0211]
处理单元603,用于根据事务提交通知,将第一全局csn分配给目标事务。
[0212]
发送单元602,还用于向cn发送目标事务的csn。
[0213]
可选地,数据库系统还包括第二gtm,第二gtm用于备份第一gtm的数据。
[0214]
发送单元602,还用于向cn发送目标事务的csn时,通过异步线程将全局csn发送给第二gtm,第三全局csn是第一gtm在第一全局csn基础上递增或递减得到的。
[0215]
以上,管理事务的装置60的相关内容可以参阅前述方法实施例部分的第一gtm的相关内容进行理解,此处不再重复赘述。
[0216]
如图11所示,本技术实施例提供的管理事务的装置70为上述数据库系统中的协调节点cn,数据库系统还包括第一全局事务管理器gtm和第一数据节点dn;该装置70包括:发送单元701、接收单元702和处理单元703。
[0217]
发送单元701,用于向第一gtm发送快照请求。
[0218]
接收单元702,用于接收第一gtm发送的目标提交序列号csn,目标csn是第一gtm在接收到快照请求时所分配的第二全局csn。
[0219]
发送单元701,用于向第一dn发送查询和目标csn,目标csn用于第一dn确定第一dn上的已提交事务。
[0220]
可选地,接收单元702,还用于接收第一dn发送的指示目标事务提交成功的消息。
[0221]
发送单元701,还用于向第一gtm发送事务提交通知,事务提交通知用于指示目标事务已提交。
[0222]
接收单元702,还用于接收第一gtm发送的目标事务的csn,目标事务的csn是第一
gtm将第一全局csn分配给目标事务得到的。
[0223]
发送单元701,还用于向第一dn发送目标事务的csn,目标事务的csn用于第一dn存储目标事务的csn与第一标识之间的映射关系,第一标识为第一dn为目标事务在第一dn上的本地事务标识。
[0224]
可选地,数据库系统还包括第二dn,目标事务由第一dn和第二dn共同执行。
[0225]
发送单元701,还用于向第一dn发送目标事务的全局标识,全局标识包括第二dn的标识和第二标识,第二标识是目标事务在第二dn上的本地事务标识,全局标识用于第一dn根据全局标识确定共同执行目标事务的第二dn。
[0226]
可选地,处理单元703,还用于在发送单元701向第一gtm发送快照请求之前,确定查询涉及包含第一dn的至少两个dn。
[0227]
可选地,接收单元702,还用于接收全局的每个dn发送的所持有的最小的csn。
[0228]
处理单元703,还用于根据全局的每个dn所持有的最小的csn确定全局清理值,全局清理值是全局的dn所持有的csn中最小的csn。
[0229]
发送单元701,还用于向第一dn发送全局清理值,该全局清理值用于第一dn根据全局清理值清理脏数据。
[0230]
以上,管理事务的装置70的相关内容可以参阅前述方法实施例部分的cn的相关内容进行理解,此处不再重复赘述。
[0231]
图12所示,为本技术的实施例提供的上述实施例中所涉及的管理事务的装置80的一种可能的逻辑结构示意图。管理事务的装置80包括:处理器801、通信接口802、存储器803以及总线804。处理器801、通信接口802以及存储器803通过总线804相互连接。在本技术的实施例中,处理器801用于对管理事务的装置80的动作进行控制管理,例如,处理器801用于执行图2至图8中与确定相关的步骤,例如:步骤104至106,步骤202至204,步骤301、303、306和309,步骤401、403、406和409。通信接口802用于支持管理事务的装置80进行通信,例如:通信接口802可以执行上述方法实施例中接与接收或发送相关的步骤。存储器803,用于存储数据库服务器80的程序代码和数据。
[0232]
其中,处理器801可以是中央处理器单元,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,数字信号处理器和微处理器的组合等等。总线804可以是外设部件互连标准(peripheralcomponent interconnect,pci)总线或扩展工业标准结构(extended industry standardarchitecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0233]
参见图13,本技术实施例还提供一种分布式数据库系统,包括:包括硬件层1007和运行在硬件层1007之上的虚拟机监控器(vmm)1001,以及多个虚拟机1002。一个虚拟机可以作为分布式数据库系统的一个数据节点。可选第,还可以指定一个虚拟机作为协调节点。
[0234]
具体的,虚拟机1002是通过虚拟机软件在公共硬件资源上模拟出的虚拟的计算机,虚拟机上可以安装操作系统和应用程序,虚拟机还可访问网络资源。对于在虚拟机中运行的应用程序而言,虚拟机就像是在真正的计算机中进行工作。
[0235]
硬件层1007:虚拟化环境运行的硬件平台,可以由一个或多个物理主机的硬件资源抽象得到的。其中,硬件层可包括多种硬件,例如包括处理器1004(例如cpu)和存储器1005,还可以包括网卡1003(例如rdma网卡)、高速/低速输入/输出(i/o,input/output)设备,及具有特定处理功能的其它设备。
[0236]
虚拟机1002基于vmm,以及硬件层1007提供的硬件资源,运行可执行程序,以实现上述图2至图8相关的实施例中管理事务的装置的部分或全部功能。为了简洁,在此不再赘述。
[0237]
进一步地,该分布式数据库系统还可以包括宿主机(host):作为管理层,用以完成硬件资源的管理、分配;为虚拟机呈现虚拟硬件平台;实现虚拟机的调度和隔离。其中,host可能是虚拟机监控器(vmm);也有可能是由vmm和1个特权虚拟机的结合。其中,虚拟硬件平台对其上运行的各个虚拟机提供各种硬件资源,如提供虚拟处理器(如vcpu)、虚拟内存、虚拟磁盘、虚拟网卡等等。其中,该虚拟磁盘可对应host的一个文件或者一个逻辑块设备。虚拟机运行在host为其准备的虚拟硬件平台上,host上运行一个或多个虚拟机。虚拟机1002的vcpu通过执行存储在其对应的虚拟内存中的可执行程序,以实现或者执行本发明上述各方法实施例中所描述的方法步骤。例如,实现上述图2至图8相关的实施例中管理事务的装置的部分或全部功能。
[0238]
在本技术的另一实施例中,还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当设备的至少一个处理器执行该计算机执行指令时,设备执行上述图2至图8部分实施例所描述的管理事务的方法。
[0239]
在本技术的另一实施例中,还提供一种计算机程序产品,该计算机程序产品包括计算机执行指令,该计算机执行指令存储在计算机可读存储介质中;设备的至少一个处理器可以从计算机可读存储介质读取该计算机执行指令,至少一个处理器执行该计算机执行指令使得设备执行上述图2至图8部分实施例所描述的管理事务的方法。
[0240]
在本技术的另一实施例中,还提供一种芯片系统,该芯片系统包括处理器,用于支持管理事务的装置实现上述图2至图8部分实施例所描述的管理事务的方法。在一种可能的设计中,芯片系统还可以包括存储器,存储器用于管理事务的装置必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包含芯片和其他分立器件。
[0241]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术实施例的范围。
[0242]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0243]
在本技术实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接
耦合或通信连接,可以是电性,机械或其它的形式。
[0244]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0245]
另外,在本技术实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0246]
功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术实施例各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
[0247]
以上,仅为本技术实施例的具体实施方式,但本技术实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术实施例的保护范围之内。因此,本技术实施例的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献