掌桥专利:专业的专利平台
掌桥专利
首页

一种查询方法、分布式系统、设备及存储介质

文献发布时间:2023-06-19 09:43:16


一种查询方法、分布式系统、设备及存储介质

技术领域

本发明实施例涉及数据处理技术领域,尤其涉及一种查询方法、分布式系统、设备及存储介质。

背景技术

分布式数据库是将业务的结构化查询语言(Structured Query Language,SQL)请求分解到多个单机数据上执行。单机数据库通常能保证ACID(原子性、一致性、隔离性以及持久性)的特性,但是仅仅将业务SQL请求分解成多个请求在单机数据库进行执行,不能保证分布式事务作为整体的隔离性。

操作相同数据表的事务间可能出现脏读的情况。例如,假定分布式数据库具有单机数据库A和B。分布式事务1在单机数据库A和B上均进行数据更新。进入提交阶段,提交请求会被分解为单机数据库A和B的提交指令。假如单机数据库A的提交速度比单机数据库B快,会存在一个中间状态,当A提交完成,B未提交完成。如果此时分布式事务2查询单机数据库A和B,会查询到分布式事务1在单机数据库A发生了修改但不会查到B上发生了修改。但事实上。分布式事务1作为一个整体应视为未完成提交,对分布式事务2而言,这个查询结果是一个脏读,没有遵循正确的隔离性。无法保证分布式事务的ACID的一致性。

发明内容

本发明实施例提供了一种查询方法、分布式系统、设备及存储介质,可以减少GTM的负载,减少与GTM的交互,提升其性能,并且可以实现分布式查询事务的一致性读。

第一方面,本发明实施例提供了一种查询方法,由单机数据库执行,该方法包括:

识别当前接收的查询事务的类型,如果确定所述类型为分布式查询事务,则获取与所述分布式查询事务匹配的分布式查询数据;

在确定所述分布式查询数据满足本地可见性时,从所述单机数据库获取与所述分布式查询数据对应的GXID项中的第一GXID值;

如果根据所述第一GXID值确定所述分布式查询数据通过分布式更新方式生成,则验证所述分布式查询数据是否满足全局可见性;

若是,则将所述分布式查询数据作为所述分布式查询事务的反馈结果。

第二方面,本发明实施例还提供了一种分布式系统,该系统包括:至少一个单机数据库、GTM、至少一个备份代理、备份协调器以及备份存储器;

其中,所述备份协调器与所述GTM连接,所述备份协调器与各所述备份代理连接,所述单机数据库与所述备份代理一一对应并连接,所述备份存储器与各所述备份代理连接;

所述单机数据库,用于实现本发明任一实施例所述的查询方法;

所述备份协调器,用于通过所述GTM创建分布式事务,获取全局事务快照,并将所述全局事务快照发送至各所述备份代理;

所述备份代理,用于根据所述全局事务快照访问对应的所述单机数据库,读取所述单机数据库的数据并发送至所述备份存储器;

所述备份存储器,用于在所有所述备份代理的读取数据完成后,根据接收到的所有数据生成全量数据快照备份;

所述备份协调器,还用于在所有所述备份代理的读取数据完成后,通知所述GTM关闭所述分布式事务;

其中,所述全量数据快照备份,用于在至少一个所述的单机数据库数据异常时,恢复所述单机数据库的数据。

第三方面,本发明实施例还提供了一种计算机设备,包括处理器和存储器,所述存储器用于存储指令,当所述指令执行时使得所述处理器执行以下操作:

识别当前接收的查询事务的类型,如果确定所述类型为分布式查询事务,则获取与所述分布式查询事务匹配的分布式查询数据;

在确定所述分布式查询数据满足本地可见性时,从单机数据库获取与所述分布式查询数据对应的GXID项中的第一GXID值;

如果根据所述第一GXID值确定所述分布式查询数据通过分布式更新方式生成,则验证所述分布式查询数据是否满足全局可见性;

若是,则将所述分布式查询数据作为所述分布式查询事务的反馈结果。

第四方面,本发明实施例还提供了一种存储介质,存储介质用于存储指令,所述指令用于执行:

识别当前接收的查询事务的类型,如果确定所述类型为分布式查询事务,则获取与所述分布式查询事务匹配的分布式查询数据;

