查询的执行方法、装置、电子设备及计算机可读介质制造方法及图纸

技术编号:27435409 阅读:27 留言:0更新日期:2021-02-25 03:21
本申请实施例提供了一种查询的执行方法、装置、电子设备及计算机可读介质,涉及数据库领域。其中,所述方法包括:对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式;确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分;对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行所述子查询的相关操作的SQL指令。本申请实施例通过将子查询下推到分布式数据库中的子节点执行,有效联合了分布式数据库的子节点执行子查询,从而能够完全利用分布式数据库的整体计算能力,以有效减缓分布式数据库系统中的执行服务器的计算压力。据库系统中的执行服务器的计算压力。据库系统中的执行服务器的计算压力。

【技术实现步骤摘要】
查询的执行方法、装置、电子设备及计算机可读介质


[0001]本申请实施例涉及数据库领域,尤其涉及一种查询的执行方法、装置、电子设备及计算机可读介质。

技术介绍

[0002]子查询是一种常用计算机语言中嵌套查询下层的程序模块。当一个查询是另一个查询的条件时,称之为子查询。子查询作为一种易于理解,方便构建的SQL(Structured Query Language,结构化查询语言)结构语法,在分布式数据库处理的SQL语句中出现的比例目前处于不断上升态势。
[0003]在分布式关系型数据库中,子查询做为一种非标准的关系代数算子,如果有效联合分布式的数据结构对子查询进行处理,能够完全利用分布式关系型数据库的整体计算能力,从而有效减缓分布式关系型数据库系统中的执行服务器的计算压力。然而,有效联合分布式的数据结构对子查询进行处理一直是分布式关系型数据库研发的难点。具体地,在分布式关系型数据库中,子查询的计算过程难以下推到分布式关系型数据库中的子节点执行。
[0004]在分布式KV(Key-Value,键值)型数据库中,基于KV结构构筑分布式数据库,由于该数据库无法提供良好的关系型API(Application Programming Interface,应用程序接口)语义,子查询的计算过程同样难以下推到分布式KV型数据库中的子节点执行。这样,不能完全利用分布式KV型数据库的整体计算能力,以有效减缓分布式关系型数据库系统中的执行服务器的计算压力。
[0005]由此可见,如何将子查询下推到分布式数据库中的子节点执行成为当前亟待解决的技术问题。

技术实现思路

[0006]本申请的目的在于提出一种查询的执行方法、装置、电子设备及计算机可读介质,用于解决现有技术中存在的如何将子查询下推到分布式数据库中的子节点执行的问题。
[0007]根据本申请实施例的第一方面,提供了一种查询的执行方法。所述方法包括:对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式;确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分;对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行所述子查询的相关操作的SQL指令。
[0008]根据本申请实施例的第二方面,提供了一种查询的执行装置。所述装置包括:第一转换模块,用于对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应的关系代数表达式;第一确定模块,用于确定所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分;第二转换模块,用于对所述关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示所述子节点执行所述子查询的相关操作的
SQL指令。
[0009]根据本申请实施例的第三方面,提供了一种电子设备,包括:一个或多个处理器;计算机可读介质,配置为存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述实施例的第一方面所述的查询的执行方法。
[0010]根据本申请实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的第一方面所述的查询的执行方法。
[0011]根据本申请实施例提供的技术方案,对接收到的SQL请求中的子查询进行转换,以获得子查询对应的关系代数表达式,并确定关系代数表达式中可下推至分布式数据库中的子节点执行的部分,再对关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,以获得用于指示子节点执行子查询的相关操作的SQL指令,与现有的其它方式相比,通过确定子查询对应的关系代数表达式中可下推至分布式数据库中的子节点执行的部分,并对关系代数表达式中可下推至分布式数据库中的子节点执行的部分进行转换,能够将子查询下推到分布式数据库中的子节点执行,有效联合了分布式数据库的子节点执行子查询,从而能够完全利用分布式数据库的整体计算能力,以有效减缓分布式数据库系统中的执行服务器的计算压力。
附图说明
[0012]通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
[0013]图1为本申请实施例一中查询的执行方法的步骤流程图;
[0014]图2A为本申请实施例二中查询的执行方法的步骤流程图;
[0015]图2B为根据本申请实施例二提供的查询的执行过程的示意图;
[0016]图3为本申请实施例三中查询的执行装置的结构示意图;
[0017]图4为本申请实施例四中查询的执行装置的结构示意图;
[0018]图5为本申请实施例五中查询的执行装置的结构示意图;
[0019]图6为本申请实施例六中分布式数据库系统的结构示意图;
[0020]图7为本申请实施例七中电子设备的结构示意图;
[0021]图8为本申请实施例八中电子设备的硬件结构。
具体实施方式
[0022]下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅配置为解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。
[0023]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
[0024]参照图1,示出了本申请实施例一的查询的执行方法的步骤流程图。
[0025]具体地,本实施例的查询的执行方法包括以下步骤:
[0026]在步骤S101中,对接收到的SQL请求中的子查询进行转换,以获得所述子查询对应
的关系代数表达式。
[0027]在本申请实施例中,所述SQL请求可为用户通过客户端发送至分布式数据库系统的执行服务器中的子查询解析器的SQL请求。其中,所述客户端包括MySQL客户端或者其它应用程序等。子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块。当一个查询A是另一个查询B的条件时,称之为子查询,如,查询A为子查询。关系代数表达式可理解为由关系代数运算经有限次复合而成的式子。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
[0028]在一些可选实施例中,在对接收到的SQL请求中的子查询进行转换时,基于所述子查询的类型,对所述子查询进行转换,以获得所述关系代数表达式中关系间的连接算子和所述连接算子的连接条件;基于所述连接算子和所述连接条件,生成与所述子查询对应的关系代数表达式。籍此,能够基于子查询对应的关系代数表达式语义理解子查询。可以理解的是,以上描述仅为示例性的,本申请实施例对此不做任何限定。
[0029]在一个具体的例子中,所述关系在数据库领域中可理解为数据表。所述连接算子可理解为关系代数中表示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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.根据权利...

【专利技术属性】
技术研发人员:刘继龙
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

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

1