首页> 中国专利> 数据库索引优化方法、分布式数据库查询方法及装置

数据库索引优化方法、分布式数据库查询方法及装置

摘要

本公开实施例公开了数据库索引优化方法、分布式数据库查询方法及装置,所述数据库索引优化方法包括:确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

著录项

  • 公开/公告号CN113297198A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN202010524545.8

  • 发明设计人 石磊;敬少强;周赵锋;

    申请日2020-06-10

  • 分类号G06F16/22(20190101);G06F16/27(20190101);G06F16/2453(20190101);

  • 代理机构11519 北京智信四方知识产权代理有限公司;

  • 代理人宋海龙

  • 地址 英属开曼群岛大开曼资本大厦一座四层847号邮箱

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本公开涉及计算机技术领域,具体涉及数据库索引优化方法、分布式数据库查询方法及装置。

背景技术

随着互联网、大数据等技术的发展,各种系统采用分布式数据库变得越来越普遍。分布式数据库可以使用较小的计算机系统,每台计算机可单独放在一个地方作为节点,每台计算机中都可能有数据库管理系统的一份完整的拷贝副本,或者部分拷贝副本,并具有自己局部的数据库。位于不同地点的许多节点通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。

在分布式数据库中,如果数据直接按照主键采用诸如哈希散列之类的方式分布,那么一个用户的所有数据可能会分布在很多节点上。每次查询都需要查询所有节点,并对结果进行汇总,这样会导致查询效率很低。

发明内容

为了解决相关技术中的问题,本公开实施例提供数据库索引优化方法、装置、系统、设备和存储介质;分布式数据库查询方法、装置、系统、设备和存储介质;分布式非关系型数据库查询方法、设备和存储介质;分布式数据库的索引优化方法、装置、设备和存储介质。

第一方面,本公开实施例中提供了一种数据库索引优化方法,包括:

确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段。

结合第一方面,本公开在第一方面的第一种实现方式中,在确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点之前,包括:

确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

结合第一方面的第一种实现方式,本公开在第一方面的第二种实现方式中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:

响应于对所述分布式数据库的当前查询请求,确定是否需要对所述分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者

定期确定是否需要对所述分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化。

结合第一方面的第一种实现方式,本公开在第一方面的第三种实现方式中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:

分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;

基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于所述特定主键作为路由进行优化。

结合第一方面的第三种实现方式,本公开在第一方面的第四种实现方式中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:

确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;

确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;

基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

结合第一方面的第四种实现方式,本公开在第一方面的第五种实现方式中,还包括:

基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化。

结合第一方面的第五种实现方式,本公开在第一方面的第六种实现方式中,所述基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,包括:

将所述第一字段记录到所述分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;

基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片。

结合第一方面的第六种实现方式,本公开在第一方面的第七种实现方式中,所述基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,包括:

基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述查询请求中。

结合第一方面的第七种实现方式,本公开在第一方面的第八种实现方式中,还包括:

确定访问所述新数据库索引的查询请求是否被正常执行;

基于确定访问所述新数据库索引的查询请求被正常执行,删除优化之前的数据库索引。

结合第一方面的第八种实现方式,本公开在第一方面的第九种实现方式中,还包括:

基于确定访问所述新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引。

结合第一方面、第一方面的第一种实现方式至第九种实现方式任一项,本公开在第一方面的第十种实现方式中,所述分布式数据库是分布式非关系型数据库。

第二方面,本公开实施例中提供了一种数据库索引优化装置,包括:

第一确定模块,被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

设置模块,被配置为基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段。

第三方面,本公开实施例中提供了一种分布式数据库查询方法,包括:

接收对分布式数据库的查询请求;

确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;

将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

结合第三方面,本公开在第三方面的第一种实现方式中,还包括:

基于确定未对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,将所述查询请求转发到所述分布式数据库的全部节点以进行查询。

第四方面,本公开实施例中提供了一种分布式数据库查询装置,包括:

接收模块,被配置为接收对分布式数据库的查询请求;

第一确定模块,被配置为确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

设置模块,被配置为基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;

转发模块,被配置为将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

第五方面,本公开实施例中提供了一种分布式数据库查询系统,包括:

前端机和多个服务器节点,

其中,所述前端机接收对分布式数据库的查询请求;

所述前端机确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的服务器节点;

基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,所述前端机在所述查询请求中设置所述路由的路由字段;

所述前端机将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的服务器节点以进行数据查询。

第六方面,本公开实施例中提供了一种分布式非关系型数据库查询方法,包括:

接收对分布式非关系型数据库的查询请求;

确定是否已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式非关系型数据库中所在的节点;

基于确定已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;

将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

第七方面,本公开实施例中提供了一种分布式数据库的索引优化方法,包括:

分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;

基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,其中,所述第一查询请求是历史查询请求或当前查询请求;

确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;

确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;

基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

结合第七方面,本公开在第七方面的第一种实现方式中,还包括:

基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化。

结合第七方面的第一种实现方式,本公开在第七方面的第二种实现方式中,所述基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化,包括:

将所述第一字段记录到所述分布式数据库的第一查询请求所访问的优化之前的数据库索引的元信息中;

基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片。

结合第七方面的第二种实现方式,本公开在第七方面的第三种实现方式中,所还包括:

基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述第一查询请求中。

结合第七方面的第二种实现方式或第三种实现方式,本公开在第七方面的第四种实现方式中,所还包括:

确定访问所述新数据库索引的第一查询请求是否被正常执行;

