基于分布式数据库的查询方法及装置制造方法及图纸

技术编号:22641570 阅读:20 留言:0更新日期:2019-11-26 16:08
本发明专利技术实施例提供一种基于分布式数据库的查询方法及装置。其中,方法包括:对于包括若干个标量子查询的原始SQL查询语句,根据原始SQL查询语句的解析树,生成每一标量子查询对应的子执行计划和辅助执行代码;将各标量子查询对应的子执行计划和辅助执行代码,分别发送至相应的参与节点;获取包含标量子查询的各外层SQL语句的执行结果,根据包含标量子查询的各外层SQL语句的执行结果,获取原始SQL查询语句的执行结果。本发明专利技术实施例提供的基于分布式数据库的查询方法及装置,通过将各标量子查询对应的子执行计划和辅助执行代码发送至参与节点,将主节点的标量子查询的查询结果的替换分散到各参与节点,能简化查询步骤、提高查询效率。

Query method and device based on Distributed Database

The embodiment of the invention provides a query method and device based on a distributed database. Among them, the method includes: for the original SQL query statement including several scalar subqueries, according to the parse tree of the original SQL query statement, generate the sub execution plan and auxiliary execution code corresponding to each scalar quantum query; send the sub execution plan and auxiliary execution code corresponding to each scalar quantum query to the corresponding participating nodes respectively; obtain all the outer parts including the scalar quantum query According to the execution results of the outer SQL statements containing the standard quantum query, the execution results of the original SQL statements are obtained. The query method and device based on the distributed database provided by the embodiment of the invention can simplify the query steps and improve the query efficiency by sending the sub execution plan and auxiliary execution code corresponding to each standard quantum query to the participating nodes, and distributing the replacement of the query results of the scalar sub query of the main node to the participating nodes.