在确定所述分布式查询数据满足本地可见性时,从所述单机数据库获取与所述分布式查询数据对应的GXID项中的第一GXID值;

如果根据所述第一GXID值确定所述分布式查询数据通过分布式更新方式生成,则验证所述分布式查询数据是否满足全局可见性;

若是,则将所述分布式查询数据作为所述分布式查询事务的反馈结果。

本发明实施例的技术方案,通过识别当前接收的查询事务的类型,如果确定类型为分布式查询事务,则获取与分布式查询事务匹配的分布式查询数据;在确定分布式查询数据满足本地可见性时,从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值;如果根据第一GXID值确定分布式查询数据通过分布式更新方式生成,则验证分布式查询数据是否满足全局可见性;若是,则将分布式查询数据作为分布式查询事务的反馈结果,解决了分布式查询事务一致性读的问题,实现了减少GTM的负载,减少与GTM的交互,提升其性能的效果。

附图说明

图1a是本发明实施例一提供的一种查询方法的流程图;

图1b是本发明实施例一提供的一种查询事务一致性读的架构示意图;

图2a是本发明实施例二提供的一种查询方法的流程图;

图2b是本发明实施例二提供的一种更新数据的流程图;

图2c是本发明实施例二提供的一种查询方法的流程图;

图3是本发明实施例三提供的一种分布式系统的结构示意图;

图4是本发明实施例四提供的一种查询装置的结构示意图;

图5是本发明实施例五提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。

本文使用的术语“分布式数据库”可以是基于多版本并发控制(Mutil-VersionConcurrency Control,MVCC)原理,通过全局事务管理器(Global Transaction Manager,GTM)处理分布式事务。分布式数据库可以通过SQL请求将业务分解到多个单机数据库上执行。

本文使用的术语“GTM”可以用于确保集群范围内的事务的一致性,可以负责发放全局唯一事务标识(GXID)和全局事务快照(Global Snapshot),作为MVCC的一部分。

本文使用的术语“单机数据库”可以是数据节点,可以用于数据实际存储,可以是分布式存储数据。

本文使用的术语“分布式查询事务”可以是在多个单机数据库上执行的查询事务。

本文使用的术语“分布式查询数据”可以是与分布式查询事务对应的查询数据,可以是一个数据或多个数据。

本文使用的术语“本地可见性”可以是单机数据库可以在本地读取数据。

本文使用的术语“全局可见性”可以是分布式事务的状态是已提交,单机数据库的数据可以满足一致性读,满足ACID。

本文使用的术语“单机查询事务”可以包括内部事务(系统事务)和直连事务(例如直接连接单机数据库进行导数据)等中的查询事务。

本文使用的术语“单机查询数据”可以是与单机查询事务对应的查询数据,可以是一个或者多个数据。

本文使用的术语“全局事务快照”可以是GTM根据时间节点记录的全局事务处理状态的集合,例如,哪些全局事务在当前时刻提交;或者,哪些全局事务在当前时刻正在执行等。

本文使用的术语“本地事务快照”可以是单机数据库记录并维持的时间节点与本地事务处理状态的关系集合,例如,当前时刻哪些本地事务提交;或者,当前时刻哪些本地事务正在执行等。

实施例一

图1a是本发明实施例一提供的一种查询方法的流程图,本实施例可适用于通过GTM实现分布式事务一致性读的情况,该方法可以由查询装置来执行,该装置可以通过软件,和/或硬件的方式实现,装置可以集成在单机数据库中,如图1a所示,该方法具体包括:

步骤110、识别当前接收的查询事务的类型,如果确定类型为分布式查询事务,则获取与分布式查询事务匹配的分布式查询数据。

在本发明实施例中,以单机数据库的数据存储方式是行存储,单机数据库基于MVCC,使用本地事务的ID和本地事务快照判断数据行的可见性为实例进行说明,但本发明实施例不限于上述场景下的查询方法。

图1b是本发明实施例一提供的一种查询事务一致性读的架构示意图。如图1b所示,分布式查询事务可以通过GTM进行事务管理,而单机查询事务可以不通过GTM进行事务管理。在本实施例中,在执行查询事务之前,可以先识别当前接收的查询事务的类型。类型可以包括分布式查询事务和单机查询事务。