基于确定访问所述新数据库索引的第一查询请求被正常执行,删除优化之前的数据库索引。

结合第七方面、第七方面的第一种实现方式至第三种实现方式任一项,本公开在第七方面的第五种实现方式中,所述分布式数据库是分布式非关系型数据库。

第八方面,本公开实施例中提供了一种分布式数据库的索引优化装置,包括:

分析模块,被配置为分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;

第一确定模块,被配置为基于所述分析模块对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,其中,所述第一查询请求是历史查询请求或当前查询请求;

第二确定模块,被配置为确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;

第三确定模块,被配置为确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;

第四确定模块,被配置为基于第三确定模块确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

第九方面,本公开实施例中提供了一种电子设备,包括存储器和处理器;其中,

所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现如第一方面、第一方面的第一种实现方式至第十种实现方式、第三方面、第三方面的第一种实现方式、第六方面、第七方面、第七方面的第一种实现方式至第五种实现方式任一项所述的方法。

第七方面,本公开实施例中提供了一种可读存储介质,其上存储有计算机指令,该计算机指令被处理器执行时实现如第一方面、第一方面的第一种实现方式至第十种实现方式、第三方面、第三方面的第一种实现方式、第六方面、第七方面、第七方面的第一种实现方式至第五种实现方式任一项所述的方法。

本公开实施例提供的技术方案可以包括以下有益效果:

根据本公开实施例提供的技术方案,通过确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过在确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点之前,包括:确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。而且在查询请求所访问的数据库索引未经优化的情况下进行全局查询,可以方便灵活地执行查询请求。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:响应于对所述分布式数据库的当前查询请求,确定是否需要对所述分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者定期确定是否需要对所述分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化,可以响应于每次查询请求对数据库索引基于路由进行优化,也可以定期针对历史查询请求对数据库索引基于路由进行优化,从而方便灵活地对查询请求所访问的数据库索引基于路由进行优化,提升查询效率。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过所述基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,包括:将所述第一字段记录到所述分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过所述基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述查询请求中,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过确定访问所述新数据库索引的查询请求是否被正常执行;基于确定访问所述新数据库索引的查询请求被正常执行,删除优化之前的数据库索引,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过基于确定访问所述新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引,可以在查询请求所访问的新数据库索引无法正常执行的情况下利用优化之前的数据库索引进行查询,保证了查询过程的可靠性。

根据本公开实施例提供的技术方案,通过所述分布式数据库是分布式非关系型数据库,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升针对分布式非关系型数据库的查询效率。

根据本公开实施例提供的技术方案,通过第一确定模块,被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;设置模块,被配置为基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

根据本公开实施例提供的技术方案,通过接收对分布式数据库的查询请求;确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过基于确定未对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,将所述查询请求转发到所述分布式数据库的全部节点以进行查询,可以在查询请求所访问的数据库索引未经优化的情况下进行全局查询,方便灵活地执行查询请求。

根据本公开实施例提供的技术方案,通过接收模块,被配置为接收对分布式数据库的查询请求;第一确定模块,被配置为确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;设置模块,被配置为基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;转发模块,被配置为将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过前端机和多个服务器节点,其中,所述前端机接收对分布式数据库的查询请求;所述前端机确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的服务器节点;基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,所述前端机在所述查询请求中设置所述路由的路由字段;所述前端机将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的服务器节点以进行数据查询,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过接收对分布式非关系型数据库的查询请求;确定是否已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式非关系型数据库中所在的节点;基于确定已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升针对分布式非关系型数据库的查询效率。而且,根据本公开实施例的分布式非关系型数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,其中,所述第一查询请求是历史查询请求或当前查询请求;确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于路由进行优化,而且可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过所述基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化,包括:将所述第一字段记录到所述分布式数据库的第一查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述第一查询请求中,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过确定访问所述新数据库索引的第一查询请求是否被正常执行;基于确定访问所述新数据库索引的第一查询请求被正常执行,删除优化之前的数据库索引,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过所述分布式数据库是分布式非关系型数据库,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升针对分布式非关系型数据库的查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例提供的技术方案,通过分析模块,被配置为分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;第一确定模块,被配置为基于所述分析模块对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,其中,所述第一查询请求是历史查询请求或当前查询请求;第二确定模块,被配置为确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;第三确定模块,被配置为确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;第四确定模块,被配置为基于第三确定模块确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于路由进行优化,而且可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

结合附图,通过以下非限制性实施方式的详细描述,本公开的其它标签、目的和优点将变得更加明显。在附图中:

图1示出根据本公开一实施方式的分布式数据库查询方法的流程图;

图2示出根据本公开一实施方式的分布式数据库查询装置的结构框图;

图3示出利用根据本公开一实施方式的分布式数据库查询系统的结构框图;

图4示出利用根据本公开一实施方式的判断用户的数据库索引是否需要基于路由进行优化的流程的一个应用示例的示意图;

图5示出根据本公开一实施方式的分布式数据库的索引优化方法的流程图;

图6示出根据本公开一实施方式的分布式数据库的索引优化装置的结构框图;

图7示出根据本公开一实施方式的数据库索引优化方法的流程图;

图8示出根据本公开一实施方式的数据库索引优化装置的结构框图;

图9示出根据本公开一实施方式的电子设备的结构框图;

图10是适于用来实现根据本公开实施方式的任一方法的计算机系统的结构示意图。

具体实施方式

下文中,将参考附图详细描述本公开的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。

在本公开中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的标签、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他标签、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。

另外还需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的标签可以相互组合。下面将参考附图并结合实施例来详细说明本公开。

