函数式查询方法及系统技术方案

技术编号:16427967 阅读:15 留言:0更新日期:2017-10-21 22:55
本发明专利技术公开了一种函数式查询方法及系统,所述函数式查询方法包括:S1、将SQL查询语句转换为函数式语言的表达语句;S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。本发明专利技术通过将SQL查询语句转换为函数式语言的表达语句来执行查询计划,从而实现了在多表连接情况下,实现数据的并发扫描和过滤,从而提高查询语句的执行效率。

Function query method and system

The invention discloses a method and a system for the function of query, including the function of query methods: S1, the expressions SQL query into functional languages; S2, expressions of functional language compiler to generate multiple query instructions and at least one non inquiry instruction, S3; the sending multiple query commands to multiple threads to run in parallel, respectively on more than a list of query and generate query results; S4, running the thread in the non query instructions to operate on the query results. The expressions SQL query into functional languages to query execution plan, so as to realize the multi table connection, realize concurrent scan data and filtering, so as to improve the query efficiency.

【技术实现步骤摘要】
函数式查询方法及系统
本专利技术属于计算机的查询优化领域,尤其涉及一种函数式查询方法及系统。
技术介绍
关系型数据库的查询计划以二叉树形式组织,从叶节点向上,通过各个节点的计算,最终汇总为查询结果,当涉及多表连接时,单线程进行数据扫描,在高性能的磁盘和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*fromt1,t2,t3”转换为“cross_jointable_scane(t1)table_scane(t2)table_scane(t3)”,t1、t2、t3均表示数据表。其中,步骤101具体包括:步骤1011、将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;步骤1012、根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作,该步骤用于检验数据库中是否存储该SQL查询语句中的语法元素和执行操作;步骤1013、根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数和函数式语言的执行操作并生成函数式语言的表达语句,如将“select”转化为“crossjoin”;“*fromt1”转化为“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查询语句转换为函数式语言的表达语句来执行查询计划,将函数式的表达语句进行编译生成多个查询指令,多表连接情况下,多个查询指令在多个线程上并行运行,以实现对多个列表进行并发扫描和过滤,从而提高查询语句的执行效率。虽然以上描述了本专利技术的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本专利技术的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本专利技术的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本专利技术的保护范围。本文档来自技高网...
函数式查询方法及系统

【技术保护点】
一种函数式查询方法,其特征在于,包括:S1、将SQL查询语句转换为函数式语言的表达语句;S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。

【技术特征摘要】
1.一种函数式查询方法,其特征在于,包括:S1、将SQL查询语句转换为函数式语言的表达语句;S2、将函数式语言的表达语句进行编译生成多个查询指令和至少一个非查询指令;S3、将所述多个查询指令发送到多个线程上并行运行,以分别对多个列表进行查询并生成查询结果;S4、在线程上运行所述非查询指令,以对所述查询结果进行运算。2.如权利要求1所述的函数式查询方法,其特征在于,步骤S1包括:S101、将SQL查询语句进行语法处理生成语法树,所述语法树包括语法元素和执行操作;S102、根据所述语法元素和所述执行操作查询数据字典获取对应的SQL数据库对象和SQL执行操作;S103、根据映射表将所述SQL数据库对象和所述SQL执行操作转化为对应的函数式语言的参数和函数式语言的执行操作并生成函数式语言的表达语句。3.如权利要求1所述的函数式查询方法,其特征在于,所述函数式查询方法还包括:S5、根据非查询指令的运算结果生成结果集。4.一种函数式查询系统,...

【专利技术属性】
技术研发人员:姜宇祥
申请(专利权)人:上海携程商务有限公司
类型:发明
国别省市:上海,31

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

1