CN107273525A - 函数式查询方法及系统 - Google Patents
函数式查询方法及系统 Download PDFInfo
- Publication number
- CN107273525A CN107273525A CN201710488384.XA CN201710488384A CN107273525A CN 107273525 A CN107273525 A CN 107273525A CN 201710488384 A CN201710488384 A CN 201710488384A CN 107273525 A CN107273525 A CN 107273525A
- Authority
- CN
- China
- Prior art keywords
- query
- functional
- sql
- expression
- query statement
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种函数式查询方法及系统,所述函数式查询方法包括:S1、将SQL查询语句转换为函数式语言的表达语句;S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。本发明通过将SQL查询语句转换为函数式语言的表达语句来执行查询计划,从而实现了在多表连接情况下,实现数据的并发扫描和过滤,从而提高查询语句的执行效率。
Description
技术领域
本发明属于计算机的查询优化领域,尤其涉及一种函数式查询方法及系统。
背景技术
关系型数据库的查询计划以二叉树形式组织,从叶节点向上,通过各个节点的计算,最终汇总为查询结果,当涉及多表连接时,单线程进行数据扫描,在高性能的磁盘和CPU(中央处理器)配置下,无法充分利用硬件优势且执行效率太低。
发明内容
本发明要解决的技术问题是为了克服现有技术中在多表连接情况下,查询语句的执行效率较低的缺陷,提供一种函数式查询方法及系统。
本发明是通过下述技术方案来解决上述技术问题:
一种函数式查询方法,包括:
S1、将SQL(结构化查询语言)查询语句转换为函数式语言的表达语句;
S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。
较佳地,步骤S1包括:
S101、将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
S102、根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;
S103、根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数和函数式语言的执行操作并生成函数式语言的表达语句。
较佳地,所述函数式查询方法还包括:
S5、根据非查询指令的运算结果生成结果集。
一种函数式查询系统,包括:
表达转换模块,用于将SQL查询语句转换为函数式语言的表达语句;
指令生成模块,用于将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
查询模块,用于将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
执行模块,用于在线程上运行所述非查询指令,以对所述查询结果进行运算。
较佳地,表达转换模块包括:
语法处理模块,用于将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
解析模块,用于根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;
映射模块,用于根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数并生成函数式语言的表达语句。
较佳地,所述函数式查询系统还包括:
结果生成模块,用于根据非查询指令的运算结果生成结果集。
本发明的积极进步效果在于:将SQL查询语句转换为函数式语言的表达语句来执行查询计划,将函数式的表达语句进行编译生成多个查询指令和至少一个非查询指令,多表连接情况下,多个查询指令在多个线程上并行运行,以实现对多个列表进行并发扫描和过滤,从而提高查询语句的执行效率。
附图说明
图1为本发明较佳实施例的函数式查询方法的流程图。
图2为本发明较佳实施例的函数式查询系统的结构框图。
具体实施方式
下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实施例范围之中。
一种函数式查询方法,如图1所示,包括:
步骤101、将SQL查询语句转换为函数式语言的表达语句,如将SQL语句“SQL:select*from t1,t2,t3”转换为“cross_join table_scane(t1)table_scane(t2)table_scane(t3)”,t1、t2、t3均表示数据表。
其中,步骤101具体包括:
步骤1011、将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
步骤1012、根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作,该步骤用于检验数据库中是否存储该SQL查询语句中的语法元素和执行操作;
步骤1013、根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数和函数式语言的执行操作并生成函数式语言的表达语句,如将“select”转化为“cross join”;“*from t1”转化为“table_scane(t1)”。
步骤102、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
步骤103、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
步骤104、在线程上运行所述非查询指令,以对所述查询结果进行运算;
步骤105、根据非查询指令的运算结果生成结果集。
本实施例的函数式查询系统,如图2所示,包括表达转换模块1、指令生成模块2、查询模块3、执行模块4和结果生成模块5。
所述表达转换模块1,用于将SQL查询语句转换为函数式语言的表达语句,其中,所述表达转换模块具体包括:
语法处理模块11,用于将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
解析模块12,用于根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;
映射模块13,用于根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数并生成函数式语言的表达语句。
所述指令生成模块2,用于将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
所述查询模块3,用于将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
所述执行模块4,用于在线程上运行所述非查询指令,以对所述查询结果进行运算。
所述结果生成模块5,用于根据非查询指令的运算结果生成结果集。
本实施例将SQL查询语句转换为函数式语言的表达语句来执行查询计划,将函数式的表达语句进行编译生成多个查询指令,多表连接情况下,多个查询指令在多个线程上并行运行,以实现对多个列表进行并发扫描和过滤,从而提高查询语句的执行效率。
虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。
Claims (6)
1.一种函数式查询方法,其特征在于,包括:
S1、将SQL查询语句转换为函数式语言的表达语句;
S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。
2.如权利要求1所述的函数式查询方法,其特征在于,步骤S1包括:
S101、将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
S102、根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;
S103、根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数和函数式语言的执行操作并生成函数式语言的表达语句。
3.如权利要求1所述的函数式查询方法,其特征在于,所述函数式查询方法还包括:
S5、根据非查询指令的运算结果生成结果集。
4.一种函数式查询系统,其特征在于,包括:
表达转换模块,用于将SQL查询语句转换为函数式语言的表达语句;
指令生成模块,用于将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;
查询模块,用于将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;
执行模块,用于在线程上运行所述非查询指令,以对所述查询结果进行运算。
5.如权利要求4所述的函数式查询系统,其特征在于,表达转换模块包括:
语法处理模块,用于将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;
解析模块,用于根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;
映射模块,用于根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数并生成函数式语言的表达语句。
6.如权利要求4所述的函数式查询系统,其特征在于,所述函数式查询系统还包括:
结果生成模块,用于根据非查询指令的运算结果生成结果集。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710488384.XA CN107273525A (zh) | 2017-06-23 | 2017-06-23 | 函数式查询方法及系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710488384.XA CN107273525A (zh) | 2017-06-23 | 2017-06-23 | 函数式查询方法及系统 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN107273525A true CN107273525A (zh) | 2017-10-20 |
Family
ID=60069609
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201710488384.XA Pending CN107273525A (zh) | 2017-06-23 | 2017-06-23 | 函数式查询方法及系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN107273525A (zh) |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109947788A (zh) * | 2017-10-30 | 2019-06-28 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
| CN110008238A (zh) * | 2019-03-12 | 2019-07-12 | 北京东方国信科技股份有限公司 | Nlj改进表连接方法及基于该改进方法的数据查询方法 |
| CN111899886A (zh) * | 2020-06-28 | 2020-11-06 | 万达信息股份有限公司 | 一种病历调阅方法和系统 |
Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6112198A (en) * | 1997-06-30 | 2000-08-29 | International Business Machines Corporation | Optimization of data repartitioning during parallel query optimization |
| CN1588358A (zh) * | 2004-08-26 | 2005-03-02 | 陈红 | 对mdx多维数据查询语句的处理方法和系统 |
| CN1890643A (zh) * | 2003-12-02 | 2007-01-03 | 甲骨文国际公司 | 异构型计算机系统间的复杂计算 |
| CN101196890A (zh) * | 2006-12-08 | 2008-06-11 | 国际商业机器公司 | 聚合数据库运行时信息和分析应用性能的方法及装置 |
| CN101689196A (zh) * | 2007-06-12 | 2010-03-31 | 微软公司 | Discosql:结构化查询的分布式处理 |
| CN103064875A (zh) * | 2012-10-30 | 2013-04-24 | 中国标准化研究院 | 一种服务化空间数据分布式查询方法 |
| CN103136364A (zh) * | 2013-03-14 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 集群数据库系统及其数据查询处理方法 |
| CN103310011A (zh) * | 2013-07-02 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 集群数据库系统环境下的数据查询解析方法 |
| CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
| CN105009111A (zh) * | 2012-12-13 | 2015-10-28 | 微软技术许可有限责任公司 | 使用键值存储系统的分布式sql查询处理 |
| CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
| CN105574052A (zh) * | 2014-11-06 | 2016-05-11 | 中兴通讯股份有限公司 | 数据库查询方法及装置 |
-
2017
- 2017-06-23 CN CN201710488384.XA patent/CN107273525A/zh active Pending
Patent Citations (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6112198A (en) * | 1997-06-30 | 2000-08-29 | International Business Machines Corporation | Optimization of data repartitioning during parallel query optimization |
| CN1890643A (zh) * | 2003-12-02 | 2007-01-03 | 甲骨文国际公司 | 异构型计算机系统间的复杂计算 |
| CN1588358A (zh) * | 2004-08-26 | 2005-03-02 | 陈红 | 对mdx多维数据查询语句的处理方法和系统 |
| CN101196890A (zh) * | 2006-12-08 | 2008-06-11 | 国际商业机器公司 | 聚合数据库运行时信息和分析应用性能的方法及装置 |
| CN101689196A (zh) * | 2007-06-12 | 2010-03-31 | 微软公司 | Discosql:结构化查询的分布式处理 |
| CN103064875A (zh) * | 2012-10-30 | 2013-04-24 | 中国标准化研究院 | 一种服务化空间数据分布式查询方法 |
| CN105009111A (zh) * | 2012-12-13 | 2015-10-28 | 微软技术许可有限责任公司 | 使用键值存储系统的分布式sql查询处理 |
| CN103136364A (zh) * | 2013-03-14 | 2013-06-05 | 曙光信息产业(北京)有限公司 | 集群数据库系统及其数据查询处理方法 |
| CN103310011A (zh) * | 2013-07-02 | 2013-09-18 | 曙光信息产业(北京)有限公司 | 集群数据库系统环境下的数据查询解析方法 |
| CN104112008A (zh) * | 2014-07-16 | 2014-10-22 | 深圳市国泰安信息技术有限公司 | 一种多表数据关联查询优化方法和装置 |
| CN105574052A (zh) * | 2014-11-06 | 2016-05-11 | 中兴通讯股份有限公司 | 数据库查询方法及装置 |
| CN105279286A (zh) * | 2015-11-27 | 2016-01-27 | 陕西艾特信息化工程咨询有限责任公司 | 一种交互式大数据分析查询处理方法 |
Cited By (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN109947788A (zh) * | 2017-10-30 | 2019-06-28 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
| CN110008238A (zh) * | 2019-03-12 | 2019-07-12 | 北京东方国信科技股份有限公司 | Nlj改进表连接方法及基于该改进方法的数据查询方法 |
| CN110008238B (zh) * | 2019-03-12 | 2021-04-27 | 北京东方国信科技股份有限公司 | Nlj改进表连接方法及基于该改进方法的数据查询方法 |
| CN111899886A (zh) * | 2020-06-28 | 2020-11-06 | 万达信息股份有限公司 | 一种病历调阅方法和系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN103064875B (zh) | 一种服务化空间数据分布式查询方法 | |
| CN109614432B (zh) | 一种基于语法分析的获取数据血缘关系的系统及方法 | |
| CN102609451B (zh) | 面向流式数据处理的sql查询计划生成方法 | |
| CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
| KR101432700B1 (ko) | 쿼리의 최적화를 위한 방법 | |
| JP2005018776A5 (zh) | ||
| CN104504001B (zh) | 面向海量分布式关系数据库的游标构造方法 | |
| US10102248B2 (en) | Join type for optimizing database queries | |
| CN106610999A (zh) | 查询处理方法和装置 | |
| CN106934062A (zh) | 一种查询elasticsearch的实现方法及系统 | |
| CN107480198A (zh) | 一种分布式NewSQL数据库系统和全文检索方法 | |
| CN107169033A (zh) | 基于数据模式转换和并行框架的关系数据查询优化方法 | |
| CN103761080A (zh) | 一种基于SQL的MapReduce作业生成方法及系统 | |
| CN105138326B (zh) | 一种基于ibatis实现sql动态配置的方法及系统 | |
| CN101984439A (zh) | 基于子查询实现数据源xml查询系统优化的方法 | |
| CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
| Sellami et al. | Complex queries optimization and evaluation over relational and NoSQL data stores in cloud environments | |
| CN115544062A (zh) | 基于Apache Calcite数据血缘和影响分析的方法及系统 | |
| US20200320082A1 (en) | Advanced multiprovider optimization | |
| US10831784B2 (en) | Integration of relational calculation views into a relational engine | |
| CN107273525A (zh) | 函数式查询方法及系统 | |
| Binnig et al. | SQLScript: Efficiently analyzing big enterprise data in SAP HANA | |
| US10521431B2 (en) | Relational conversion of multiprovider operations in a calculation scenario for executing a query | |
| Xu et al. | Qmapper: a tool for sql optimization on hive using query rewriting | |
| Gao et al. | GLog: A high level graph analysis system using MapReduce |
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: 20171020 |
|
| RJ01 | Rejection of invention patent application after publication |