在实现本公开实施例提及的方案时,发明人进行多方面的研究。

在分布式数据库中,为了支持多种模型,底层存储不能使用单一引擎,而要使用多种引擎,比如KV(KeyValue)引擎和Search引擎。KV引擎可以提供单行查询和范围查询的能力,而Search引擎可以提供多条件组合查询、全文索引、地理空间查询等能力。两种引擎在数据分布上的设计有很大不同,KV引擎在数据分布上常采用按照主键有序排序的方式,这种数据分布方式支持按照主键顺序进行范围查找。而Search引擎在数据分布上常采用哈希散列的方式,将表中所有行均匀分布到不同的数据节点上,查询时也需要对所有节点进行查询并聚合结果。通过Search引擎进行查找时,查询的范围常常是表中的所有记录,所以哈希散列的数据分布方式有利于均匀的平衡访问压力。但是在某些情况下,用户只希望查询表中某个子维度范围下的数据,比如某文档类应用,可能将其所有用户的所有文档的信息存入一张表中,每次查询时只希望查询某个用户下的所有文档。

如果数据直接按照主键采用哈希散列的方式分布,那么一个用户的所有文档可能会分布在很多节点上,每次查询都需要查询所有节点,并对结果进行汇总,在效率上就会很低。假如系统支持把某个用户的所有文档路由到同一个节点上,那么在查询时系统就可以只查询这一个节点,提高查询效率,并节约计算资源。

因此,可以提出基于用户自定义路由的数据库索引优化方案。在该方案中,用户在创建索引时候,需要设置路由字段。在查询的时候,也需要设置路由字段,这样查询请求就可以直接路由到指定的索引分片,提高查询效率。但是,用户理解路由机制和使用自定义的路由规则需要很高的学习和使用难度,因此用户很难正确和有效地利用路由来优化索引查询。而且,用户一旦创建了索引,如果想使用路由优化索引查询,需要删除原索引重新创建新索引,在创建新索引的时候指定路由字段。这导致数据库查询系统难以使用,同时增加了用户的开发难度和维护难度。

在此情况下,需要一种自动化的方案来帮助用户降低对路由规则的使用难度,服务端可以自动化地识别用户的路由特征,帮助用户完成索引查询优化,而无需用户操作路由规则。

在本公开的一个实施例中,数据库索引,也可简称为索引(Index),索引是对数据库表中一列或多列的值进行排序的一种结构,索引的一个主要目的就是加快检索表中数据,协助使用者快速访问数据库表中的特定信息。在本公开的实施例中,数据库表中列也可以被称为字段,数据库表中行也可以被称为记录,一个记录可以包括多个字段。

在本公开的一个实施例中,数据库索引分片指的是一个数据库索引的数据会被切分为许多分片。这是因为,在一个分布式数据库中其索引也是分布式存在的,这些分片会分布在不同的机器(数据库节点)上以实现负载均衡和规模的横向扩展。

在本公开的一个实施例中,在数据库中创建索引时候,可以选择部分主键列作为路由(Routing)字段。在进行索引数据查询时,会根据路由字段的值计算索引数据分片的分布位置,与路由字段值相同的记录会被索引到相同的数据分区中。在查询时,通过设置路由字段可以快速定位到要查询的索引数据分片,避免一些索引数据分片进行无意义的数据查询而引起的资源消耗。

图1示出根据本公开一实施方式的分布式数据库查询方法的流程图。如图1所示,分布式数据库查询方法包括以下步骤S110、S120、S130、S140和步骤S150:

在步骤S110中,接收对分布式数据库的查询请求。

在步骤S120中,确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点。

在步骤S130中,基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段。

在步骤S140中,将设置有路由字段的查询请求转发到基于路由确定的数据库索引分片所在的节点以进行数据查询。

在步骤S150中,基于确定未对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,将查询请求转发到分布式数据库的全部节点以进行查询。

根据本公开实施例提供的技术方案,通过基于确定未对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,将查询请求转发到分布式数据库的全部节点以进行查询,可以在查询请求所访问的数据库索引未经优化的情况下进行全局查询,方便灵活地执行查询请求。

在本公开的一个实施例中,在对分布式数据库提出查询请求时,为了能够访问基于路由进行优化的数据库索引,需要确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化。因此,在确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行了优化的情况下,在查询请求中设置所述路由的路由字段,使得查询请求可以被转发到基于路由确定的数据库索引分片所在的节点以进行数据查询。另一方面,在确定未对分布式数据库的查询请求所访问的数据库索引基于路由进行了优化的情况下,查询方式还是需要对全部节点进行查询,即,将查询请求转发到分布式数据库的全部节点以进行查询。应该理解,在本公开的实施例中,查询请求和历史查询请求可以指的是针对特定用户的查询请求针对该特定用户的数据库的查询请求,也可以是非特定用户的查询请求针对非特定用户的数据库的查询请求。

例如,以如下表1作为分布式数据库表的示例来说明图1所示的分布式数据库查询方法。

表1

在分布式数据库中,表1可以被散开存在多个节点上。例如,接收对分布式数据库的查询请求是查询“2年级5班的班长的名字”。在分布式数据库中,将主键楼层作为路由对数据库索引进行了优化,路由“楼层”用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点。例如,数据库索引分片1中记录路由为楼层1的数据,数据库索引分片2中记录路由为楼层2的数据,数据库索引分片3中记录路由为楼层3的数据。基于确定已经对分布式数据库的查询请求所访问的数据库索引基于“楼层”字段进行优化,在查询请求中设置“楼层”的路由字段。查询请求被设置为包括“处于楼层2的2年级5班的班长的名字”,可以将该查询请求转发到基于“楼层”字段为2作为路由确定的数据库索引分片2。

