一种基于AST的分布式SQL查询方法、装置及存储介质制造方法及图纸

技术编号:37238029 阅读:11 留言:0更新日期:2023-04-20 23:19
本发明专利技术公开了一种基于AST的分布式SQL查询方法、装置及存储介质,主要是由AST抽象语法树、分布式查询引擎和动态语义分析服务组成,先基于AST生成SQL的抽象语法树,再通过动态语义分析服务做SQL分流,筛选SQL查询执行策略,引入分布式查询引擎做SQL执行查询动作,提高执行性能的同时能够支持多种数据库类型的SQL查询,真正意义上的实现多源异构数据共享。本发明专利技术方法不仅能够以一种规范的SQL语法实现多种数据库类型的SQL查询,还能够在查询性能方面得到更好的保障,并且在数据安全管控得到了更好的控制。更好的控制。更好的控制。

【技术实现步骤摘要】
一种基于AST的分布式SQL查询方法、装置及存储介质


[0001]本专利技术涉及SQL查询
,特别是涉及一种基于AST的分布式SQL查询方法、装置及存储介质。

技术介绍

[0002]目前的数据共享领域中,绝大多数基于SQL查询的数据共享都是通过研发工程师在编码过程中直接对SQL进行语义分析实现数据共享安全管控,此类做法不仅实现复杂耗费大量人力成本,同时使得数据共享局限于指定的数据库类型,无法做到真正的多源异构数据共享,并且查询性能受限于数据库的读写能力,对于数据库运维要求较大,若没有实现分布式部署,那么对应的对于数据库的硬件资源要求也会相应的提高,整体人力成本、硬件成本、管理成本都相对较大。
[0003]目前常见的实现方案,大多基于一种固定的数据库类型实现动态SQL查询,但这种实现方式的前提是数据必须从源数据库抽取到指定的数据库才能够实现,这种实现方式,不仅增加了一个数据库的运维,且使得整个基于SQL查询的数据共享查询性能受限于数据库读能力以及硬件资源。
[0004]综上所述,现有SQL查询方法的不足:实现难度大,实现效率低:现有的实现方式需要研发工程师在编码过程中编辑大量的SQL分析逻辑,稍有差池便会导致SQL分析错误,且实现难度大,对于研发人员的技术能力有一定门槛,代码复用性不高,开发成本极高,开发效率低下;兼容性差,可移植性差:现有的实现方式必须基于一种数据库进行实现,这对于技术人员在做技术选型的时候会是一个较大的挑战,同时实现之后的性能及稳定性都受限于数据库类型,代码可移植性较低,无法兼容其他数据库类型的SQL查询;运维成本高:现有的实现方式,核心都依赖于底层的数据库选型,相应的底层数据库的运维会变得至关重要,一旦出错可能会直接导致上层应用崩溃。

技术实现思路

