本发明实施例涉及分布式数据库,尤其涉及一种支持多副本一致性读的分布式数据库查询系统、方法、设备及介质。
背景技术:
1、分布式数据库是将业务的结构化查询语言(structured query language,sql)请求分解到多个分片存储中的单机数据库上执行。单机数据库通常能保证acid(原子性、一致性、隔离性以及持久性)的特性,但是仅仅将业务sql请求分解成多个请求在单机数据库进行执行,不能保证分布式事务作为整体的隔离性,即无法保证全局事务读一致性。
2、现有技术提供一种基于全局时钟服务的多版本并发控制方法,但是该方法只解决了从各个分片存储中的单机数据库的主副本读的全局事务一致性,从各个分片存储中的单机数据库的备副本读不能保证全局事务读一致性。为了保证多副本读的全局事务一致性,现有的主要方法如下:客户端把请求发送到分布式数据库的入口gate;gate将识别到请求会发送给存储数据的分片存储,首先会从分片存储的单机数据库的主副本获取当前已经提交事务的最大提交时间戳max_cts,然后从全局时钟服务获取快照时间戳sts;max_cts和sts与请求一起发送给分片存储的单机数据库的一个备副本;单机数据库的备副本根据接收到的max_cts判断是否等到数据同步到相应位点;然后根据sts判断数据可见性,将结果返回给gate。但是,上述方法存在性能问题,当单机数据库的主副本的写压力比较大时,备副本数据同步速度会跟不上主副本数据更新的速度,从备副本读数据要等到数据同步到相应位点的时间较长,导致查询延时较长。
技术实现思路
1、本发明提供了一种支持多副本一致性读的分布式数据库查询系统、方法、设备及介质,以解决现有技术导致查询延时较长的问题。
2、根据本发明的一方面,提供了一种支持多副本一致性读的分布式数据库查询系统,包括:多副本一致性读模块、全局事务读一致性模块以及多副本读管理模块;
3、所述多副本一致性读模块,用于提供至少一种非严格的分布式读一致性级别;
4、所述全局事务读一致性模块,用于确保全局事务读一致性;
5、所述多副本读管理模块,用于所述全局事务读一致性模块确保全局事务读一致性之后,基于分片存储列表,非严格的分布式读一致性级别与备副本选择策略,从各个分片存储的单机数据库多个副本中选择一个最终副本读取数据,所述最终备副本满足全局事务读一致性和数据版本接近最新的要求。
6、根据本发明的另一方面,提供了一种支持多副本一致性读的分布式数据库查询方法,包括:
7、分布式数据库入口接收到用户发送的结构化查询语句后,解析所述结构化查询语句,确定出待查询的结构化查询语句所分布的分片存储列表;
8、如果使用多副本读,则获取备副本列表和快照时间戳;
9、遍历备副本列表,并行对每一个备副本对应的单机数据库执行预设操作,所述预设操作包括使用所述快照时间戳查询目标数据,所述目标数据为满足全局事务一致性的数据;
10、将从每一个备副本返回的目标数据汇总后返回给用户。
11、根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:至少一个处理器;以及
12、与所述至少一个处理器通信连接的存储器;其中,
13、所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的支持多副本一致性读的分布式数据库查询方法。
14、根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的支持多副本一致性读的分布式数据库查询方法。
15、本发明实施例的技术方案,基于分片存储列表,分布式读一致性级别与备副本选择策略,计算出备副本列表与快照时间戳,分布式数据库入口使用此快照时间戳在备副本列表的各个备副本上查询满足全局事务一致性的尽量新的数据版本,不需要等待各个备副本数据同步,缩短了整体查询延时。
16、应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
1.一种支持多副本一致性读的分布式数据库查询系统,其特征在于,所述系统包括多副本一致性读模块、全局事务读一致性模块以及多副本读管理模块;
2.根据权利要求1所述的系统,其特征在于,所述至少一种非严格的分布式读一致性级别通过第一系统变量指示,包括:
3.根据权利要求1所述的系统,其特征在于,所述全局事务读一致性包括:
4.根据权利要求1或3所述的系统,其特征在于,所述多副本读管理模块用于:
5.根据权利要求4所述的系统,其特征在于,所述多副本读管理模块获取所述备副本列表和所述快照时间戳的过程包括:
6.根据权利要求5所述的系统,其特征在于,根据第二系统变量的取值或第一系统变量的取值,执行不同流程来更新所述目标备副本和所述目标时间戳,包括:
7.根据权利要求6所述的系统,其特征在于,从当前分片存储的备副本列表中轮询选择下一个满足目标条件的备副本作为目标备副本,包括:
8.根据权利要求6所述的系统,其特征在于,所述备副本的最大同步时间戳散列表以键值对的形式存储,键为备副本的唯一标识,值为备副本的最大同步时间戳与更新时间,所述更新时间为最大同步时间戳从备副本对应的单机数据库获取的时间。
9.根据权利要求6所述的系统,其特征在于,从备副本的最大同步时间戳散列表中获取一个备副本的最大同步时间戳的流程包括:
10.一种支持多副本一致性读的分布式数据库查询方法,其特征在于,所述方法包括:
11.一种电子设备,其特征在于,所述电子设备包括:
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求10所述的支持多副本一致性读的分布式数据库查询方法。