又例如,如果没有基于诸如“楼层”字段之类的路由对数据库索引进行过优化,则不会对在查询请求中设置路由字段。因此,对于查询请求“2年级5班的班长的名字”,需要将查询请求转发到分布式数据库的全部节点以进行查询。

在本公开的一个实施例中,在步骤S120之前,分布式数据库查询方法还可以包括:确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过在确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点之前,包括:确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。而且在查询请求所访问的数据库索引未经优化的情况下进行全局查询,可以方便灵活地执行查询请求。

在本公开的一个实施例中,并非在全部情况下都需要基于路由对数据库索引进行优化。例如,在表1为中,如果查询请求所是查询数据库中全部男学生的名字,则由于男学生占据全部数据的一半且数据分散在全部数据库节点,路由到全部男学生的索引只能是“性别”字段,以“性别”字段作为路由对索引起不到优化作用,不能提高查询效率。因此,可以确定不需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:响应于对分布式数据库的当前查询请求,确定是否需要对分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者定期确定是否需要对分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:响应于对分布式数据库的当前查询请求,确定是否需要对分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者定期确定是否需要对分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化,可以响应于每次查询请求对数据库索引基于路由进行优化,也可以定期针对历史查询请求对数据库索引基于路由进行优化,从而方便灵活地对查询请求所访问的数据库索引基于路由进行优化,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,确定是否需要对查询请求所访问的数据库索引基于路由进行优化的操作可以被定期执行,也可以在接收到查询请求时执行,即,针对当前查询请求执行。定期确定是否需要对查询请求所访问的数据库索引基于路由进行优化可以保证数据库索引一直在优化,提高查询效率。确定是否需要对当前查询请求所访问的数据库索引基于路由进行优化有利于有针对性地针对当前查询请求进行数据库索引的更新,提高查询效率。

在本公开的一个实施例中,确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的查询请求所访问的数据库索引基于特定主键作为路由进行优化。

根据本公开实施例提供的技术方案,通过确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的查询请求所访问的数据库索引基于特定主键作为路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,如果用户的数据库索引可以基于路由进行索引优化,那么基于该字段进行路由需要分散到所有索引分片上,不能存在热点索引分片(对热点索引分片无需基于路由优化),因此需要分析数据库的主键特征和用户历史请求行为中的主键特征。因此,如果用户的数据库中的某一个字段作为路由字段可以使数据库中的数据分布均匀,并且用户的大部分查询请求都携带该路由字段,那么确定可以进行数据库索引的查询优化。

在本公开的一个实施例中,分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,主键特征是针对分布式数据库的主键的筛选条件。以表1为例,如果在对用户的历史查询请求进行分析发现,大多数的历史查询请求中包含“楼层”这一主键特征以在对分布式数据库查询时作为筛选条件,那么基于这一分析结果,确定需要对表1中的分布式数据库的查询请求所访问的数据库索引基于主键“楼层”作为路由进行优化。在本公开的一个实施例中,满足第一预设条件的历史查询请求可以指的是在一定数量的历史查询请求中有预定比例(例如,60%)的历史查询请求包含特定主键。在本公开的一个实施例中,满足第一预设条件的历史查询请求可以指的是在历史查询请求中随着时间距离当前越来越近包含特定主键的历史查询请求出现频率达到某一阈值。应该理解,可以根据实际应用场景对第一预设条件进行各种限定。以下将对如何确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化进行进一步说明。本公开对第一预设条件不作限制,本领域技术人员可以根据本公开的教导采用各种第一预设条件。

在本公开的一个实施例中,确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度;确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件;基于确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过确定是否需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度;确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件;基于确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度指的是作为路由的第一字段是否使得数据库数据较为均匀地分布在多个节点。以表1为例,如果以字段“年级2”作为第一字段,则数据均匀地分布在3个节点上,即,字段“年级2”作为路由使得表1中的数据在分布式数据库的3个节点分布,分布的均匀程度较高。另一方面,如果以字段“班级1”作为第一字段,则数据仅分布在节点1,即,字段“班级1”作为路由使得表1中的数据在分布式数据库的1个节点分布,分布的均匀程度很低。

在本公开的一个实施例中,如果第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件并且多个历史查询请求中存在达到或超过预设比例的历史查询请求的主键特征包括第一字段,则确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化。在本公开的一个实施例中,第二预设条件可以是第一字段使得数据在达到或超过全部节点中的预设比例或数量的节点中分布。在本公开的一个实施例中,预设比例可以百分比,例如,多个历史查询请求中存在达到或超过50%的历史查询请求的主键特征包括第一字段。本公开对第二预设条件不作限制,本领域技术人员可以根据本公开的教导采用各种第二预设条件。本公开对预设比例不作限制,本领域技术人员可以根据本公开的教导采用各种预设比例。

在本公开的一个实施例中,分布式数据库查询方法还可以包括:基于确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的查询请求所访问的数据库索引进行优化。

根据本公开实施例提供的技术方案,通过基于确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的查询请求所访问的数据库索引进行优化,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,基于确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的查询请求所访问的数据库索引进行优化,包括:将第一字段记录到分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的第一字段创建新数据库索引,其中,新数据库索引的数据基于路由分散到位于分布式数据库的不同节点的新数据库索引的数据库索引分片。