[0005]本专利技术针对上述问题,提供了一种基于AST的分布式SQL查询方法、装置及存储介质,能够降低SQL查询对于硬件资源的消耗,同时能够兼容多种数据库类型,不再受限于不同数据库的读能力。
[0006]本专利技术的第一方面,提供了一种基于AST的分布式SQL查询方法,所述方法包括以下步骤:
[0007]步骤一,基于ANSI标准规范输入SQL传输到AST抽象语法树生成服务;
[0008]步骤二,利用所述AST抽象语法树生成服务生成AST抽象语法树;
[0009]步骤三,利用AST语义分析服务基于AST进行语义分析,生成执行策略;
[0010]步骤四,根据所述执行策略通过分布式查询引擎执行查询;
[0011]步骤五,返回查询结果。
[0012]本专利技术的进一步技术方案:所述利用AST语义分析服务基于AST进行语义分析,生
成执行策略,具体包括:
[0013]根据AST抽象语法树进行词法分析,分析SQL语句中的每一个单词,且标记每个单词所在的位置;
[0014]进行语法分析,分析词法分析中每个单词的含义,将每个单词归类为SQL语法中的一部分;
[0015]深度优先遍历AST抽象语法树,一一校验解析每一次遍历的结果,分析出SQL语句中表与表之间的关系,字段与字段之间的关系;
[0016]将词法分析及语法分析结果打包成执行策略。
[0017]本专利技术的进一步技术方案:所述根据所述执行策略通过分布式查询引擎执行查询,具体包括:分布式查询引擎接收执行策略后,将SQL编译声明,在集群内部创建分布式查询引擎的执行计划,根据策略分发任务给集群内的工作节点。
[0018]本专利技术的第二方面,提供了一种基于AST的分布式SQL查询装置,装置包括:
[0019]输入SQL模块,用于基于ANSI标准规范输入SQL传输到AST抽象语法树生成服务;
[0020]生成AST抽象语法树模块,用于利用所述AST抽象语法树生成服务生成AST抽象语法树;
[0021]生成执行策略模块,用于利用AST语义分析服务基于AST进行语义分析,生成执行策略;
[0022]执行查询模块,用于根据所述执行策略通过分布式查询引擎执行查询;
[0023]结果返回模块,用于返回查询结果。
[0024]本专利技术的进一步技术方案:所述生成执行策略模块具体实现方法包括:
[0025]根据AST抽象语法树进行词法分析,分析SQL语句中的每一个单词,且标记每个单词所在的位置;
[0026]进行语法分析,分析词法分析中每个单词的含义,将每个单词归类为SQL语法中的一部分;
[0027]深度优先遍历AST抽象语法树,一一校验解析每一次遍历的结果,分析出SQL语句中表与表之间的关系,字段与字段之间的关系;
[0028]将词法分析及语法分析结果打包成执行策略。
[0029]本专利技术的进一步技术方案:所述执行查询模块具体实现方法包括:分布式查询引擎接收执行策略后,将SQL编译声明,在集群内部创建分布式查询引擎的执行计划,根据策略分发任务给集群内的工作节点。
[0030]本专利技术的第三方面,提供了一种基于AST的分布式SQL查询装置,包括:处理器;以及存储器,其中,所述存储器中存储有计算机可执行程序,当由所述处理器执行所述计算机可执行程序时,执行上述基于AST的分布式SQL查询方法。
[0031]本专利技术的第四方面,提供了一种存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现上述基于AST的分布式SQL查询方法。
[0032]本专利技术提供的基于AST的分布式SQL查询方法、装置及存储介质,主要是由AST抽象语法树、分布式查询引擎和动态语义分析服务组成,先基于AST生成SQL的抽象语法树,再通过动态语义分析服务做SQL分流,筛选SQL查询执行策略,引入分布式查询引擎做SQL执行查询动作,提高执行性能的同时能够支持多种数据库类型的SQL查询,真正意义上的实现多源
异构数据共享,最终基于AST的分布式SQL查询不仅能够以一种规范的SQL语法实现多种数据库类型的SQL查询,还能够在查询性能方面得到更好的保障,并且在数据安全管控得到了更好的控制。综上所述,本专利技术产生的有益效果有:
[0033]实现难度低,实现成本低:本专利技术方法通过基于AST对SQL进行分析生成抽取语法树,无需研发人员特地去写复杂的分析方法;
[0034]兼容性高:本专利技术方法不会局限于一种数据库类型,能够同时支持对关系型数据库及非关系型数据库进行查询,只需遵循一种SQL规范既可对多种数据库进行高效查询;
[0035]查询性能提升,运维成本降低:因为不会受限于一种数据库类型,且执行查询的动作是有分布式查询引擎执行的,对于单台服务器的资源要求降低,且不会受限于一种数据库类型的查询能力,实行核心不在于数据库,运维成本降低。
附图说明
[0036]图1是本专利技术实施例中基于AST的分布式SQL查询方法整体示意图;
[0037]图2是本专利技术实施例中基于AST的分布式SQL查询方法实现流程示意图;
[0038]图3本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于AST的分布式SQL查询方法,其特征在于,所述方法包括以下步骤:步骤一,基于ANSI标准规范输入SQL传输到AST抽象语法树生成服务;步骤二,利用所述AST抽象语法树生成服务生成AST抽象语法树;步骤三,利用AST语义分析服务基于AST进行语义分析,生成执行策略;步骤四,根据所述执行策略通过分布式查询引擎执行查询;步骤五,返回查询结果。2.根据权利要求1所述的一种基于AST的分布式SQL查询方法,其特征在于,所述利用AST语义分析服务基于AST进行语义分析,生成执行策略,具体包括:根据AST抽象语法树进行词法分析,分析SQL语句中的每一个单词,且标记每个单词所在的位置;进行语法分析,分析词法分析中每个单词的含义,将每个单词归类为SQL语法中的一部分;深度优先遍历AST抽象语法树,一一校验解析每一次遍历的结果,分析出SQL语句中表与表之间的关系,字段与字段之间的关系;将词法分析及语法分析结果打包成执行策略。3.根据权利要求1所述的一种基于AST的分布式SQL查询方法,其特征在于,所述根据所述执行策略通过分布式查询引擎执行查询,具体包括:分布式查询引擎接收执行策略后,将SQL编译声明,在集群内部创建分布式查询引擎的执行计划,根据策略分发任务给集群内的工作节点。4.一种基于AST的分布式SQL查询装置,其特征在于,装置包括:输入SQL模块,用于基于ANSI标准规范输入SQL传输到AST抽象语法树生成服务;生成AST抽象语法树模块,用于利用所述AST抽象语法树生成服务生成AST抽象...

【专利技术属性】
技术研发人员:陈伟鹏
申请(专利权)人:深圳航天智慧城市系统技术研究院有限公司
类型:发明
国别省市:

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

1