如图1b所示,用户可以通过应用软件(Application,APP)生成查询事务,可以是分布式查询事务或者单机查询事务。如果是分布式查询事务,APP可以通过管理用户会话(Gate)以及GTM将分布式查询事务分发至各个单机数据库(Data Base,DB)。如果是单机查询事务,APP可以将单机查询事务直接发送至各个DB。对于DB而言,如果不对查询事务的类型进行识别,可能仅是接收到查询事务而并不知晓查询事务是分布式查询事务还是单机查询事务。

在本发明实施例的一个可选实施方式中,识别当前接收的查询事务的类型,包括:判断是否能在查询事务中提取出第二GXID值;若是,则确定查询事务的类型为分布式查询事务;否则,确定类型为单机查询事务。

其中,APP通过Gate和GTM向DB发送分布式查询事务时,Gate会通过分布式查询事务开始指令从GTM获取第二GXID和全局事务快照。分布式查询事务开始指令可以是“Begin”。Gate可以将获得的第二GXID和全局事务快照发送至DB。而APP向DB发送单机查询事务时,由于不通过Gate和GTM进行发送,DB不会接收到第二GXID和全局事务快照。因此,DB可以通过判断接收的查询事务中是否能提取出第二GXID值或者全局事务快照确定查询事务的类型。

如果查询事务的类型为分布式查询事务,DB可以确定分布式查询事务中的SQL对应的查询数据为分布式查询数据,并对分布式查询数据进行获取,其中,分布式查询数据的个数可以是一个或者多个,对于各分布式查询数据可以分别具有对应的事务ID(本地事务标识),各分布式查询数据与对应的事务ID可以是行存储。在本发明实施例的一个可选实施方式中,如果确定查询事务的类型为单机查询事务,则获取与单机查询事务匹配的单机查询数据,其中,单机查询数据的个数可以是一个或者多个,对于各单机查询数据也可以分别具有对应的事务ID,各单机查询数据与对应的事务ID可以是行存储。

步骤120、在确定分布式查询数据满足本地可见性时,从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值。

其中,在本发明实施例的技术方案中,可以在对分布式事务的数据进行行存储时增加列,在该列中存储GXID项的GXID值。该增加的列可以是对用户而言是隐藏式的,例如可以利用系统的隐藏列实现。在增加GXID项时,可以为当前数据以及历史版本的历史数据增加GXID。其中,GXID值可以是GTM针对分布式事务分发的。在本发明实施例的技术方案中,可以在对单机事务的数据进行行存储时不进行GXID项的生成,单机事务可以不与GTM进行交互。对于单机事务,GXID项的值可以是空。在分布式查询数据满足本地可见性时,可以获取预先在数据更新进行存储时对应的第一GXID至值,以确定分布式查询数据的更新方式。

步骤130、如果根据第一GXID值确定分布式查询数据通过分布式更新方式生成,则验证分布式查询数据是否满足全局可见性。

在本发明实施例的一个可选实施方式中,根据第一GXID值确定分布式查询数据通过分布式更新方式生成,包括:如果确定第一GXID值有效,则确定分布式查询数据通过分布式更新方式生成。

其中,第一GXID值有效可以是指第一GXID值是根据当前的分布式查询事务之前的事务通过GTM分发确定并存储的GXID。例如,在当前的分布式查询事务之前对分布式查询数据进行更新的事务是分布式事务,可以通过GTM确定分布式事务的GXID值,可以将该GXID值作为分布式查询数据的第一GXID值,该第一GXID值是有效的。

又如,在当前的分布式查询事务之前对分布式查询数据进行更新的事务是单机事务,可以保持GXID项为空,或者填写非有效值。其中,有效GXID值可以是大于0的值,无效GXID值可以是空、0或者负值。

在本实施例中,可以通过获取的分布式查询数据的第一GXID值是否有效,确定分布式查询数据生成的更新方式是分布式更新方式或者单机更新方式。即可以通过获取的分布式查询数据的第一GXID值是否有效,判断分布式查询数据是分布式事务最后修改或者单机事务最后修改。

在本实施例中,如果分布式查询数据是分布式事务最后修改的需要验证分布式查询数据的全局可见性,以确定分布式查询数据是否可读。而如果分布式查询数据是单机事务最后修改的,因为单机事务不通过GTM进行执行,因此无需验证分布式查询数据的全局可见性,只需保证本地可见性,即可读取分布式查询数据,可以减少与GTM的交互。