根据本公开实施例提供的技术方案,通过基于确定需要对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的查询请求所访问的数据库索引进行优化,包括:将第一字段记录到分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的第一字段创建新数据库索引,其中,新数据库索引的数据基于路由分散到位于分布式数据库的不同节点的新数据库索引的数据库索引分片,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,在基于作为路由的第一字段对分布式数据库的查询请求所访问的数据库索引进行优化时,可以将第一字段记录到分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中。以表1为例,在确定需要对分布式数据库的查询请求所访问的数据库索引基于“年级”路由进行优化的情况下,可以将“年级”字段记录到分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中。而且,可以基于作为路由“年级”字段创建新数据库索引,其中,新数据库索引的数据基于“年级”路由分散到位于分布式数据库的不同节点的新数据库索引的数据库索引分片。在本公开的实施例中,新数据库索引的创建对于发起查询请求的用户是无需操作的也是无感知的,这减轻了用户负担。

在本公开的一个实施例中,步骤S130包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为路由字段设置到查询请求中。

根据本公开实施例提供的技术方案,通过基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段,包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为路由字段设置到查询请求中,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,以表1为例,基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的“年级”字段作为路由字段设置到查询请求中。将第一字段作为路由字段设置到查询请求中也是无需用户操作的,同时用户也是无感知的。在此情况下,用户的查询请求可以通过设置的第一字段路由到新数据库索引的数据库索引分片进行数据查询,而不需要在全局节点上进行查询。

在本公开的一个实施例中,分布式数据库查询方法还包括:确定访问新数据库索引的查询请求是否被正常执行;基于确定访问新数据库索引的查询请求被正常执行,删除优化之前的数据库索引。

根据本公开实施例提供的技术方案,通过确定访问新数据库索引的查询请求是否被正常执行;基于确定访问新数据库索引的查询请求被正常执行,删除优化之前的数据库索引,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,如果访问新数据库索引的查询请求被正常执行,则删除优化之前的数据库索引。

在本公开的一个实施例中,分布式数据库查询方法还包括:基于确定访问新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引。

根据本公开实施例提供的技术方案,通过基于确定访问新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引,可以在查询请求所访问的新数据库索引无法正常执行的情况下利用优化之前的数据库索引进行查询,保证了查询过程的可靠性。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,可能由于数据错误、网络异常等各种情况导致访问新数据库索引的查询请求无法被正常执行。在此情况下,可以将查询请求切换为访问优化之前的数据库索引,例如,进行全局节点查询。

在本公开的一个实施例中,分布式数据库是分布式非关系型数据库。

根据本公开实施例提供的技术方案,通过分布式数据库是分布式非关系型数据库,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升针对分布式非关系型数据库的查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,非关系型数据库也可以被称为NoSQL数据库,NoSQL数据库的产生可以解决大规模数据集合多重数据种类带来的挑战,例如,大数据应用难题。NoSQL数据库易扩展,种类繁多,但是一个共同的特点都是去掉关系型数据库的关系型特性。数据之间无关系,这样就非常容易扩展,无形之间也在架构的层面上带来了可扩展的能力。另外,NoSQL数据库具有大数据量、高性能的特点。NoSQL数据库具有非常高的读写性能,尤其在大数据量的情况下表现优秀,这得益于它的数据无关系性,使得数据库的结构简单。

以下参照图2描述根据本公开一实施方式的分布式数据库查询装置。

图2示出根据本公开一实施方式的分布式数据库查询装置200的结构框图。如图2所示,分布式数据库查询装置200包括接收模块210、第一确定模块220、设置模块230和转发模块240。

接收模块210被配置为接收对分布式数据库的查询请求。

第一确定模块220被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点。

设置模块230被配置为基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段。

转发模块240被配置为将设置有路由字段的查询请求转发到基于路由确定的数据库索引分片所在的节点以进行数据查询。

根据本公开实施例提供的技术方案,通过接收模块,被配置为接收对分布式数据库的查询请求;第一确定模块,被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点;设置模块,被配置为基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段;转发模块,被配置为将设置有路由字段的查询请求转发到基于路由确定的数据库索引分片所在的节点以进行数据查询,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,可以将分布式数据库查询装置200实现为分布式数据库系统中的前端机。

本领域技术人员可以理解,参照图2描述的技术方案的可以与参照图1描述的实施例结合,从而具备参照图1描述的实施例所实现的技术效果。具体内容可以参照以上根据图1进行的描述,其具体内容在此不再赘述。

以上在描述根据本公开的分布式数据库查询方案时也描述了数据库索引优化方案,以下结合附图对数据库查询方案所采用的数据库索引优化方案进行进一步描述。可以理解,本公开实施例中的数据库查询方案可以基于各种数据库索引优化方案执行。

以下参照图7描述根据本公开一实施方式的数据库索引优化方法的流程图。如图7所示,数据库索引优化方法包括以下步骤S710和S720:

在步骤S710中,确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点。

在步骤S720中,基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段。

根据本公开实施例提供的技术方案,通过确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,在步骤S710之前,数据库索引优化方法包括:确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过在确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点之前,包括:确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。而且在查询请求所访问的数据库索引未经优化的情况下进行全局查询,可以方便灵活地执行查询请求。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:响应于对所述分布式数据库的当前查询请求,确定是否需要对所述分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者定期确定是否需要对所述分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:响应于对所述分布式数据库的当前查询请求,确定是否需要对所述分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者定期确定是否需要对所述分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化,可以响应于每次查询请求对数据库索引基于路由进行优化,也可以定期针对历史查询请求对数据库索引基于路由进行优化,从而方便灵活地对查询请求所访问的数据库索引基于路由进行优化,提升查询效率。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于所述特定主键作为路由进行优化。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于特定主键作为路由进行优化,而且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,数据库索引优化方法还包括:基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化。

