数据查询方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:28142772 阅读:29 留言:0更新日期:2021-04-21 19:22
本发明专利技术公开了一种数据查询方法、装置、计算机设备和存储介质,解析查询请求,获取查询请求中的连接算法和对应的场景;若连接算法为全外连接、左外连接、右外连接中的一种,且场景为第一数据表中的汇总值排序,对第二数据表中的汇总值不排序,则在第一数据表所在的第一数据库中执行查询请求中的汇总、排序、limit操作得到第一结果集;将第一结果集中的维度值作为动态过滤条件,在第二数据表所在的第二数据库中执行动态过滤条件对应的动态过滤操作、查询请求中的汇总操作得到第二结果集,从而使得返回到查询引擎的第一结果集、第二结果集中的数据量明显减少,降低了网络传输数据的压力,缩短了返回查询结果的时间,提高了查询引擎的查询性能。询性能。询性能。

【技术实现步骤摘要】
数据查询方法、装置、计算机设备和存储介质


[0001]本专利技术涉及计算机
,特别是涉及一种数据查询方法、装置、计算机设备和存储介质。

技术介绍

[0002]在大数据时代,对海量数据的数据分析越来越重视,涉及的业务场景也越来越复杂,数据量也是越来越大,动辄10亿上百亿。一般很难用单一的olap数据库能解决所有的数据分析问题,因此绝大多数互联网企业都是使用多套olap数据库来解决不同的业务分析问题。但是有可能同时对存储在不同数据库中的数据需要进行联合汇总查询,现在一般常用的有spark sql、presto、impala以及华为的openLooKeng等联邦查询引擎。
[0003]在采用spark sql、presto、impala等联邦查询引擎进行数据查询分析时,会对多个来自于相同或者不同olap数据库的汇总数据进行连接,然后按照某个表的汇总值排序并返回TOPN条数据。传统的数据查询方法只是将过滤条件下压到olap数据库中,将所有满足条件的数据全部取出来,然后在联邦查询引擎中对多个数据集进行连接(join)计算,而后对连接计算的结果进行排序和limit操作,但是这样的数据查询方法返回联邦查询引擎中的数据量较大,不仅对网络传输形成较大的压力,也对联邦查询引擎造成较大的资源消耗,降低了联邦查询引擎的查询性能。

技术实现思路

