CN110781212A - 一种sql高效计算和访问的方法、组件及系统 - Google Patents
一种sql高效计算和访问的方法、组件及系统 Download PDFInfo
- Publication number
- CN110781212A CN110781212A CN201910892123.3A CN201910892123A CN110781212A CN 110781212 A CN110781212 A CN 110781212A CN 201910892123 A CN201910892123 A CN 201910892123A CN 110781212 A CN110781212 A CN 110781212A
- Authority
- CN
- China
- Prior art keywords
- metadata
- sql
- external storage
- access
- 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/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
-
- 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
Abstract
本发明公开了一种SQL高效计算和访问的方法、组件及系统,本技术方案将会修改CALCITE源码来实现元数据和汇总表的物理存储,将元数据和汇总表存储在外储存器,利用外储存器断电后数据不会丢失的特性,解决CALCITE服务停止运行带来的影响,同时,由于CALCITE解析得到的元数据被同时存储在RAM和外储存器中,当CALCITE接收到处理过的SQL语句时,在系统没出现过停止运行的情况下可以直接读取RAM中的元数据,根据元数据在外储存器中匹配执行结果;即使系统出现过停止运行的情况,也可以直接读取外储存器中的元数据,根据元数据在外储存器中匹配执行结果。
Description
技术领域
本发明涉及数据查询领域,特别涉及一种SQL高效计算和访问的方法、组件及系统。
背景技术
结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统,可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
ApacheCALCITE是一款开源SQL解析工具,可以将各种SQL语句解析成抽象语法术AST(AbstractSyntaxTree),之后通过操作AST就可以把SQL中所要表达的算法与关系体现在具体代码之中。CALCITE的生前为Optiq(也为Farrago),为Java语言编写,通过十多年的发展,在2013年成为Apache旗下顶级项目,并还在持续发展中,该项目的创始人为JulianHyde,其拥有多年的SQL引擎开发经验,目前在Hortonworks工作,主要负责CALCITE项目的开发与维护。目前,使用CALCITE作为SQL解析与处理引擎有Hive、Drill、Flink、Phoenix和Storm,可以肯定的是还会有越来越多的数据处理引擎采用CALCITE作为SQL解析工具。
当前CALCITE的元数据和汇总表都是储在内存中,一旦服务意外或其他原因停止运行,那么这些数据将会全部丢失,这样会导致下次访问时全部重新解析计算存储。本技术方案将会修改CALCITE源码来实现元数据和汇总表的物理存储,解决CALCITE服务停止运行带来的影响。
发明内容
本发明的目的在于:提供了一种SQL高效计算和访问的方法、组件及系统,解决了当前CALCITE的元数据和汇总表都是储在内存中,一旦服务意外或其他原因停止运行,那么这些数据将会全部丢失,这样会导致下次访问时全部重新解析计算存储的问题。
本发明采用的技术方案如下:
一种SQL高效计算和访问的方法,包括RAM和外储存器,还包括以下步骤:
S1、使用CALCITE工具对SQL语句进行解析得到元数据;
S2、将步骤S1中得到的元数据与RAM和外储存器中记载的历史元数据进行匹配,若匹配到历史元数据,则转入步骤S4,若未匹配到历史元数据,则转入步骤S3;
S3、将步骤S1中得到的元数据作为历史元数据存入RAM和外储存器,执行步骤S1中的SQL语句,将执行结果存储到外储存器中
S4、CALCITE工具对SQL语句进行重写并调用外储存器中储存的对应的执行结果;
S5、将步骤S3和步骤S4得到的执行结果进行展示。
当前CALCITE的元数据和汇总表都是储在RAM中,一旦服务意外或其他原因停止运行,那么这些数据将会全部丢失,这样会导致下次访问时全部重新解析计算存储。本技术方案将会修改CALCITE源码来实现元数据和汇总表的物理存储,将元数据和汇总表存储在外储存器,利用外储存器断电后数据不会丢失的特性,解决CALCITE服务停止运行带来的影响,同时,由于CALCITE解析得到的元数据被同时存储在RAM和外储存器中,当CALCITE接收到处理过的SQL语句时,在系统没出现过停止运行的情况下可以直接读取RAM中的元数据,根据元数据在外储存器中匹配执行结果;即使系统出现过停止运行的情况,也可以直接读取外储存器中的元数据,根据元数据在外储存器中匹配执行结果。
进一步的,所述外储存器包括ROM、磁盘、U盘中的至少一种。
进一步的,所述步骤S5中将步骤S3和步骤S4得到的执行结果进行展示前,通过物化视图对执行结果进行计算。
进一步的,所述步骤S1中对使用CALCITE工具对SQL语句进行解析得到元数据的方法包括以下步骤:
S101、使用CALCITE工具对SQL语句进行解析得到抽象语法树AST;
S102、将抽象语法树AST处理为自行设计的元数据。
进一步的,所述元数据包括数据库类型,下层数据库类型,数据库,表,表字段中的至少一种信息。
进一步的,所述步骤S4中的重写包括join、聚合、函数、数据展示范围重写中的至少一种。
一种SQL高效计算和访问的组件,包括用于执行如权利要求1中步骤S1的SQL解析模块、用于执行如权利要求1中步骤S2的元数据管理模块、用于存储元数据的元数据存储模块、SQL重写模块、SQL执行模块和物化视图模块。
进一步的,所述元数据管理模块包括与SQL解析模块匹配的元数据API接口和用于判断输入元数据是否与历史元数据匹配的元数据匹配模块。上述组件按照大数据基础平台组件开发规范对各个模块进行封装得到。
一种SQL高效计算和访问的系统,包括客户端和数据查询装置,所述数据查询装置包括:
存储器,用于存储可执行指令、元数据及执行结果;
处理器,用于执行所述存储器中存储的可执行指令,实现如权利要求1所述的一种SQL高效计算和访问的方法。
进一步的,所述客户端通过JDBC将SQL语句提交到数据查询装置。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1.本发明一种SQL高效计算和访问的方法、组件及系统,解决了当前CALCITE的元数据和汇总表都是储在内存中,一旦服务意外或其他原因停止运行,那么这些数据将会全部丢失,这样会导致下次访问时全部重新解析计算存储的问题;
2.本发明一种SQL高效计算和访问的方法、组件及系统,在解决当前CALCITE问题的情况下保留了二次访问时会解析sql,满足一定条件直接读取内存中的汇总表数据,实现高效查询计算的由来。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,其中:
图1是本发明的架构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合图1对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
CALCITE:一款开源SQL解析工具,可以将各种SQL语句解析成抽象语法树AST。然后就可以通过操作AST把SQL中所要表达的算法与关系体现在具体代码之中。
AST:抽象语法树(AST Abstract Syntax Tree)。
元数据:自行设计的元数据结构,包含数据库类型,下层数据库类型,数据库,表,表字段等信息。
SQL解析:Calcite通过Java CC将SQL解析成未经校验的AST。
物化视图:一个查询结果的数据库对象,用来生成基于数据表求和的汇总表。
SQL重写:基于创建物化视图的元数据信息的SQL语句,针对用户传入的SQL进行SQL元数据解析,与已经存储的物化视图元数据信息做匹配算法。
实施例1
一种SQL高效计算和访问的方法,包括RAM和外储存器,还包括以下步骤:
S1、使用CALCITE工具对SQL语句进行解析得到元数据;
S2、将步骤S1中得到的元数据与RAM和外储存器中记载的历史元数据进行匹配,若匹配到历史元数据,则转入步骤S4,若未匹配到历史元数据,则转入步骤S3;
S3、将步骤S1中得到的元数据作为历史元数据存入RAM和外储存器,执行步骤S1中的SQL语句,将执行结果存储到外储存器中
S4、CALCITE工具对SQL语句进行重写并调用外储存器中储存的对应的执行结果;
S5、将步骤S3和步骤S4得到的执行结果进行展示。
当前CALCITE的元数据和汇总表都是储在RAM中,一旦服务意外或其他原因停止运行,那么这些数据将会全部丢失,这样会导致下次访问时全部重新解析计算存储。本技术方案将会修改CALCITE源码来实现元数据和汇总表的物理存储,将元数据和汇总表存储在外储存器,利用外储存器断电后数据不会丢失的特性,解决CALCITE服务停止运行带来的影响,同时,由于CALCITE解析得到的元数据被同时存储在RAM和外储存器中,当CALCITE接收到处理过的SQL语句时,在系统没出现过停止运行的情况下可以直接读取RAM中的元数据,根据元数据在外储存器中匹配执行结果;即使系统出现过停止运行的情况,也可以直接读取外储存器中的元数据,根据元数据在外储存器中匹配执行结果。
实施例2
本实施例在实施例1的基础上进一步的,所述外储存器包括ROM、磁盘、U盘中的至少一种。
进一步的,所述步骤S5中将步骤S3和步骤S4得到的执行结果进行展示前,通过物化视图对执行结果进行计算。
实施例3
本实施例在实施例1的基础上进一步的,所述步骤S1中对使用CALCITE工具对SQL语句进行解析得到元数据的方法包括以下步骤:
S101、使用CALCITE工具对SQL语句进行解析得到抽象语法树AST;
S102、将抽象语法树AST处理为自行设计的元数据。
进一步的,所述元数据包括数据库类型,下层数据库类型,数据库,表,表字段中的至少一种信息。
进一步的,所述步骤S4中的重写包括join、聚合、函数、数据展示范围重写中的至少一种。
实施例4
一种SQL高效计算和访问的组件,包括用于执行如权利要求1中步骤S1的SQL解析模块、用于执行如权利要求1中步骤S2的元数据管理模块、用于存储元数据的元数据存储模块、SQL重写模块、SQL执行模块和物化视图模块。
进一步的,所述元数据管理模块包括与SQL解析模块匹配的元数据API接口和用于判断输入元数据是否与历史元数据匹配的元数据匹配模块。上述组件按照大数据基础平台组件开发规范对各个模块进行封装得到。
实施例5
一种SQL高效计算和访问的系统,包括客户端和数据查询装置,所述数据查询装置包括:
存储器,用于存储可执行指令、元数据及执行结果;
处理器,用于执行所述存储器中存储的可执行指令,实现如权利要求1所述的一种SQL高效计算和访问的方法。
进一步的,所述客户端通过JDBC将SQL语句提交到数据查询装置。
实施例6
本实施例为本方案的一个实例,假设我们有一个按日处理的业务需求,该需求通过Table1、Table2、Table3这三张表关联计算可以实现。
对应sql如下:
该sql的执行结果生成物化视图到数据库db中。那么用户以下sql访问时,就可以选择直接查询数据源端,也可以选择通过sql重写直接访问物化视图,就能得到用户想要的数据结果,sql如下:
1、与原sql相同。
2、原sql包含当前sql查询范围。如:
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种SQL高效计算和访问的方法,包括RAM和外储存器,其特征在于:还包括以下步骤:
S1、使用CALCITE工具对SQL语句进行解析得到元数据;
S2、将步骤S1中得到的元数据与RAM和外储存器中记载的历史元数据进行匹配,若匹配到历史元数据,则转入步骤S4,若未匹配到历史元数据,则转入步骤S3;
S3、将步骤S1中得到的元数据作为历史元数据存入RAM和外储存器,执行步骤S1中的SQL语句,将执行结果存储到外储存器中
S4、CALCITE工具对SQL语句进行重写并调用外储存器中储存的对应的执行结果;
S5、将步骤S3和步骤S4得到的执行结果进行展示。
2.根据权利要求1所述的一种SQL高效计算和访问的方法,其特征在于:所述外储存器包括ROM、磁盘、U盘中的至少一种。
3.根据权利要求1所述的一种SQL高效计算和访问的方法,其特征在于:所述步骤S5中将步骤S3和步骤S4得到的执行结果进行展示前,通过物化视图对执行结果进行计算。
4.根据权利要求1所述的一种SQL高效计算和访问的方法,其特征在于:所述步骤S1中对使用CALCITE工具对SQL语句进行解析得到元数据的方法包括以下步骤:
S101、使用CALCITE工具对SQL语句进行解析得到抽象语法树AST;
S102、将抽象语法树AST处理为自行设计的元数据。
5.根据权利要求1所述的一种SQL高效计算和访问的方法,其特征在于:所述元数据包括数据库类型、下层数据库类型、数据库、表、表字段中的至少一种信息。
6.根据权利要求1所述的一种SQL高效计算和访问的方法,其特征在于:所述步骤S4中的重写包括join、聚合、函数、数据展示范围重写中的至少一种。
7.一种SQL高效计算和访问的组件,其特征在于:包括用于执行如权利要求1中步骤S1的SQL解析模块、用于执行如权利要求1中步骤S2的元数据管理模块、用于存储元数据的元数据存储模块、SQL重写模块、SQL执行模块和物化视图模块。
8.根据权利要求7所述的一种SQL高效计算和访问的组件,其特征在于:所述元数据管理模块包括与SQL解析模块匹配的元数据API接口和用于判断输入元数据是否与历史元数据匹配的元数据匹配模块。
9.一种SQL高效计算和访问的系统,其特征在于:包括客户端和数据查询装置,所述数据查询装置包括:
存储器,用于存储可执行指令、元数据及执行结果;
处理器,用于执行所述存储器中存储的可执行指令,实现如权利要求1所述的一种SQL高效计算和访问的方法。
10.根据权利要求9所述的一种SQL高效计算和访问的系统,其特征在于:所述客户端通过JDBC将SQL语句提交到数据查询装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910892123.3A CN110781212A (zh) | 2019-09-20 | 2019-09-20 | 一种sql高效计算和访问的方法、组件及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910892123.3A CN110781212A (zh) | 2019-09-20 | 2019-09-20 | 一种sql高效计算和访问的方法、组件及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110781212A true CN110781212A (zh) | 2020-02-11 |
Family
ID=69383663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910892123.3A Pending CN110781212A (zh) | 2019-09-20 | 2019-09-20 | 一种sql高效计算和访问的方法、组件及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110781212A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297212A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 一种基于物化视图的Spark查询方法、装置及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1384169A1 (en) * | 2001-04-27 | 2004-01-28 | Computer Associates Think, Inc. | System and method of optimising queries in a database |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
-
2019
- 2019-09-20 CN CN201910892123.3A patent/CN110781212A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1384169A1 (en) * | 2001-04-27 | 2004-01-28 | Computer Associates Think, Inc. | System and method of optimising queries in a database |
CN106934062A (zh) * | 2017-03-28 | 2017-07-07 | 广东工业大学 | 一种查询elasticsearch的实现方法及系统 |
CN110032575A (zh) * | 2019-04-15 | 2019-07-19 | 网易(杭州)网络有限公司 | 数据查询方法、装置、设备和存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113297212A (zh) * | 2021-04-28 | 2021-08-24 | 上海淇玥信息技术有限公司 | 一种基于物化视图的Spark查询方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107402989B (zh) | 一种全文检索建立的方法和分布式NewSQL数据库系统 | |
US10635486B2 (en) | Processing data sets in a big data repository | |
AU2018272840B2 (en) | Automated dependency analyzer for heterogeneously programmed data processing system | |
CN110908997B (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
CN109582691B (zh) | 用于控制数据查询的方法和装置 | |
CN108874924B (zh) | 搜索服务的创建方法、装置及计算机可读存储介质 | |
US20140006429A1 (en) | Generation of technical description of report from functional description of report | |
WO2016082468A1 (zh) | 数据图形化方法、装置及数据库服务器 | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US20210209098A1 (en) | Converting database language statements between dialects | |
US11687512B2 (en) | Index suggestion engine for relational databases | |
CN111241059B (zh) | 一种基于数据库的数据库优化方法及装置 | |
CN109408541A (zh) | 报表分解统计方法、系统、计算机设备和存储介质 | |
CN112328219A (zh) | 业务访问处理方法、装置、系统和计算机设备 | |
CN110781212A (zh) | 一种sql高效计算和访问的方法、组件及系统 | |
US10331894B2 (en) | Static program analysis in an object-relational mapping framework | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
CN115344639A (zh) | 区域企业的全景分析方法、装置、计算机设备及介质 | |
US6757671B1 (en) | Use of indices for queries with comparisons on a function | |
US10817554B2 (en) | Observation-based query interpretation model modification | |
CN112579705A (zh) | 元数据采集方法、装置、计算机设备和存储介质 | |
CN110764745B (zh) | 变量的传输和收集方法、装置及计算机可读存储介质 | |
CN117251472B (zh) | 跨源数据处理方法、装置、设备及存储介质 | |
CN117633863A (zh) | 一种数据库数据的脱敏方法、系统、装置及可读存储介质 | |
CN111897798A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200211 |
|
RJ01 | Rejection of invention patent application after publication |