步骤140、如果分布式查询数据满足全局可见性,则将分布式查询数据作为分布式查询事务的反馈结果。

其中,如果分布式查询数据是分布式事务最后修改的,并且满足全局可见性,则分布式查询数据可以进行读取,满足一致性读条件,可以将分布式查询数据作为分布式查询事务的反馈结果。

对于单机查询数据,无需验证全局可见性。在本发明实施例的一个可选实施方式中,在确定单机查询数据满足本地可见性时,将单机查询数据作为单机查询事务的反馈结果。

本发明实施例的技术方案,通过识别当前接收的查询事务的类型,如果确定类型为分布式查询事务,则获取与分布式查询事务匹配的分布式查询数据;在确定分布式查询数据满足本地可见性时,从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值;如果根据第一GXID值确定分布式查询数据通过分布式更新方式生成,则验证分布式查询数据是否满足全局可见性;若是,则将分布式查询数据作为分布式查询事务的反馈结果,解决了分布式事务一致性读的问题,实现了对单机查询事务与分布式查询事务进行区分,单机查询事务不通过GTM执行,减少GTM的负载,减少与GTM的交互,提升其性能的效果。

实施例二

图2a是本发明实施例二提供的一种查询方法的流程图,本实施例的技术方案可以与上述一个或多个实施方式相结合。如图2a所示,该方法包括:

步骤210、判断是否能在查询事务中提取出第二GXID值;若否,执行步骤220;若是,执行步骤260。

其中,单机数据库如果能在查询事务中提取出第二GXID值,表明查询事务为分布式查询事务;如果不能提取出第二GXID值,表明查询事务为单机查询事务。

步骤220、确定类型为单机查询事务,获取与单机查询事务匹配的单机查询数据。

步骤230、获取本地存储的与单机查询数据对应的事务的ID以及本地事务快照,根据事务的ID以及本地事务快照确定单机查询数据是否本地可见;若是,执行步骤240;若否,执行步骤250。

其中,图2b是本发明实施例二提供的一种更新数据的流程图,如图2b所示,在单机事务对数据进行更新时,可以更新事务的ID,将事务的ID与更新后的数据一起记录。单机数据库可以记录单机事务的完成情况,比如在某时刻完成进行提交,形成本地事务快照。

如图2b所示,在分布式事务对数据进行更新时,可以更新事务的ID、GXID,将ID、GXID与更新的数据一起记录。单机数据库可以记录分布式事务的本地完成情况,比如在某时刻分布式事务中与ID对应的本地事务完成进行提交,形成本地事务快照。

在确定当前查询数据(单机查询数据或者分布式查询数据)是否本地可见时,可以根据当前查询数据对应的事务ID查询本地事务快照中ID对应事务的状态,在事务状态为提交时,可以确定当前查询数据本地可见;在事务状态为未提交时,可以确定当前查询数据不满足本地可见性。

步骤240、将单机查询数据作为单机查询事务的反馈结果;结束。

其中,对于单机查询事务不涉及与GTM的交互,因此,单机查询数据满足本地可见性时,即可满足一致性读,可以将单机查询数据在满足本地可见性时,作为单机查询事务的反馈结果。

步骤250、判断是否存储与单机查询数据对应的单机历史数据;若是,将单机历史数据作为新的单机查询数据,返回步骤230;若否,返回空值,结束。

如图2b所示,在单机更新事务中,单机数据库会对与单机更新事务匹配的更新数据进行更新,将更新数据匹配的更新前数据作为单机历史数据,与更新前数据对应的事务ID作为历史ID。更新前数据也可以具有再之前的数据,即对数据的更新,更新前后的数据都不进行丢弃,而是进行保留,将更新前的数据作为历史版本数据,更新后的数据作为当前数据。一种情况可以是数据在当前的单机更新事务之前可以不存在,例如新增数据,可以不存在历史版本数据。

在当前的单机查询数据不满足本地可见性时,可以将单机历史数据作为新的单机查询数据,验证是否满足本地可见性,如果满足将新的单机查询数据作为单机查询事务的反馈结果;如果不满足可以进一步验证新的单机查询数据的单机历史数据的本地可见性,直至存在单机查询数据可以作为反馈结果,或者不存在单机查询数据满足本地可见性返回空值作为反馈结果。

步骤260、确定类型为分布式查询事务,获取与分布式查询事务匹配的分布式查询数据。