[0004]基于此,有必要针对上述技术问题,提供一种数据查询方法、装置、计算机设备和存储介质。
[0005]第一方面,一种数据查询方法,所述方法包括如下步骤:r/>[0006]解析查询请求,获取查询请求中的连接算法和对应的场景;
[0007]若所述连接算法为全外连接、左外连接、右外连接中的一种,且所述场景为第一数据表中的汇总值排序,对第二数据表中的汇总值不排序,则在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作得到第一结果集;
[0008]将所述第一结果集中的维度值作为动态过滤条件,在第二数据表所在的第二数据库中执行所述动态过滤条件对应的动态过滤操作、所述查询请求中的汇总操作得到第二结果集。
[0009]在一个实施例中,所述方法还包括:将所述第一结果集和所述第二结果集采用所述连接算法得到第一目标结果集,从所述第一目标结果集中提取第一目标数据作为查询结果。
[0010]在一个实施例中,若所述连接算法为全外连接,且所述第一数据表中的数据量小于limit操作的预设limit值,所述方法还包括在所述第二数据库中执行所述查询请求中的汇总、排序、limit操作,得到第三结果集。
[0011]在一个实施例中,所述方法还包括:
[0012]将所述第二结果集和所述第三结果集进行联合,去除重复结果后得到第四结果集;
[0013]将所述第一结果集和所述第四结果集采用所述连接算法得到第二目标结果集,从所述第二目标结果集中提取第二目标数据作为查询结果。
[0014]在一个实施例中,在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作之前还包括:
[0015]判断所述第一数据表和所述第二数据表中的数据量是否满足预设数据量条件,若满足则在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作。
[0016]在一个实施例中,所述预设数据量条件为:所述第一数据表中的数据量和第二数据表中数据量的比值超过预设比值,或者,所述第一数据表中的数据量和第二数据表中数据量均超过预设数量。
[0017]在一个实施例中,当所述连接算法为左外连接时,第一数据表为左表,当所述连接算法为右外连接时,第一数据表为右表。
[0018]第二方面,所述装置包括:
[0019]解析模块,用于解析查询请求,获取查询请求中的连接算法和对应的场景;
[0020]第一结果集获取模块,用于若所述连接算法为全外连接、左外连接、右外连接中的一种,且所述场景为第一数据表中的汇总值排序,对第二数据表中的汇总值不排序,则在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作得到第一结果集;
[0021]第二结果集获取模块,用于将所述第一结果集中的维度值作为动态过滤条件,在第二数据表所在的第二数据库中执行所述动态过滤条件对应的动态过滤操作、所述查询请求中的汇总操作得到第二结果集。
[0022]第三方面,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述的方法的步骤。
[0023]第四方面,一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现所述的方法的步骤。
[0024]本专利技术的有益效果是:
[0025]本专利技术若所述连接算法为全外连接、左外连接、右外连接中的一种,且所述场景为第一数据表中的汇总值排序,对第二数据表中的汇总值不排序,则在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作得到第一结果集;将所述第一结果集中的维度值作为动态过滤条件,在第二数据库中执行动态过滤条件对应的动态过滤操作、查询请求中的汇总操作得到第二结果集,从而使得从返回到查询引擎中的第一结果集、第二结果集中的数据量明显减少,降低了网络传输数据的压力,并且通过将第一结果集中的维度值作为第二数据库中动态过滤条件,使得第二数据库中进行汇总的数据量明显减少,缩短了返回查询结果的时间,提高了查询引擎的查询性能。本专利技术在采用操作方式为全外连接时,考虑到第一数据表中的数据量小于limit操作的预设limit值时,还在所述第二数据库中执行所述查询请求中的汇总、排序、limit操作,得到第三结果集,得到第三结果集,从而对第二数据库返回的数据进行动态调整,避免第二数据表中可能存在第一数据表中没有的汇总维度信息导致的结果错误情况。本专利技术在在第一数据表所在的第一数据库中
执行所述查询请求中的汇总、排序、limit操作得到第一结果集前,还需要对在第一数据库中执行汇总、排序、limit操作的成本进行考量,只有在满足预设数据量条件后才在第一数据库中执行汇总、排序、limit操作,从而避免了直接将汇总、limit、过滤等操作下推到数据库可能带来的代价较大的情况。
附图说明
[0026]为了更清楚地说明本专利技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]图1为一个现有技术中的数据查询方法;
[0028]图2为一个实施例中数据查询方法;
[0029]图3为一个实施例中应用场景下的数据查询方法;
[0030]图4为一个实施例中应用场景下的数据查询方法的动态调整过程;
[0031]图5为一个实施例中数据查询装置。
具体实施方式
本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种数据查询方法,其特征在于,所述方法包括如下步骤:解析查询请求,获取查询请求中的连接算法和对应的场景;若所述连接算法为全外连接、左外连接、右外连接中的一种,且所述场景为第一数据表中的汇总值排序,对第二数据表中的汇总值不排序,则在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作得到第一结果集;将所述第一结果集中的维度值作为动态过滤条件,在第二数据表所在的第二数据库中执行所述动态过滤条件对应的动态过滤操作、所述查询请求中的汇总操作得到第二结果集。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述第一结果集和所述第二结果集采用所述连接算法得到第一目标结果集,从所述第一目标结果集中提取第一目标数据作为查询结果。3.根据权利要求1所述的方法,其特征在于,若所述连接算法为全外连接,且所述第一数据表中的数据量小于limit操作的预设limit值,所述方法还包括在所述第二数据库中执行所述查询请求中的汇总、排序、limit操作,得到第三结果集。4.根据权利要求3所述的方法,其特征在于,所述方法还包括:将所述第二结果集和所述第三结果集进行联合,去除重复结果后得到第四结果集;将所述第一结果集和所述第四结果集采用所述连接算法得到第二目标结果集,从所述第二目标结果集中提取第二目标数据作为查询结果。5.根据权利要求1至4任一项所述的方法,其特征在于,在第一数据表所在的第一数据库中执行所述查询请求中的汇总、排序、limit操作之前还包括:判断所述第一数据表和所述第二...

【专利技术属性】
技术研发人员:汪金忠孙迁范东汤国强张强
申请(专利权)人:江苏苏宁云计算有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1