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查询进行解析 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。