CN113836164A - 统一sql的方法、系统、设备及介质 - Google Patents
统一sql的方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN113836164A CN113836164A CN202010587866.2A CN202010587866A CN113836164A CN 113836164 A CN113836164 A CN 113836164A CN 202010587866 A CN202010587866 A CN 202010587866A CN 113836164 A CN113836164 A CN 113836164A
- Authority
- CN
- China
- Prior art keywords
- sql
- syntax tree
- unifying
- syntax
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种统一SQL的方法、系统、设备及介质,涉及SQL查询技术领域,解决了不同计算架构要使用不同SQL来进行分析计算的技术问题,其技术方案要点是使用统一的SQL为用户屏蔽了底层存储计算的差异,能够使用户依次编码就能在多个数据库系统中提交执行,做到应用的跨平台迁移;将统一SQL翻译成多种不同数据库的SQL语法,能够支持能力扩展,可兼容多种数据库。
Description
技术领域
本公开涉及SQL查询技术领域,尤其涉及一种统一SQL的方法、系统、设备及介质。
背景技术
大数据发展的趋势认为未来更加倾向“重关联、轻采集”,即不再将数据事先采集到本地,然后通过大数据计算平台(如Hadoop、Spark)进行统一计算和分析,2018GantnerCIA(Controller Area Network In Automation)峰会和2019BDTC(Big Data TechnologyConference)大会都多次提到该技术的发展。将来更多的是通过一套查询分析引擎,跨多种数据源的数据库进行联合分析,比如跨Spark、Greenplum、Hive等综合查询,并且能根据数据的特征智能下推算子到合适的计算引擎上。
现在大数据应用的分析系统还是以SQL作为数据查询分析语言,但是由于底层存储计算架构的差异、计算模型的差异、数据格式的差异等原因,各种大数据开源软件对SQL的要求和语法都不一样,比如Apache Spark SQL、Hive等,以及大型MPP(MassivelyParallelProcessing,大规模并行处理)数据库软件的SQL要求和语法也不一样,比如GreenPlum、GBase等。
基于场景考虑,应用系统针对存储计算成本的差异会采用不同的组件部署策略,在大规模场景下采用大数据平台的Spark、Hive等作为计算引擎,而在小规模场采用GreenPlum、GBase等作为计算引擎,而应用的业务软件、代码使用不同的版本时,开发效率低且人力消耗大。
发明内容
本公开提供了一种统一SQL的方法、系统、设备及介质,其技术目的是:通过一套统一标准的SQL语法屏蔽对各种不同数据计算引擎的差异,使得应用能够使用统一SQL分析计算不同计算架构的数据;同时,通过统一SQL语法开发来实现应用可跨平台迁移的目标。
本公开的上述技术目的是通过以下技术方案得以实现的:
一种统一SQL的方法,包括:
定义统一SQL的语法规范;
将所述统一SQL解析成语法树;
依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
进一步地,对所述语法树进行翻译前,对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
进一步地,所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表,若为物理表则直接对所述语法树进行翻译;
若为逻辑表则判断所述逻辑表为视图模式或物理表模式,若为视图模式则根据优化规则对所述语法树进行优化,然后对优化后的语法树进行翻译;
若所述逻辑表为物理表模式,则生成真实物理表的执行计划。
进一步地,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景,所述逻辑表根据所述场景判断所述逻辑表为视图模式或物理表模式。
进一步地,所述优化规则包括过滤下推规则和字段剪枝规则。
一种统一SQL的系统,包括:
定义模块,定义统一SQL的语法规范;
解析模块,将所述统一SQL解析成语法树;
翻译模块,依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
反解析模块,对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
执行模块,将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
进一步地,该系统还包括检查模块,对所述语法树进行翻译前,所述检查模块对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
进一步地,该系统还包括:
第一判断模块,在所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表;
第二判断模块,判断所述逻辑表为视图模式或物理表模式;
优化模块,所述逻辑表为视图模式时,根据优化规则对所述语法树进行优化;
创建组合模块,所述逻辑表为物理表模式时,生成真实物理表的执行计划。
进一步地,所述第二判断模块包括:
查询单元,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景;
判断单元,根据所述场景判断所述逻辑表为视图模式或物理表模式。
一种统一SQL的实现设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的统一SQL的方法。
一种计算机介质,所述计算机介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的统一SQL的方法。
本公开的有益效果在于:本公开所述的统一SQL的方法、系统、设备及介质,使用统一的SQL为用户屏蔽了底层存储计算的差异,能够使用户依次编码就能在多个数据库系统中提交执行,做到应用的跨平台迁移;将统一SQL翻译成多种不同数据库的SQL语法,能够支持能力扩展,可兼容多种数据库。
附图说明
图1为本公开方法流程图;
图2为本公开系统示意图;
图3为实施例一流程图;
图4为实施例二流程图;
图5为逻辑表查询优化的流程图;
图6为实施例三示意图。
具体实施方式
下面将结合附图对本公开技术方案进行详细说明。在本公开的描述中,需要理解地是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,仅用来区分不同的组成部分。
图1为本公开方法流程图,如图1所示,首先定义统一SQL的语法规范,例如采用SQL99为基础,对多种SQL标准语法进行兼容,为用户提供统一的DDL(Data DefinitionLanguage,数据定义语言)、DQL(Data Query Language,数据查询语言)、DML(DataManipulation Language,数据操作语言)等SQL语言。然后将统一SQL解析成语法树,定义语法解析规则,实现统一SQL的语法解析,将用户编写的统一SQL解析成语法树。
依据不同的SQL语法对所述语法树进行翻译,得到多种语法树,例如:按照SparkSQL的语法进行翻译,构造Spark SQL的语法树,同时按照GreenPlum SQL的语法进行翻译,构造GreenPlum SQL的语法树,并可扩展为同时按照其它多种数据库语法的方言进行翻译。然后对多种语法树进行反解析,得到不同数据库的SQL字符串,例如:解析为Spark SQL的字符串,同时解析为GreenPlum的SQL字符串,并可同时解析为其他数据库的SQL字符串。最后根据物理环境的配置,将解析成不同数据库的SQL字符串中对应的SQL字符串提交到环境执行,并返回数据结果。
图2为本公开系统示意图,如图2所示,该系统各模块的作用参考图1所述的方法,不再赘述。
实施利一:在对语法树进行翻译前对语法树进行合法性检查,对树节点的SQL语法校验是否为标准语法或者标准函数,对于非标准的语法和函数给出告警提示,如图3所示。
实施例二:合法性检查完成后,判断语法树的Form对象是物理表或逻辑表,若为物理表则直接对语法树进行翻译,若为逻辑表则判断该逻辑表为视图模式或物理表模式。若逻辑表为视图模式则根据优化规则对语法树进行优化,且视图并不会真正的被执行,不引入计算开销;若逻辑表为物理表模式,则生成真实物理表的执行计划,如图4所示。
优化规则包括过滤下推和字段剪枝,过滤下推是指逻辑表被调用时,将原有的查询条件下推到逻辑表的过滤条件当中,前提是逻辑表中必须包含查询条件中的字段信息;字段剪枝是指逻辑表在被调用时,将原有逻辑表中定义的字段数,裁减为只被查询用到的字段数,这样做即能达到避免计算全量数据的目的,又能节省计算资源。如果逻辑表是物理表模式,则生成真实物理表的执行计划,以便于计算全量数据,这种场景下需要提前准备好全量数据供应用使用。
使用逻辑表的方式实现查询优化的流程如图5所示,具体如下:(1)构建逻辑表的schema,对业务可见的是逻辑表,逻辑表可以根据底层运行环境的差异进行切换,可能是视图模式也可能是物理表模式;比如:create logic table fact_mr_only as select a ascellid,b as name from ods_mr;(2)构造一个基于逻辑表的查询SQL,只查询逻辑表中的部分字段,比如逻辑表中有2个字段,但查询语句中只查出1个字段;并且查询条件中增加某个过滤条件,比如筛选出小区ID等于1的记录:select cellid from fact_mr_only wherecellid=1;(3)根据场景判断逻辑表是否为视图模式,如果需要节省计算资源及延时计算,则采用视图模式,如果需要全量计算则采用物理表模式,提前准备好全量数据;(4)如果是视图模式,则要经过过滤下推、字段剪枝等处理,在执行查询SQL后才会引入计算,将查询语句展开后是:select cellid from(select a as cellid from ods_mr where cellid=1);如果是物理表模式,则首先会创建具有cellid、name两个字段的表fact_mr_only,并且将ods_mr表中的a、b字段值插入到fact_mr_only表中;(5)最后提交SQL语句到计算引擎中的,返回执行结果。
实施例三:图6为实施例三的示意图,即本公开系统的示意图,各个模块的具体实现参考上述描述,不再赘述。
以上为本公开示范性实施例,本公开的保护范围由权利要求书及其等效物限定。
Claims (12)
1.一种统一SQL的方法,其特征在于,包括:
定义统一SQL的语法规范;
将所述统一SQL解析成语法树;
依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
2.如权利要求1所述的统一SQL的方法,其特征在于,对所述语法树进行翻译前,对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
3.如权利要求2所述的统一SQL的方法,其特征在于,所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表,若为物理表则直接对所述语法树进行翻译;
若为逻辑表则判断所述逻辑表为视图模式或物理表模式,若为视图模式则根据优化规则对所述语法树进行优化,然后对优化后的语法树进行翻译;
若所述逻辑表为物理表模式,则生成真实物理表的执行计划。
4.如权利要求3所述的统一SQL的方法,其特征在于,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景,根据所述场景判断所述逻辑表为视图模式或物理表模式。
5.如权利要求4所述的统一SQL的方法,其特征在于,所述优化规则包括过滤下推规则和字段剪枝规则。
6.一种统一SQL的系统,其特征在于,包括:
定义模块,定义统一SQL的语法规范;
解析模块,将所述统一SQL解析成语法树;
翻译模块,依据不同的SQL语法对所述语法树进行翻译,得到多种语法树;
反解析模块,对所述多种语法树进行反解析,得到不同数据库的SQL字符串;
执行模块,将不同数据库的SQL字符串提交到环境执行,并返回数据结果。
7.如权利要求6所述的统一SQL的系统,其特征在于,该系统还包括检查模块,对所述语法树进行翻译前,所述检查模块对所述语法树进行合法性检查,对于非标准的语法和函数给出告警提示。
8.如权利要求7所述的统一SQL的系统,其特征在于,该系统还包括:
第一判断模块,在所述合法性检查完成后,判断所述语法树的Form对象是物理表或逻辑表;
第二判断模块,判断所述逻辑表为视图模式或物理表模式;
优化模块,所述逻辑表为视图模式时,根据优化规则对所述语法树进行优化;
创建组合模块,所述逻辑表为物理表模式时,生成真实物理表的执行计划。
9.如权利要求8所述的统一SQL的系统,其特征在于,所述第二判断模块包括:
查询单元,构造基于所述逻辑表的查询SQL,所述查询SQL根据查询条件查询所述逻辑表的场景;
判断单元,根据所述场景判断所述逻辑表为视图模式或物理表模式。
10.如权利要求9所述的统一SQL的系统,其特征在于,所述优化规则包括过滤下推规则和字段剪枝规则。
11.一种统一SQL的实现设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的统一SQL的方法。
12.一种计算机介质,其特征在于,所述计算机介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-4中任一项所述的统一SQL的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211644301.9A CN115858561A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
CN202010587866.2A CN113836164A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
EP21829078.1A EP4174680A4 (en) | 2020-06-24 | 2021-06-24 | SQL UNIFICATION METHOD, SYSTEM AND APPARATUS AND MEDIUM |
PCT/CN2021/102145 WO2021259367A1 (zh) | 2020-06-24 | 2021-06-24 | 统一sql的方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010587866.2A CN113836164A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211644301.9A Division CN115858561A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113836164A true CN113836164A (zh) | 2021-12-24 |
Family
ID=78964512
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010587866.2A Pending CN113836164A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
CN202211644301.9A Pending CN115858561A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211644301.9A Pending CN115858561A (zh) | 2020-06-24 | 2020-06-24 | 统一sql的方法、系统、设备及介质 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4174680A4 (zh) |
CN (2) | CN113836164A (zh) |
WO (1) | WO2021259367A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114443165A (zh) * | 2022-01-24 | 2022-05-06 | 浪潮软件集团有限公司 | 一种基于国产cpu和数据库的sql文件检查方法及系统 |
CN114692208B (zh) * | 2022-05-31 | 2022-09-27 | 中建电子商务有限责任公司 | 一种数据查询服务权限的处理方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN100555288C (zh) * | 2007-11-21 | 2009-10-28 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
US10255336B2 (en) * | 2015-05-07 | 2019-04-09 | Datometry, Inc. | Method and system for transparent interoperability between applications and data management systems |
CN105260403B (zh) * | 2015-09-22 | 2019-05-31 | 同望科技股份有限公司 | 通用跨数据库访问方法 |
CN107679192B (zh) * | 2017-10-09 | 2020-09-22 | 中国工商银行股份有限公司 | 多集群协同数据处理方法、系统、存储介质及设备 |
CN110633292B (zh) * | 2019-09-19 | 2022-06-21 | 上海依图网络科技有限公司 | 一种异构数据库的查询方法、装置、介质、设备及系统 |
CN111061757B (zh) * | 2019-12-19 | 2023-03-31 | 用友网络科技股份有限公司 | 数据库的语言转换方法、装置、电子设备及存储介质 |
-
2020
- 2020-06-24 CN CN202010587866.2A patent/CN113836164A/zh active Pending
- 2020-06-24 CN CN202211644301.9A patent/CN115858561A/zh active Pending
-
2021
- 2021-06-24 EP EP21829078.1A patent/EP4174680A4/en active Pending
- 2021-06-24 WO PCT/CN2021/102145 patent/WO2021259367A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2021259367A1 (zh) | 2021-12-30 |
EP4174680A4 (en) | 2023-11-08 |
CN115858561A (zh) | 2023-03-28 |
EP4174680A1 (en) | 2023-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112579626A (zh) | 多源异构sql查询引擎的构建方法及装置 | |
CN111914534B (zh) | 构建知识图谱语义映射方法及系统 | |
US10915535B2 (en) | Optimizations for a behavior analysis engine | |
CN109614315A (zh) | 一种数据同步测试用例的自动生成方法及系统 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN112000643A (zh) | 数据模型的加工方法及装置 | |
CN108536728A (zh) | 一种数据查询方法和装置 | |
WO2021259367A1 (zh) | 统一sql的方法、系统、设备及介质 | |
CN112035508A (zh) | 基于sql在线元数据解析的方法及系统、设备 | |
CN116795859A (zh) | 数据分析方法、装置、计算机设备和存储介质 | |
CN116975116A (zh) | 一种大数据分析系统的数据条件筛选方法 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
Al Mahruqi et al. | A semi-automated framework for migrating web applications from SQL to document oriented NoSQL database. | |
CN116578585B (zh) | 数据查询方法、装置、电子设备及存储介质 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
CN116166718B (zh) | 一种数据血缘获取方法和装置 | |
CN115952203B (zh) | 数据查询方法、设备、系统及存储介质 | |
CN104331517A (zh) | 一种检索方法及装置 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN111753045B (zh) | 一种基于Elasticsearch的Hive二级全文索引技术方法及系统 | |
CN114168122A (zh) | 数据脚本的生成方法及装置 | |
CN115904487B (zh) | 一种分析型数据口径管理方法、系统、设备及存储介质 | |
CN116680299B (zh) | 数据库查询方法、系统、存储介质以及设备 | |
CN117331926B (zh) | 一种数据稽核方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |