统一SQL的方法、系统、设备及介质技术方案

技术编号:37089357 阅读:28 留言:0更新日期:2023-03-29 20:04
本发明专利技术公开了一种统一SQL的方法、系统、设备及介质,涉及SQL查询技术领域,解决了不同计算架构要使用不同SQL来进行分析计算的技术问题,其技术方案要点是使用统一的SQL为用户屏蔽了底层存储计算的差异,能够使用户依次编码就能在多个数据库系统中提交执行,做到应用的跨平台迁移;将统一SQL翻译成多种不同数据库的SQL语法,能够支持能力扩展,可兼容多种数据库。库。库。

【技术实现步骤摘要】
统一SQL的方法、系统、设备及介质
[0001]本申请是2020年6月24日申请的申请号为202010587866.2、专利技术名称为“统一SQL的方法、系统、设备及介质”的专利申请的分案申请。


[0002]本公开涉及SQL查询
,尤其涉及一种统一SQL的方法、系统、设备及介质。

技术介绍

[0003]大数据发展的趋势认为未来更加倾向“重关联、轻采集”,即不再将数据事先采集到本地,然后通过大数据计算平台(如Hadoop、Spark)进行统一计算和分析,2018GantnerCIA(Controller Area Network In Automation)峰会和2019BDTC(Big Data TechnologyConference)大会都多次提到该技术的发展。将来更多的是通过一套查询分析引擎,跨多种数据源的数据库进行联合分析,比如跨Spark、Greenplum、Hive等综合查询,并且能根据数据的特征智能下推算子到合适的计算引擎上。
[0004]现在大数据应用的分析系统还是以SQL作为数据查询分析语言,但是由于底层存储计算架构的差异、计算模型的差异、数据格式的差异等原因,各种大数据开源软件对SQL的要求和语法都不一样,比如Apache Spark SQL、Hive等,以及大型MPP(MassivelyParallelProcessing,大规模并行处理)数据库软件的SQL要求和语法也不一样,比如GreenPlum、GBase等。
[0005]基于场景考虑,应用系统针对存储计算成本的差异会采用不同的组件部署策略,在大规模场景下采用大数据平台的Spark、Hive等作为计算引擎,而在小规模场采用GreenPlum、GBase等作为计算引擎,而应用的业务软件、代码使用不同的版本时,开发效率低且人力消耗大。

技术实现思路

[0006]本公开提供了一种统一SQL的方法、系统、设备及介质,其技术目的是:通过一套统一标准的SQL语法屏蔽对各种不同数据计算引擎的差异,使得应用能够使用统一SQL分析计算不同计算架构的数据;同时,通过统一SQL语法开发来实现应用可跨平台迁移的目标。
[0007]本公开的上述技术目的是通过以下技术方案得以实现的:
[0008]一种统一SQL的方法包括:
[0009]定义统一SQL的语法规范;
[0010]将所述统一SQL解析成语法树;
[0011]依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
[0012]对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
[0013]将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
[0014]进一步地,对所述语法树进行翻译前,对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
[0015]进一步地,所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表,若为物理表则直接对所述语法树进行翻译;
[0016]若为逻辑表则判断所述逻辑表为视图模式或物理表模式,为视图模式则根据优化规则对所述语法树进行优化,然后对优化后的语法树进行翻译;
[0017]若所述逻辑表为物理表模式,则生成真实物理表的执行计划。
[0018]进一步地,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景,所述逻辑表根据所述场景判断所述逻辑表为视图模式或物理表模式。
[0019]进一步地,所述优化规则包括过滤下推规则和字段剪枝规则。
[0020]一种统一SQL的系统,包括:
[0021]定义模块,定义统一SQL的语法规范;
[0022]解析模块,将所述统一SQL解析成语法树;
[0023]翻译模块,依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
[0024]反解析模块,对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
[0025]执行模块,将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
[0026]进一步地,该系统还包括检查模块,对所述语法树进行翻译前,所述检查模块对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
[0027]进一步地,该系统还包括:
[0028]第一判断模块,在所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表;
[0029]第二判断模块,判断所述逻辑表为视图模式或物理表模式;
[0030]优化模块,所述逻辑表为视图模式时,根据优化规则对所述语法树进行优化;
[0031]创建组合模块,所述逻辑表为物理表模式时,生成真实物理表的执行计划。
[0032]进一步地,所述第二判断模块包括:
[0033]查询单元,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景;
[0034]判断单元,根据所述场景判断所述逻辑表为视图模式或物理表模式。
[0035]一种统一SQL的实现设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1

4中任一项所述的统一SQL的方法。
[0036]一种计算机介质,所述计算机介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1

4中任一项所述的统一SQL的方法。
[0037]本公开的有益效果在于:本公开所述的统一SQL的方法、系统、设备及介质,使用统一的SQL为用户屏蔽了底层存储计算的差异,能够使用户依次编码就能在多个数据库系统中提交执行,做到应用的跨平台迁移;将统一SQL翻译成多种不同数据库的SQL语法,能够支持能力扩展,可兼容多种数据库。
附图说明
[0038]图1为本公开方法流程图;
[0039]图2为本公开系统示意图;
[0040]图3为实施例一流程图;
[0041]图4为实施例二流程图;
[0042]图5为逻辑表查询优化的流程图;
[0043]图6为实施例三示意图。
具体实施方式
[0044]下面将结合附图对本公开技术方案进行详细说明。在本公开的描述中,需要理解地是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,仅用来区分不同的组成部分。
[0045]图1为本公开方法流程图,如图1所示,首先定义统一SQL的语法规范,例如采用SQL 99为基础,对多种SQL标准语法进行兼容,为用户提供统一的DDL(Data Definition Language,数据定义语言)、DQL(Data Query Language,数据查询语言)、DML(Data Manipulation Language,数据操作语言)等SQL语言。然后将统一SQL解析成语法树,定义语法解析规则,实现统一SQ本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于统一结构化查询语言SQL查询的方法,包括:接收来自用户的统一SQL,所述统一SQL基于统一的语法规范;将所述统一SQL解析成语法树;依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;对所述多种语法树进行反解析,得到不同数据库的SQL字符串;将不同数据库的SQL字符串提交到环境执行,并返回数据结果。2.如权利要求1所述的统一SQL查询的方法,其中,所述方法还包括:对所述语法树进行翻译前,对所述语法树进行合法性检查。3.如权利要求2所述的统一SQL查询的方法,其中,对所述语法树进行合法性检查包括:对树节点的SQL语法校验是否为标准语法或者标准函数,以及对于非标准的语法和函数给出告警提示。4.如权利要求2所述的统一SQL查询的方法,其中,所述语法树的Form对象为物理表,在所述合法性检查后对所述语法树进行所述翻译。5.如权利要求2所述的统一SQL查询的方法,其中,所述语法树的Form对象为物理表模式的逻辑表,所述方法还包括:在合法性检查后基于所述逻辑表生成真实物理表的执行计划。6.如权利要求2所述的统一SQL查询的方法,其中,所述语法树的Form对象为视图模式的逻辑表,所述方法还包括:根据优化规则对所述语法树进行优化,所述优化规则包括过滤下推规则和字段剪枝规则。7.一种用于统一结构化查询语言SQL查询的系统,包括:定义模块,定义统一SQL的语法规范;解析模块,将来自用户的统一SQL解析成语法树,所述统一SQL基于统一的语法规范;翻译模块,依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;反解析模块,对所述多种语法树进行反解析,得到不同数据库的SQL字符串;执行模...

【专利技术属性】
技术研发人员:姚澜
申请(专利权)人:中兴通讯股份有限公司
类型:发明
国别省市:

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

1