本技术涉及数据查询领域,特别是一种基于预计算场景的查询处理方法及其装置。
背景技术:
1、对于大数据场景下的查询分析,查询性能是关键指标之一。为了提升查询性能,业界探索了多种方法,包括索引、物化视图和cube、基于有界计算的访问约束。
2、目前现有技术中:1)索引:提高查询效率的典型方法是为查询创建合适的索引,常见的索引包括b+tree索引、hash索引、bitmap索引,查询时根据索引可以快速的定位到满足条件的记录或记录的范围,从而减少参与计算的记录数。2)物化视图和cube:物化视图和cube都可以用于预先计算并保存表连接或聚集等耗时较多的操作的结果,这样,在执行查询时,就可以避免进行这些耗时的操作,而从快速的得到结果。当源表发生变化时,物化视图也应当刷新。3)基于有界计算的访问约束:基于上述有界计算的原理,可以在表上创建访问约束(ac){x->y,n},对于表的任何满足访问约束的查询q,都可以改写为对ac的查询q’,从而加速查询性能。
3、而在大数据分析场景,针对海量数据的分组聚集、join、过滤等操作计算量都非常大,查询效率较低。基于有界计算理论的访问约束,对于包含分组聚集、join、过滤等操作的复杂查询的加速效果不够理想。存在大数据分析场景下访问约束效率不高的问题,极大的影响了查询效率。
技术实现思路
1、鉴于所述问题,提出了本技术以便提供克服所述问题或者至少部分地解决所述问题的一种基于预计算场景的查询处理方法及其装置,包括:
2、一种基于预计算场景的查询处理方法,所述方法涉及用户端、优化端、执行端和数据库,所述方法包括:
3、所述优化端接收所述用户端发送的查询请求,所述用户端用于依据用户需求生成查询请求,并向所述优化端发送所述查询请求;
4、所述优化端依据所述查询请求在所述数据库中读取元数据,其中,所述元数据包括数据表和访问约束集合;
5、所述优化端依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算;
6、所述优化端依据所述第一访问约束和查询改写类型生成查询计划,其中,查询改写类型包括filter匹配改写、投影匹配改写、聚集列匹配改写和join改写;
7、所述优化端将所述查询计划发送至所述执行端,所述执行端用于将所述查询计划执行后生成的查询结果反馈至所述用户端。
8、进一步地,所述依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算的步骤,包括:
9、当所述预计算处理为所述条件过滤时,所述优化端依据预设过滤条件在所述数据表的所述数据中确定符合所述预设过滤条件的预处理数据;
10、所述优化端依据所述预处理数据生成所述第一访问约束。
11、进一步地,所述依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算的步骤,包括:
12、所述优化端依据所述数据生成第一初始访问约束,并获取所述第一初始访问约束中的第一表达式集合和第二表达式集合;
13、当所述预计算处理为所述聚集函数时,所述优化端在所述第一表达式集合和所述第二表达式集合中添加或修改预设聚集函数,并依据添加或修改的所述预设聚集函数后的所述第一表达式集合和所述预设聚集函数后的所述第二表达式集合生成所述第一访问约束;其中,所述预设聚集函数包括含有指定字段或含有指定表达式。
14、进一步地,所述依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算的步骤,包括:
15、所述优化端依据所述数据生成第二初始访问约束,并获取所述第二初始访问约束中的第三表达式集合和第四表达式集合;
16、当所述预计算处理为所述表达式计算时,所述优化端依据所述第三表达式集合和所述第四表达式集合获取目标字段;
17、所述优化端依据所述目标字段确定对应于所述数据表中的目标列;
18、所述优化端依据所述目标列确定对应于所述目标列的目标表达式;
19、所述优化端依据所述目标表达式进行计算生成所述第一访问约束。
20、进一步地,所述依据所述第一访问约束和查询改写类型生成查询计划,其中,查询改写类型包括filter匹配改写、投影匹配改写、聚集列匹配改写和join改写的步骤,包括:
21、当所述查询改写类型为所述filter匹配改写时,所述优化端确定分析查询语句生成的结果集是否为所述第一访问约束的子集,若是,则依据所述第一访问约束生成所述查询计划;或,
22、当所述查询改写类型为所述投影匹配改写时,所述优化端确定分析查询语句内的投影表达式是否包含在所述第一访问约束内,若是,则依据所述第一访问约束生成所述查询计划;或,
23、当所述查询改写类型为聚集列匹配改写时,所述优化端确定所述第一访问约束内的目标聚集函数,且修改分析查询语句对应的原始聚集函数,通过所述目标聚集函数和修改后的所述原始聚集函数生成所述查询计划;或,
24、当所述查询改写类型为join改写时,所述优化端确定join算子的左右节点的数据是否存在于所述第一访问约束中,若是,则依据所述第一访问约束生成所述查询计划。
25、本技术实施例还公开了一种基于预计算场景的查询处理方法,所述方法涉及用户端、优化端、执行端和数据库,所述方法包括:
26、所述执行端接收所述优化端发送的所述查询计划,所述优化端用于向所述执行端发送所述查询计划;
27、所述执行端依据所述查询计划确定目标访问约束;
28、所述执行端依据所述目标访问约束在所述数据表确定第二目标数据;
29、所述执行端依据所述第二目标数据生成查询结果;
30、所述执行端将所述查询结果发送至所述用户端,所述用户端用于接收所述执行端反馈的所述查询结果。
31、本技术实施例还公开了一种基于预计算场景的查询处理方法,所述方法涉及用户端、优化端、执行端和数据库,所述方法包括:
32、所述用户端依据用户需求生成查询请求,并将所述查询请求发送至所述优化端,所述优化端用于接收所述用户端发送的所述查询请求;
33、所述用户端接收所述执行端发送的所述查询结果,并将所述查询结果返回至对应的目标用户,所述执行端用于将所述查询结果反馈至所述用户端。
34、本技术实施例还公开了一种基于预计算场景的查询处理装置,所述装置涉及用户端、优化端、执行端和数据库,所述装置包括:
35、第一发送模块,用于所述优化端接收所述用户端发送的查询请求,所述用户端用于依据用户需求生成查询请求,并向所述优化端发送所述查询请求;
36、第一读取模块,用于所述优化端依据所述查询请求在所述数据库中读取元数据,其中,所述元数据包括数据表和访问约束集合;
37、第一生成模块,用于所述优化端依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算;
38、第二生成模块,用于所述优化端依据所述第一访问约束和查询改写类型生成查询计划,其中,查询改写类型包括filter匹配改写、投影匹配改写、聚集列匹配改写和join改写;
39、第二发送模块,用于所述优化端将所述查询计划发送至所述执行端,所述执行端用于将所述查询计划执行后生成的查询结果反馈至所述用户端。
40、本技术实施例还公开了一种基于预计算场景的查询处理装置,所述装置涉及用户端、优化端、执行端和数据库,所述装置包括:
41、第三发送模块,用于所述执行端接收所述优化端发送的所述查询计划,所述优化端用于向所述执行端发送所述查询计划;
42、第一确定模块,用于所述执行端依据所述查询计划确定目标访问约束;
43、第二确定模块,用于所述执行端依据所述目标访问约束在所述数据表确定第二目标数据;
44、第三生成模块,用于所述执行端依据所述第二目标数据生成查询结果;
45、第四发送模块,用于所述执行端将所述查询结果发送至所述用户端,所述用户端用于接收所述执行端反馈的所述查询结果。
46、本技术实施例还公开了一种基于预计算场景的查询处理装置,所述装置涉及用户端、优化端、执行端和数据库,所述装置包括:
47、第五发送模块,用于所述用户端依据用户需求生成查询请求,并将所述查询请求发送至所述优化端,所述优化端用于接收所述用户端发送的所述查询请求;
48、返回模块,用于所述用户端接收所述执行端发送的所述查询结果,并将所述查询结果返回至对应的目标用户,所述执行端用于将所述查询结果反馈至所述用户端。
49、本技术具有以下优点:
50、在本技术的实施例中,相对于现有技术中的“操作计算量都非常大,查询效率较低;复杂查询的加速效果不够理想;访问约束效率不高,极大的影响了查询效率的问题”,本技术提供了“访问约束的预计算处理”的解决方案,具体为:“所述优化端接收所述用户端发送的查询请求,所述用户端用于依据用户需求生成查询请求,并向所述优化端发送所述查询请求;所述优化端依据所述查询请求在所述数据库中读取元数据,其中,所述元数据包括数据表和访问约束集合;所述优化端依据所述数据表内的数据进行预计算处理生成第一访问约束,其中,所述预计算处理包括条件过滤、聚集函数和表达式计算;所述优化端依据所述第一访问约束和查询改写类型生成查询计划,其中,查询改写类型包括filter匹配改写、投影匹配改写、聚集列匹配改写和join改写;所述优化端将所述查询计划发送至所述执行端,所述执行端用于将所述查询计划执行后生成的查询结果反馈至所述用户端”。通过“所述第一访问约束和查询改写类型生成查询计划”解决了“操作计算量都非常大,查询效率较低;复杂查询的加速效果不够理想;访问约束效率不高,极大的影响了查询效率的问题”达到了“访问约束增加预计算处理之后,可以将查询时的计算提前到生成访问约束数据时,减少了查询执行过程中的计算量;有助于提高复杂度、减少访问约束的数据量,加速了查询性能”。