本技术涉及数据库查询,尤其涉及一种数据查询方法、装置、设备及介质。
背景技术:
1、相关技术中,图遍历语言gremlin查询语句在做查询的时候,首先会将gremlin查询语句解析为一个执行计划,执行计划是由多个算子组成的,每次都是从第一个算子开始,首先执行第一个算子进行查询,到存储层获取对应数据,并将查询到的算子向下一个算子传递,下一个算子收到上一个算子的输入后,执行自己的查询或过滤操作,再向下执行,直到最后一个算子完成,返回整个查询结果,在整个执行过程中,每个算子都是单并发操作调用存储层的查询接口获取数据。
2、但是,当查询数据量较大时,每次都要从存储层获取大量数据,单并发进行数据在不同算子之间的传递,导致查询性能较低。
技术实现思路
1、本技术的主要目的在于提供一种数据查询方法、装置、设备及介质,旨在解决相关技术中数据量较大时查询性能较低的技术问题。
2、为实现上述目的,本技术提供一种数据查询方法,方法包括:
3、获取目标执行计划,目标执行计划包括一动作算子以及至少一个条件运算算子;目标执行计划根据图遍历语言gremlin查询语句生成;
4、将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划;
5、基于分区执行计划,向图数据库的各数据分区并发地发送数据查询请求,获得各个数据分区的子查询结果;图数据库包括多个顶点,以及顶点之间的边,且图数据库分为多个所述数据分区存储;
6、对所有子查询结果进行聚合,获得目标执行计划的查询结果。
7、在本技术可能的一实施例中,将动作算子替换为功能相同的分区执行算子,获得分区执行计划,包括:
8、在分区执行算子之前添加分区信息获取算子,并将分区信息获取算子作为前置算子组;
9、将动作算子替换为功能相同的分区执行算子;
10、将分区执行动作算子与所有条件运算算子作为并发算子组,获得分区执行计划;前置算子组与并发算子组之间串行执行;
11、基于分区执行计划,向图数据库的各数据分区并发地发送数据查询请求,获得各个数据分区的子查询结果,包括:
12、通过前置算子组获取各数据分区的接口地址;
13、通过并发算子组利用各接口地址并发地向各数据分区发送数据查询请求,获得各个数据分区的子查询结果。
14、在本技术可能的一实施例中,将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划之后,方法还包括:
15、在分区执行计划的最末条件运算算子之后添加聚合算子;分区执行计划与聚合算子串行执行;
16、对所有子查询结果进行聚合,获得目标执行计划的查询结果,包括:
17、基于聚合算子对所有子查询结果进行聚合,获得目标执行计划的查询结果。
18、在本技术可能的一实施例中,将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划,包括:
19、判断动作算子以及所有条件运算算子是否均为可并发执行算子;
20、若为可并发执行算子,则将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划。
21、在本技术可能的一实施例中,获取目标执行计划,包括:
22、获取用于执行查询任务的查询语句;
23、基于查询语句,确定出所有执行算子,获得总执行计划;所有执行算子包括至少一个初始动作算子与至少一个初始条件运算算子;
24、从至少一个初始动作算子中筛选出为可并发执行算子的至少一个动作算子;
25、针对每一动作算子,判断动作算子与总执行计划中下一初始动作算子之间的所有初始条件运算算子是否均为可并发执行算子;
26、若均为可并发执行算子,则基于动作算子以及动作算子与总执行计划中下一初始动作算子之间的所有初始条件运算算子,获得目标执行计划。
27、在本技术可能的一实施例中,可并发执行算子为v算子、e算子、bothe算子、oute算子、ine算子、has算子、haslabel算子、limit算子、gt算子、lt算子、gte算子、lte算子、eq算子、neq算子、values算子或者count算子。
28、第二方面,本技术还提供了一种数据查询装置,包括:
29、计划获取模块,用于获取目标执行计划,目标执行计划包括一动作算子以及至少一个条件运算算子;图数据库包括多个顶点,以及顶点之间的边,且图数据库分为多个数据分区存储;
30、算子替换模块,用于将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划;
31、数据请求模块,用于基于分区执行计划,向图数据库的各数据分区并发地发送数据查询请求,获得各个数据分区的子查询结果;图数据库包括多个顶点,以及顶点之间的边,且图数据库分为多个所述数据分区存储;
32、数据聚合模块,用于对所有子查询结果进行聚合,获得目标执行计划的查询结果。
33、在本技术可能的一实施例中,装置还包括:
34、算子替换模块,具体用于在分区执行算子之前添加分区信息获取算子,并将分区信息获取算子作为前置算子组;将动作算子替换为功能相同的分区执行算子;将分区执行动作算子与所有条件运算算子作为并发算子组,获得分区执行计划;前置算子组与并发算子组之间串行执行;
35、数据请求模块,具体用于通过前置算子组获取各数据分区的接口地址;通过并发算子组利用各接口地址并发地向各数据分区发送数据查询请求,获得各个数据分区的子查询结果。
36、在本技术可能的一实施例中,装置还包括:
37、算子添加模块,用于在分区执行计划的最末条件运算算子之后添加聚合算子;分区执行计划与聚合算子串行执行;
38、数据聚合模块,具体用于基于聚合算子对所有子查询结果进行聚合,获得目标执行计划的查询结果。
39、在本技术可能的一实施例中,算子替换模块,具体用于判断动作算子以及所有条件运算算子是否均为可并发执行算子;若为可并发执行算子,则将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划。
40、在本技术可能的一实施例中,计划获取模块,具体用于获取用于执行查询任务的查询语句;基于查询语句,确定出所有执行算子,获得总执行计划;所有执行算子包括至少一个初始动作算子与至少一个初始条件运算算子;从至少一个初始动作算子中筛选出为可并发执行算子的至少一个动作算子;针对每一动作算子,判断动作算子与总执行计划中下一初始动作算子之间的所有初始条件运算算子是否均为可并发执行算子;若均为可并发执行算子,则基于动作算子以及动作算子与总执行计划中下一初始动作算子之间的所有初始条件运算算子,获得目标执行计划。
41、在本技术可能的一实施例中,可并发执行算子为v算子、e算子、bothe算子、oute算子、ine算子、has算子、haslabel算子、limit算子、gt算子、lt算子、gte算子、lte算子、eq算子、neq算子、values算子或者count算子。
42、第三方面,本技术还提供一种数据查询设备,包括:处理器,存储器以及存储在存储器中的计算机程序,计算机程序被处理器运行时实现如第一方面的数据查询方法。
43、第四方面,本技术还一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如第一方面的数据查询方法。
44、本技术实施例提出的一种数据查询方法,方法包括:获取目标执行计划,目标执行计划包括一动作算子以及至少一个条件运算算子;将动作算子替换为功能相同的分区执行动作算子,获得分区执行计划;基于分区执行计划,向图数据库的各数据分区并发地发送数据查询请求,获得各个数据分区的子查询结果;对所有子查询结果进行聚合,获得目标执行计划的查询结果。
45、由此可见,相较于相关技术中各算子单并发执行,本技术实施例将动作算子替换为功能相同的分区执行动作算子按照数据分区并发进行查询,即各个算子只获取一个数据分区的数据进行处理,多算子并发对所有数据分区的数据进行查询,最后对所有数据分区的查询数据进行聚合,这样存储层只需要进行分区级别的数据查询,无需再做并发控制,每次数据传输的数据数量有所减少,减小存储层的查询压力,同时提高计算层的资源利用效率,进而提高查询性能。