根据本公开实施例提供的技术方案,通过基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,所述基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,包括:将所述第一字段记录到所述分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片。

根据本公开实施例提供的技术方案,通过所述基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,包括:将所述第一字段记录到所述分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,所述基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述查询请求中。

根据本公开实施例提供的技术方案,通过所述基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述查询请求中,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,数据库索引优化方法还包括:确定访问所述新数据库索引的查询请求是否被正常执行;基于确定访问所述新数据库索引的查询请求被正常执行,删除优化之前的数据库索引。

根据本公开实施例提供的技术方案,通过确定访问所述新数据库索引的查询请求是否被正常执行;基于确定访问所述新数据库索引的查询请求被正常执行,删除优化之前的数据库索引,可以在经基于路由优化的新数据库索引的基础上优化查询请求,提升查询效率。

在本公开的一个实施例中,数据库索引优化方法还包括:基于确定访问所述新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引。

根据本公开实施例提供的技术方案,通过基于确定访问所述新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引,可以在查询请求所访问的新数据库索引无法正常执行的情况下利用优化之前的数据库索引进行查询,保证了查询过程的可靠性。

在本公开的一个实施例中,所述分布式数据库是分布式非关系型数据库。

根据本公开实施例提供的技术方案,通过所述分布式数据库是分布式非关系型数据库,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升针对分布式非关系型数据库的查询效率。

以下参照图8描述根据本公开一实施方式的数据库索引优化装置。

图8示出根据本公开一实施方式的数据库索引优化装置800的结构框图。如图8所示,数据库索引优化装置800包括第一确定模块810和设置模块820。

第一确定模块810被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的节点。

设置模块820被配置为基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在查询请求中设置路由的路由字段。

根据本公开实施例提供的技术方案,通过第一确定模块,被配置为确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;设置模块,被配置为基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。

本领域技术人员可以理解,参照图7和图8描述的技术方案的可以与参照图1和图2描述的实施例结合,从而具备参照图1和图2描述的实施例所实现的技术效果。具体内容可以参照以上根据图1和图2进行的描述,其具体内容在此不再赘述。

以下参照图3描述根据本公开一实施方式的分布式数据库查询系统。

图3示出利用根据本公开一实施方式的分布式数据库查询系统300的结构框图。如图3所示,分布式数据库查询装置300包括前端机311和多个服务器节点321、322和323。其中,服务器节点321设置有数据库1,服务器节点322设置有数据库2,服务器节点323设置有数据库3。

如图3所示,前端机311接收对分布式数据库的查询请求。在本公开的一个实施例中,前端机311的数量可以是一个或多个,前端机311将接收到的用户301发起的查询请求转发到数据库索引所在的节点。前端机311确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的服务器节点。基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,前端机311在查询请求中设置路由的路由字段;前端机311将设置有路由字段的查询请求转发到基于路由确定的数据库索引分片所在的服务器节点以进行数据查询。

根据本公开实施例提供的技术方案,通过前端机和多个服务器节点,其中,前端机接收对分布式数据库的查询请求;前端机确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,路由用于确定数据库索引的数据库索引分片在分布式数据库中所在的服务器节点;基于确定已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,前端机在查询请求中设置路由的路由字段;前端机将设置有路由字段的查询请求转发到基于路由确定的数据库索引分片所在的服务器节点以进行数据查询,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

本领域技术人员可以理解,参照图3描述的技术方案的可以与参照图1、图2、图7和图8描述的实施例结合,从而具备参照图1、图2、图7和图8描述的实施例所实现的技术效果。具体内容可以参照以上根据图1、图2、图7和图8进行的描述,其具体内容在此不再赘述。

以下参照图4描述根据本公开一实施方式的判断用户的数据库索引是否需要基于路由进行优化的流程的一个应用示例。

图4示出利用根据本公开一实施方式的判断用户的数据库索引是否需要基于路由进行优化的流程的一个应用示例的示意图。

如图4所示,在步骤S410,分析用户请求行为和主键特征:如果用户的索引可以基于路由进行索引优化,那么基于该字段进行路由需要打散到所有分片上,不能存在热点分片,因此需要分析主键特征和用户历史请求行为。

在步骤S420,判断是否可以优化索引查询:如果用户数据中的某一个字段作为路由字段可以使数据分布均匀,且用户大部分请求都携带该参数,那么可以判断可以进行索引的查询优化。

在步骤S430,当步骤S420的判断结果为是时,记录路由字段:将之前分析的路由字段记录到索引的元信息中,方便之后使用。

在步骤S440,当步骤S420的判断结果为否时,退出判断用户的数据库索引是否需要基于路由进行优化的流程。

在步骤S450,基于路由字段构建新的索引:分布式数据库服务端会基于选取的路由字段重新创建索引,这个过程是用户无感知的。新索引的数据将会基于路由打散到每个分片上。

在步骤S460,查询流量切换到新索引:当新索引构建结束,这时则可以将用户的查询流量切换到新的索引上。新的查询请求在经过分布式数据库服务端时候,会自动添加上索引元信息中记录的路由字段,因此查询请求将会路由到指定的分片,提高查询效率。

在步骤S470,删除旧的索引:如果对新索引的查询请求正常执行,则可以删除旧的索引。如果执行有异常,还可以切换到原来的索引,提高系统的可用性。