【技术实现步骤摘要】
基于分布式数据库的查询方法及装置
本专利技术涉及数据库
,更具体地,涉及一种基于分布式数据库的查询方法及装置。
技术介绍
结构化查询语言(SQL,StructuredQueryLanguage),是一种特殊的编程语言。结构化查询语言用于存储数据以及查询、更新、管理数据库系统。子查询,是指在SQL语句中的一种嵌套在另一个查询中的查询。该另一个查询被称为原始SQL查询。子查询可以根据原始SQL查询的表中的内容动态调整子查询本身的执行。这种技术让SQL语言更灵活和更有表达力。子查询返回一个集合。这个集合可以用在from/with语句中,也可以作为操作符的操作数,比如in/exists操作符/关键字。子查询返回的结果只包含一行数据,并且这行数据只有一列,则这个子查询为标量子查询。如果结果集为空,这个返回值当成null处理。标量子查询可以在标量上下文中进行替换。例如:原始SQL查询语句Selectxfromt1wherex>(selectmax(y)fromt2)中,因为有max函数存在,子查询selectmax(y)fromt2只返回一条数据,因此,selectmax(y)fromt2为标量子查询。子查询selectmax(y)fromt2返回t2表中的最大值t_max,然后原始SQL查询语句可以被替换成selectxfromt1wherex>t_max。在原始SQL查询中存在标量子查询时,现有基于分布式数据库的查询方法是,主节点针对每一个标量子查询,对原始SQL查询进行解析生成执行计划,将执行计划下发至执行该标量子查询的节点;执行该标量子查询的节点接收执行计划之后,执行该标量子查询,并向主节点返回查询的结果;主节点获得各标量子查询的结果并进行替换之后,再执行原始SQL查询,将原始SQL查询的执行计划的各子计划下发至对应的参与节点,各参与节点向主节点返回执行结果;主节点根据各参与节点返回的执行结果,获得原始SQL查询的结果。如果原始SQL查询中包含个数较多的标量子查询,例如原始SQL查询为select(selectidfromta)fromtbwhere(selectnamefromtc)=“oracle”andcasewhen(selecttele_feefromtd)>20then(selectmobile_feefromte)else(selectmes_feefromtf)end>(select50%*salaryfromtg),该原始SQL查询包括了6个标量子查询,主节点需要大量、重复性的执行语义的解析、执行计划的生成、查询结果的替换,执行的步骤比较复杂,导致查询的效率比较低。
技术实现思路
本专利技术实施例提供一种基于分布式数据库的查询方法及装置,用以解决或者至少部分地解决现有技术查询的效率低的缺陷。第一方面,本专利技术实施例提供一种基于分布式数据库的查询方法,包括:对于包括若干个标量子查询的原始SQL查询语句,根据所述原始SQL查询语句的解析树,生成每一所述标量子查询对应的子执行计划和辅助执行代码;将各所述标量子查询对应的子执行计划和辅助执行代码,分别发送至相应的参与节点;获取包含标量子查询的各外层SQL语句的执行结果,根据所述包含标量子查询的各外层SQL语句的执行结果,获取所述原始SQL查询语句的执行结果;其中,所述标量子查询对应的子执行计划,为用于执行包含所述标量子查询的外层SQL语句的子执行计划;所述标量子查询对应的辅助执行代码,用于获取所述标量子查询的查询结果。优选地,所述根据所述原始SQL查询语句的解析树,生成用于执行每一所述标量子查询对应的子执行计划和辅助执行代码之前,还包括:对所述原始SQL查询语句进行语义解析,生成所述原始SQL查询语句的解析树。优选地,所述对所述原始SQL查询语句进行语义解析之前,还包括:对所述原始SQL查询语句进行语法检查,确认所述原始SQL查询语句不存在语法错误。第二方面,本专利技术实施例提供一种基于分布式数据库的查询方法,包括:接收标量子查询对应的子执行计划和辅助执行代码;根据所述子执行计划,执行包含所述标量子查询的外层SQL语句,获取所述外层SQL语句的执行结果;其中,所述标量子查询对应的子执行计划,为用于执行包含标量子查询的外层SQL语句的子执行计划;所述标量子查询的查询结果,是根据所述辅助执行代码生成的。优选地,所述接收标量子查询对应的子执行计划和辅助执行代码,与所述获取所述外层SQL语句的执行结果之间,还包括:解析包含所述标量子查询的外层SQL语句的解析树,将所述标量子查询对应的辅助执行代码挂载至内存中的指定位置。优选地,所述根据所述子执行计划,执行包含所述标量子查询的外层SQL语句的具体步骤包括:执行辅助执行代码,获取所述标量子查询的查询结果,将所述标量子查询的查询结果存储于所述指定位置;根据所述子执行计划,执行所述外层SQL语句,若判断获知需要获取所述标量子查询的查询结果,则从所述指定位置获取所述标量子查询的查询结果;将所述外层SQL语句包含的所述标量子查询替换为所述标量子查询的查询结果,继续执行替换后的所述外层SQL语句。第三方面,本专利技术实施例提供一种基于分布式数据库的查询装置,包括:计划分解模块,用于对于包括若干个标量子查询的原始SQL查询语句,根据所述原始SQL查询语句的解析树,生成每一所述标量子查询对应的子执行计划和辅助执行代码;计划发送模块,用于将各所述标量子查询对应的子执行计划和辅助执行代码,分别发送至相应的参与节点;结果生成模块,用于获取包含标量子查询的各外层SQL语句的执行结果,根据所述包含标量子查询的各外层SQL语句的执行结果,获取所述原始SQL查询语句的执行结果,获取所述原始SQL查询语句的执行结果;其中,所述标量子查询对应的子执行计划,为用于执行包含标量子查询的外层SQL语句的子执行计划;所述标量子查询对应的辅助执行代码,用于获取所述标量子查询的查询结果。第四方面,本专利技术实施例提供一种基于分布式数据库的查询装置,包括:接收模块,用于接收标量子查询对应的子执行计划和辅助执行代码;执行模块,用于根据所述子执行计划,执行包含所述标量子查询的外层SQL语句,获取所述外层SQL语句的执行结果;其中,所述标量子查询对应的子执行计划,为用于执行包含所述标量子查询的外层SQL语句的子执行计划;所述标量子查询的查询结果,是根据所述辅助执行代码生成的。第五方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,执行所述程序时实现如第一方面或第二方面的各种可能的实现方式中任一种可能的实现方式所提供的基于分布式数据库的查询方法的步骤。第六方面,本专利技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本文档来自技高网
...