步骤270、获取本地存储的与分布式查询数据对应的事务的ID以及本地事务快照,根据事务的ID以及本地事务快照确定分布式查询数据是否本地可见;若是,执行步骤280;若否,执行步骤2110。

其中,确定分布式查询数据的本地可见性过程与确定单机查询数据的本地可见性过程相似,这里不再赘述。

步骤280、从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值;如果第一GXID值有效,执行步骤290;如果第一GXID值无效,执行步骤2100。

在本发明实施例的一个可选实施方式中,对于分布式更新事务的执行可以是:获取分布式更新事务中包括的第三GXID值;根据分布式更新事务对匹配的更新数据进行更新后,在与更新数据匹配的GXID项中,添加第三GXID值。

其中,第三GXID值为发送分布式更新事务的客户端通过Gate向GTM请求的有效GXID值,例如APP通过Gate向GTM请求GXID值和全局事务快照。Gate可以将第三GXID值和全局事务快照分发至各个单机数据库,GTM对于APP可以是不可见的。单机数据库可以对分布式更新事务进行执行,并将第三GXID值与更新数据进行对应存储。

在本发明实施例的一个可选实施方式中,在根据分布式更新事务对匹配的更新数据进行更新后,在与更新数据匹配的GXID项中,添加第三GXID值之后,还包括:将与更新数据匹配的更新前数据,确定为更新数据的历史数据。

如图2b所示,单机数据库可以对分布式更新事务进行执行,并将第三GXID值与更新数据进行对应存储。将更新数据作为当前数据,将更新前数据作为历史数据,并将历史数据以及与历史数据对应的GXID对应存储。

在本发明实施例的一个可选实施方式中,如果确定第一GXID值有效,则确定分布式查询数据通过分布式更新方式生成。

其中,在进行分布式查询事务时,可以从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值,并判断一GXID值的有效性。例如,第一GXID值大于0,确定GXID有效,上一对分布式查询数据进行更新的是分布式事务,是通过分布式更新方式生成,即分布式查询数据是分布式事务最后修改的。又如,GXID小于等于0或者为空,确定GXID无效,上一对分布式查询数据进行更新的是单机事务,是通过单机更新方式生成,即分布式查询数据是单机事务最后修改的。

步骤290、验证分布式查询数据是否满足全局可见性;若是,执行步骤2100;若否,执行步骤2110。

如果分布式查询数据是分布式事务最后修改的,分布式查询数据的可见性是需要确定最后修改分布式查询数据的分布式事务的状态的,以确定分布式查询数据是否全局可见。如果分布式查询数据是单机事务最后修改的,分布式查询数据的可见性在满足本地可见性时即可见,无需确定全局可见性。

在本发明实施例的一个可选实施方式中,验证分布式查询数据是否满足全局可见性,包括:从单机数据库中获取分布式查询数据对应的第一GXID值,以及从GTM请求当前的全局事务快照;根据第一GXID值以及全局事务快照验证分布式查询数据是否满足全局可见性。

其中,根据第一GXID值可以从全局事务快照中确定与第一GXID值对应事务的状态,在事务状态为提交时,分布式查询数据满足全局可见性;在事务状态为未提交时,分布式查询数据不满足全局可见性。

步骤2100、将分布式查询数据作为分布式查询事务的反馈结果;结束。

其中,在分布式查询数据满足全局可见性时,分布式查询数据可以进行一致性读,可以将分布式查询数据作为分布式查询事务的反馈结果。

步骤2110、判断是否存储与分布式查询数据对应的目标历史数据;若是,将目标历史数据作为新的分布式查询数据,返回执行步骤270;若否,返回空值,结束。

其中,在分布式查询数据不满足全局可见性时,分布式查询数据不可以进行一致性读,需要确定分布式查询数据是否存在目标历史数据,以确定分布式查询事务的反馈结果。可以将目标历史数据作为新的分布式查询数据,重复确定本地可见性、GXID有效性(更新方式)以及全局可见性的判断过程,直至存在分布式查询数据可作为反馈结果进行返回,或者不存在目标历史数据,返回空值作为分布式查询事务的反馈结果。

本发明实施例的技术方案,通过根据查询事务是否具有GXID确定查询事务的类型,并根据类型采用不同的判断条件;当类型为单机查询事务时判断本地可见性;当类型为分布式查询事务时判断分布式查询数据的更新方式,根据更新方式采用不同的判断条件;当更新方式为单机更新方式时判断本地可见性;当更新方式为分布式更新方式时判断全局可见性;根据可见性条件确定查询事务的一致性读,解决了查询事务的一致性读的问题,无需考虑单机事务与GTM的交互,实现了减少GTM的负载,减少与GTM的交互,提升分布式系统性能的效果。

图2c是本发明实施例二提供的一种查询方法的流程图,如图2c所示,本发明实施例中进行一致性读的流程可以如下:

单机数据库可以接收查询事务,可以确定查询事务对应当前查询数据的本地可见性。如果当前查询数据满足本地可见性,判断查询事务是否为分布式查询事务以及当前查询数据是否由分布式事务最后修改;否则,判断是否存在当前查询数据的历史数据。如果查询事务是分布式查询事务并且当前查询数据是分布式事务最后修改,确定当前查询数据的全局可见性;否则,将当前查询数据返回作为反馈结果。如果当前查询数据满足全局可见性,将当前查询数据返回作为反馈结果;否则,判断是否存在当前查询数据的历史数据。其中,对于历史数据可以视为当前查询数据,重新进行判断,直至存在历史数据可以作为反馈结果返回;或者不存在历史数据,返回空值。

实施例三

图3是本发明实施例三提供的一种分布式系统的结构示意图,如图3所示,该系统包括:至少一个单机数据库310、GTM 320、至少一个备份代理330、备份协调器340以及备份存储器350。

其中,备份协调器340与GTM 320连接,备份协调器340与各备份代理330连接,单机数据库310与备份代理330一一对应并连接,备份存储器350与各备份代理330连接。

单机数据库310,用于实现权本发明任一实施例所提供的查询方法。

备份协调器340,用于通过GTM 320创建分布式事务,获取全局事务快照,并将全局事务快照发送至各备份代理330。

备份代理330,用于根据全局事务快照访问对应的单机数据库310,读取单机数据库310的数据并发送至备份存储器350。

备份存储器350,用于在所有备份代理330的读取数据完成后,根据接收到的所有数据生成全量数据快照备份。

备份协调器340,还用于在所有备份代理330的读取数据完成后,通知GTM320关闭分布式事务。

其中,全量数据快照备份,用于在至少一个的单机数据库310数据异常时,恢复单机数据库310的数据。

其中,创建的分布式事务是与本发明前述实施例中的分布式更新事务或分布式查询事务具有相同的执行方式,这里不再赘述。

本发明实施例的技术方案,通过上述快照备份过程,即使存在其他事务对数据进行更新,本发明实施例备份的全量快照备份中的数据依旧是备份协调器创建分布式事务时的全局事务快照,即可以在不停止服务的情况下,实现一致性快照备份,为用户恢复数据,实现数据的备份提供了极大的便利。

实施例四

图4是本发明实施例四提供的一种查询装置的结构示意图。结合图4,该装置包括:类型识别模块410,第一GXID值获取模块420,全局可见性验证模块430和第一反馈结果模块440。

其中,类型识别模块410,用于识别当前接收的查询事务的类型,如果确定类型为分布式查询事务,则获取与分布式查询事务匹配的分布式查询数据;

第一GXID值获取模块420,用于在确定分布式查询数据满足本地可见性时,从单机数据库获取与分布式查询数据对应的GXID项中的第一GXID值;

全局可见性验证模块430,用于如果根据第一GXID值确定分布式查询数据通过分布式更新方式生成,则验证分布式查询数据是否满足全局可见性;

第一反馈结果模块440,用于若分布式查询数据满足全局可见性,则将分布式查询数据作为分布式查询事务的反馈结果。

在上述各实施例的基础上,可选的,该装置,还包括:

单机查询数据获取模块,用于在识别当前接收的查询事务的类型之后,如果确定类型为单机查询事务,则获取与单机查询事务匹配的单机查询数据;

第二反馈结果模块,用于在确定单机查询数据满足本地可见性时,将单机查询数据作为单机查询事务的反馈结果。

在上述各实施例的基础上,可选的,类型识别模块410,包括:

第二GXID值提取单元,用于判断是否能在查询事务中提取出第二GXID值;

类型确定单元,用于若能在查询事务中提取出第二GXID值,则确定查询事务的类型为分布式查询事务;否则,确定类型为单机查询事务。