在本公开的一个实施例中,提出一种分布式非关系型数据库查询方法,包括:接收对分布式非关系型数据库的查询请求;确定是否已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式非关系型数据库中所在的节点;基于确定已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

根据本公开实施例提供的技术方案,通过接收对分布式非关系型数据库的查询请求;确定是否已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式非关系型数据库中所在的节点;基于确定已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升针对分布式非关系型数据库的查询效率。而且,根据本公开实施例的分布式非关系型数据库查询方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

根据本公开实施例的分布式非关系型数据库查询方法可以与参照图1至图4以及图7、图8描述的实施例结合,从而具备参照图1至图4以及图7、图8描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图4以及图7、图8进行的描述,其具体内容在此不再赘述。

以下参照图5描述根据本公开一实施方式的分布式数据库的索引优化方法。

图5示出根据本公开一实施方式的分布式数据库的索引优化方法的流程图。如图5所示,分布式数据库的索引优化方法包括以下步骤S510、S520、S530、S540、S550和S560:

在步骤S510中,分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件。

在步骤S520中,基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于特定主键作为路由进行优化,其中,第一查询请求是历史查询请求或当前查询请求。

在步骤S530中,确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度。

在步骤S540中,确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件。

在步骤S550中,基于确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件;基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于特定主键作为路由进行优化,其中,第一查询请求是历史查询请求或当前查询请求;确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度;确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件;基于确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于路由进行优化,而且可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在步骤S560中,基于确定分布式数据库的历史查询请求中没有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定不需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,分布式数据库的索引优化方法还包括:基于确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的第一查询请求所访问的数据库索引进行优化。

根据本公开实施例提供的技术方案,通过基于确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的第一查询请求所访问的数据库索引进行优化,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,基于确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的第一查询请求所访问的数据库索引进行优化,包括:将第一字段记录到分布式数据库的第一查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的第一字段创建新数据库索引,其中,新数据库索引的数据基于路由分散到位于分布式数据库的不同节点的新数据库索引的数据库索引分片。

根据本公开实施例提供的技术方案,通过基于确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的第一字段对分布式数据库的第一查询请求所访问的数据库索引进行优化,包括:将第一字段记录到分布式数据库的第一查询请求所访问的优化之前的数据库索引的元信息中;基于作为路由的第一字段创建新数据库索引,其中,新数据库索引的数据基于路由分散到位于分布式数据库的不同节点的新数据库索引的数据库索引分片,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,分布式数据库的索引优化方法还包括:基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为路由字段设置到第一查询请求中。

根据本公开实施例提供的技术方案,通过基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为路由字段设置到第一查询请求中,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,分布式数据库的索引优化方法还包括:确定访问新数据库索引的第一查询请求是否被正常执行;基于确定访问新数据库索引的第一查询请求被正常执行,删除优化之前的数据库索引。

根据本公开实施例提供的技术方案,通过确定访问新数据库索引的第一查询请求是否被正常执行;基于确定访问新数据库索引的第一查询请求被正常执行,删除优化之前的数据库索引,可以在经基于路由优化的新数据库索引的基础上自动优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

在本公开的一个实施例中,分布式数据库是分布式非关系型数据库。

根据本公开实施例提供的技术方案,通过分布式数据库是分布式非关系型数据库,可以在经基于路由优化的数据库索引的基础上自动优化查询请求,提升针对分布式非关系型数据库的查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

本领域技术人员可以理解,参照图5描述的技术方案的可以与参照图1至图4以及图7、图8描述的实施例结合,从而具备参照图1至图4以及图7、图8描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图4以及图7、图8进行的描述,其具体内容在此不再赘述。

以下参照图6描述根据本公开一实施方式的分布式数据库的索引优化装置。

图6示出根据本公开一实施方式的分布式数据库的索引优化装置600的结构框图。如图6所示,分布式数据库的索引优化装置600包括分析模块610、第一确定模块620、第二确定模块630、第三确定模块640和第四确定模块650。

分析模块610被配置为分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件。

第一确定模块620被配置为基于分析模块对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于特定主键作为路由进行优化,其中,第一查询请求是历史查询请求或当前查询请求。

第二确定模块630被配置为确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度。

第三确定模块640被配置为确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件。

第四确定模块650被配置为基于第三确定模块确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

根据本公开实施例提供的技术方案,通过分析模块,被配置为分析分布式数据库的历史查询请求和历史查询请求中的主键特征,其中,主键特征是历史查询请求中是否包括针对分布式数据库的主键的筛选条件;第一确定模块,被配置为基于分析模块对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于特定主键作为路由进行优化,其中,第一查询请求是历史查询请求或当前查询请求;第二确定模块,被配置为确定分布式数据库的第一字段作为路由使得分布式数据库中的数据在分布式数据库的全部节点分布的均匀程度;第三确定模块,被配置为确定分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括第一字段,其中,第一字段使得分布式数据库中的数据在全部节点分布的均匀程度满足第二预设条件;第四确定模块,被配置为基于第三确定模块确定分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括第一字段,确定需要对分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,可以清楚地确定需要对数据库索引基于路由进行优化,而且可以对数据库索引进行优化,并且可以在经基于路由优化的数据库索引的基础上优化查询请求,提升查询效率。而且,根据本公开实施例的分布式数据库的索引优化方案的优化过程不需要查询请求发起方操作及感知,简化了查询操作,提升了系统可用性。

