【技术实现步骤摘要】
查询的执行方法、装置、电子设备及计算机可读介质
[0001]本申请实施例涉及数据库领域,尤其涉及一种查询的执行方法、装置、电子设备及计算机可读介质。
技术介绍
[0002]子查询是一种常用计算机语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询。子查询作为一种易于理解,方便构建的SQL(Structured Query Language,结构化查询语言)结构语法,在分布式数据库处理的SQL语句中出现的比例目前处于不断上升态势。
[0003]在分布式关系型数据库中,子查询做为一种非标准的关系代数算子,如果有效联合分布式的数据结构对子查询进行处理,能够完全利用分布式关系型数据库的整体计算能力,从而有效减缓分布式关系型数据库系统中的执行服务器的计算压力。然而,有效联合分布式的数据结构对子查询进行处理一直是分布式关系型数据库研发的难点。具体地,在分布式关系型数据库中,子查询的计算过程难以下推到分布式关系型数据库中的子节点执行。
[0004]在分布式KV(Key-Value,键值)型数据库中,基于KV结构构筑分布式数据库,由于该数据库无法提供良好的关系型API(Application Programming Interface,应用程序接口)语义,子查询的计算过程同样难以下推到分布式KV型数据库中的子节点执行。这样,不能完全利用分布式KV型数据库的整体计算能力,以有效减缓分布式关系型数据库系统中的执行服务器的计算压力。
[0005]由此可见,如何将子查询下推到分布式数据库中的子节 ...
【技术保护点】
【技术特征摘要】
1.一种查询的执行方法,其特征在于,所述方法包括:对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式;确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分;对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行所述子查询的相关操作的SQL指令。2.根据权利要求1所述的方法,其特征在于,所述对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式,包括:基于所述子查询的类型,对所述子查询进行转换,以获得所述关系代数表达式中关系间的连接算子和所述连接算子的连接条件;基于所述连接算子和所述连接条件,生成与所述子查询对应的关系代数表达式。3.根据权利要求2所述的方法,其特征在于,所述基于所述子查询的类型,对所述子查询进行转换,以获得所述关系代数表达式中关系间的连接算子和所述连接算子的连接条件,包括:如果所述子查询的类型为标量类型,使用内连接算子或左连接算子配合语义算子来获得所述连接算子,并将所述标量类型的子查询的关联项转换为所述连接条件,其中,所述语义算子用于表达标量类子查询的返回结果超过一行时的报错语义。4.根据权利要求1所述的方法,其特征在于,所述确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分,包括:如果判定所述关系代数表达式中连接算子两边的关系的拆分数据结构一致,则将所述连接算子的连接条件转换为合取逻辑表达式;循环判断所述合取逻辑表达式中的每个子项是否为等值条件,并且所述每个子项的等号的操作数是否为所述关系的列名;如果所述合取逻辑表达式中所有等值条件的合集覆盖所述关系的拆分列,则确定所述关系代数表达式为可下推至分布式数据库中的子节点执行的部分。5.根据权利要求1所述的方法,其特征在于,所述确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分之后,所述方法还包括:确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分的执行成本;基于所述执行成本,确定所述关系代数表达式中待下推至分布式数据库中的子节点执行的部分。6.根据权利要求1所述的方法,其特征在于,所述对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行操作的SQL指令,包括:对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分的执行计划进行转换,以获得所述执行计划对应的抽象语法树;遍历所述抽象语法树,以生成分层的命名空间和连接关系;基于所述分层的命名空间和连接关系,逐层由下向上生成用于指示所述子节点执行所述子查询的相关操作的SQL指令。7.根据权利要求1-6中任意一项权利要求所述的方法,其特征在于,所述对所述关系代
数表达式中可下推至分布式数据库中的子节点执行的部分进行转换之后,所述方法还包括:接收所述子节点返回的针对所述SQL指令的执行结果;基于所述子查询的整体执行计划,对所述子节点返回的所述执行结果进行处理,以获得针对所述SQL请求的结果集;向客户端返回针对所述SQL请求的结果集。8.一种查询的执行装置,其特征在于,所述装置包括:第一转换模块,用于对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式;第一确定模块,用于确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分;第二转换模块,用于对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行所述子查询的相关操作的SQL指令。9.根据权利...
【专利技术属性】
技术研发人员:刘继龙,
申请(专利权)人:阿里巴巴集团控股有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。