在上述各实施例的基础上,可选的,该装置,还包括:

第三GXID值获取模块,用于获取分布式更新事务中包括的第三GXID值,第三GXID值为发送分布式更新事务的客户端通过Gate向GTM请求的有效GXID值;

第三GXID值添加模块,用于根据分布式更新事务对匹配的更新数据进行更新后,在与更新数据匹配的GXID项中,添加第三GXID值。

在上述各实施例的基础上,可选的,全局可见性验证模块430,包括:

更新方式确定单元,用于如果确定第一GXID值有效,则确定分布式查询数据通过分布式更新方式生成。

在上述各实施例的基础上,可选的,第一GXID值获取模块420和/或第二反馈结果模块,包括:

事务ID和本事事务快照获取单元,用于获取本地存储的与当前查询数据对应的事务的ID以及本地事务快照;其中,当前查询数据包括:分布式查询数据或者单机查询数据;

本地可见确定单元,用于根据事务的ID以及本地事务快照确定当前查询数据是否本地可见。

在上述各实施例的基础上,可选的,该装置,还包括:

历史数据确定模块,用于在根据分布式更新事务对匹配的更新数据进行更新后,在与更新数据匹配的GXID项中,添加第三GXID值之后,将与更新数据匹配的更新前数据,确定为更新数据的历史数据。

在上述各实施例的基础上,可选的,该装置,还包括:

目标历史数据存储判断模块,用于在验证分布式查询数据是否满足全局可见性之后,若分布式查询数据不满足全局可见性,则判断是否存储与分布式查询数据对应的目标历史数据;

遍历模块,用于若存储与分布式查询数据对应的目标历史数据,则将目标历史数据作为新的分布式查询数据后,返回执行获取与分布式查询数据对应的GXID项中的第一GXID值的操作,直至满足遍历结束条件;

第三反馈结果模块,用于根据遍历结果,生成与分布式查询事务匹配的反馈结果。

在上述各实施例的基础上,可选的,全局可见性验证模块430,包括:

第一GXID值和全局事务快照获取单元,用于从单机数据库中获取分布式查询数据对应的第一GXID值,以及从GTM请求当前的全局事务快照;

全局可见性验证单元,用于根据第一GXID值以及全局事务快照验证分布式查询数据是否满足全局可见性。

本发明实施例所提供的查询装置可执行本发明任意实施例所提供的查询方法,具备执行方法相应的功能模块和有益效果。

实施例五

图5是本发明实施例五提供的一种计算机设备的结构示意图,如图5所示,该设备包括:

一个或多个处理器510,图5中以一个处理器510为例;

存储器520;

设备还可以包括:输入装置530和输出装置540。

设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图5中以通过总线连接为例。

存储器520作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种查询方法对应的程序指令/模块(例如,附图4所示的类型识别模块410,第一GXID值获取模块420,全局可见性验证模块430和第一反馈结果模块440)。处理器510通过运行存储在存储器520中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种查询方法,即:

识别当前接收的查询事务的类型,如果确定所述类型为分布式查询事务,则获取与所述分布式查询事务匹配的分布式查询数据;

在确定所述分布式查询数据满足本地可见性时,从单机数据库获取与所述分布式查询数据对应的GXID项中的第一GXID值;

如果根据所述第一GXID值确定所述分布式查询数据通过分布式更新方式生成,则验证所述分布式查询数据是否满足全局可见性;

若是,则将所述分布式查询数据作为所述分布式查询事务的反馈结果。

存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置530可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。

实施例六

本发明实施例六提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的一种查询方法:

识别当前接收的查询事务的类型,如果确定所述类型为分布式查询事务,则获取与所述分布式查询事务匹配的分布式查询数据;

在确定所述分布式查询数据满足本地可见性时,从单机数据库获取与所述分布式查询数据对应的GXID项中的第一GXID值;

如果根据所述第一GXID值确定所述分布式查询数据通过分布式更新方式生成,则验证所述分布式查询数据是否满足全局可见性;

若是,则将所述分布式查询数据作为所述分布式查询事务的反馈结果。

可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

相关技术
  • 一种查询方法、分布式系统、设备及存储介质
  • 基于分布式系统的交互式大数据查询方法、装置、存储介质和终端设备
技术分类

06120112276126