本领域技术人员可以理解,参照图6描述的技术方案的可以与参照图1至图5以及图7、图8描述的实施例结合,从而具备参照图1至图5以及图7、图8描述的实施例所实现的技术效果。具体内容可以参照以上根据图1至图5以及图7、图8进行的描述,其具体内容在此不再赘述。

前述实施例描述了分布式数据库查询装置和分布式数据库的索引优化装置的内部功能和结构,在一个可能的设计中,分布式数据库查询装置和分布式数据库的索引优化装置的结构可实现为电子设备,如图9中所示,该电子设备900可以包括处理器901以及存储器902。

所述存储器902用于存储支持电子设备执行上述任一实施例中的分布式数据库查询方法和分布式数据库的索引优化方法的程序,所述处理器901被配置为用于执行所述存储器902中存储的程序。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器901执行以实现以下步骤:

确定是否已经对分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段。

在本公开的一个实施例中,在确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点之前,包括:

确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:

响应于对所述分布式数据库的当前查询请求,确定是否需要对所述分布式数据库的当前查询请求所访问的数据库索引基于路由进行优化,或者

定期确定是否需要对所述分布式数据库的历史查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,包括:

分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;

基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于所述特定主键作为路由进行优化。

在本公开的一个实施例中,所述确定是否需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,还包括:

确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;

确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;

基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化。

在本公开的一个实施例中,所述基于确定需要对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的查询请求所访问的数据库索引进行优化,包括:

将所述第一字段记录到所述分布式数据库的查询请求所访问的优化之前的数据库索引的元信息中;

基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片。

在本公开的一个实施例中,所述基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段,包括:

基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述查询请求中。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

确定访问所述新数据库索引的查询请求是否被正常执行;

基于确定访问所述新数据库索引的查询请求被正常执行,删除优化之前的数据库索引。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

基于确定访问所述新数据库索引的查询请求未被正常执行,将查询请求切换为访问优化之前的数据库索引。

在本公开的一个实施例中所述分布式数据库是分布式非关系型数据库。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

接收对分布式数据库的查询请求;

确定是否已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式数据库中所在的节点;

基于确定已经对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;

将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

基于确定未对所述分布式数据库的查询请求所访问的数据库索引基于路由进行优化,将所述查询请求转发到所述分布式数据库的全部节点以进行查询。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

接收对分布式非关系型数据库的查询请求;

确定是否已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,其中,所述路由用于确定所述数据库索引的数据库索引分片在所述分布式非关系型数据库中所在的节点;

基于确定已经对所述分布式非关系型数据库的查询请求所访问的数据库索引基于路由进行优化,在所述查询请求中设置所述路由的路由字段;

将设置有所述路由字段的查询请求转发到基于所述路由确定的数据库索引分片所在的节点以进行数据查询。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

分析所述分布式数据库的历史查询请求和所述历史查询请求中的主键特征,其中,所述主键特征是所述历史查询请求中是否包括针对所述分布式数据库的主键的筛选条件;

基于对满足第一预设条件的历史查询请求包含分布式数据库的特定主键的分析结果,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于所述特定主键作为路由进行优化,其中,所述第一查询请求是历史查询请求或当前查询请求;

确定所述分布式数据库的第一字段作为路由使得所述分布式数据库中的数据在所述分布式数据库的全部节点分布的均匀程度;

确定所述分布式数据库的历史查询请求中是否有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,其中,所述第一字段使得所述分布式数据库中的数据在所述全部节点分布的均匀程度满足第二预设条件;

基于确定所述分布式数据库的历史查询请求中有达到或超过预设比例的历史查询请求的主键特征包括所述第一字段,确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化。

在本公开的一个实施例中,所述基于确定需要对所述分布式数据库的第一查询请求所访问的数据库索引基于路由进行优化,基于作为路由的所述第一字段对所述分布式数据库的第一查询请求所访问的数据库索引进行优化,包括:

将所述第一字段记录到所述分布式数据库的第一查询请求所访问的优化之前的数据库索引的元信息中;

基于作为路由的所述第一字段创建新数据库索引,其中,所述新数据库索引的数据基于所述路由分散到位于所述分布式数据库的不同节点的所述新数据库索引的数据库索引分片。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

基于创建的新数据库索引,将优化之前的数据库索引的元信息中记录的第一字段作为所述路由字段设置到所述第一查询请求中。

在本公开的一个实施例中,所述存储器902用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令还被所述处理器901执行以实现以下步骤:

确定访问所述新数据库索引的第一查询请求是否被正常执行;

基于确定访问所述新数据库索引的第一查询请求被正常执行,删除优化之前的数据库索引。

在本公开的一个实施例中,所述分布式数据库是分布式非关系型数据库。

本公开示例性实施例还提供了一种计算机存储介质,用于储存所述定位装置所用的计算机软件指令,其包含用于执行上述任一实施例所涉及的程序,从而具备方法所带来的技术效果。

图10是适于用来实现根据本公开实施方式的任一方法的计算机系统的结构示意图。

如图10所示,计算机系统1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行上述附图所示的实施方式中的各种处理。在RAM1003中,还存储有系统1000操作所需的各种程序和数据。处理器1001、ROM1002以及RAM1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。

以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。其中,所述处理器1001可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。

特别地,根据本公开的实施方式,上文参考附图描述的方法可以被实现为计算机软件程序。例如,本公开的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行附图中的方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。

附图中的流程图和框图,图示了按照本公开各种实施方式的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本公开实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。

作为另一方面,本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本公开的方法,从而具备方法所带来的技术效果。

以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号