【技术保护点】
1.一种基于分布式数据库的查询方法,其特征在于,包括:/n对于包括若干个标量子查询的原始SQL查询语句,根据所述原始SQL查询语句的解析树,生成每一所述标量子查询对应的子执行计划和辅助执行代码;/n将各所述标量子查询对应的子执行计划和辅助执行代码,分别发送至相应的参与节点;/n获取包含标量子查询的各外层SQL语句的执行结果,根据所述包含标量子查询的各外层SQL语句的执行结果,获取所述原始SQL查询语句的执行结果;/n其中,所述标量子查询对应的子执行计划,为用于执行包含所述标量子查询的外层SQL语句的子执行计划;所述标量子查询对应的辅助执行代码,用于获取所述标量子查询的查询结果。/n

【技术特征摘要】
1.一种基于分布式数据库的查询方法,其特征在于,包括:
对于包括若干个标量子查询的原始SQL查询语句,根据所述原始SQL查询语句的解析树,生成每一所述标量子查询对应的子执行计划和辅助执行代码;
将各所述标量子查询对应的子执行计划和辅助执行代码,分别发送至相应的参与节点;
获取包含标量子查询的各外层SQL语句的执行结果,根据所述包含标量子查询的各外层SQL语句的执行结果,获取所述原始SQL查询语句的执行结果;
其中,所述标量子查询对应的子执行计划,为用于执行包含所述标量子查询的外层SQL语句的子执行计划;所述标量子查询对应的辅助执行代码,用于获取所述标量子查询的查询结果。


2.根据权利要求1所述的基于分布式数据库的查询方法,其特征在于,所述根据所述原始SQL查询语句的解析树,生成用于执行每一所述标量子查询对应的子执行计划和辅助执行代码之前,还包括:
对所述原始SQL查询语句进行语义解析,生成所述原始SQL查询语句的解析树。


3.根据权利要求2所述的基于分布式数据库的查询方法,其特征在于,所述对所述原始SQL查询语句进行语义解析之前,还包括:
对所述原始SQL查询语句进行语法检查,确认所述原始SQL查询语句不存在语法错误。


4.一种基于分布式数据库的查询方法,其特征在于,包括:
接收标量子查询对应的子执行计划和辅助执行代码;
根据所述子执行计划,执行包含所述标量子查询的外层SQL语句,获取所述外层SQL语句的执行结果;
其中,所述标量子查询对应的子执行计划,为用于执行包含标量子查询的外层SQL语句的子执行计划;所述标量子查询的查询结果,是根据所述辅助执行代码生成的。


5.根据权利要求4所述的基于分布式数据库的查询方法,其特征在于,所述接收标量子查询对应的子执行计划和辅助执行代码,与所述获取所述外层SQL语句的执行结果之间,还包括:
解析包含所述标量子查询的外层SQL语句的解析树,将所述标量子查询对应的辅助执行代码挂载至内存中的指定位置。


6.根据权利要求5所述的基于分布式数据库的查询方法,其特征在于,所述根据所述子执行计划,执行包含所述...

【专利技术属性】
技术研发人员:董隆超孔令雷周伟张娇娇
申请(专利权)人:北京东方国信科技股份有限公司
类型:发明
国别省市:北京;11

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

1