查询数据的方法、数据节点、分布式数据库、计算设备技术

技术编号:24331106 阅读:29 留言:0更新日期:2020-05-29 19:38
本申请提供查询数据的方法、数据节点、分布式数据库、计算设备和计算机程序产品。该分布式数据库包括第一数据节点和第二数据节点。在该方法中,该第一数据节点和该第二数据节点分别获取查询语句对应的执行计划,该查询语句包含NOT IN表达式。该第二数据节点基于自己获取的执行计划从本地的子内表所包含的多个元组中筛选出一个或多个目标元组,该目标元组在该NOT IN表达式指定的一个或多个列为NULL值。该第二数据节点将自己的目标元组发送给第一数据节点。该第一数据节点根据自己的子外表中的元组和该第二数据节点的目标元组处理该执行计划,以从自己的子外表获得满足该NOT IN表达式的元组。这样提高了查询效率。

Data query method, data node, distributed database and computing equipment

【技术实现步骤摘要】
查询数据的方法、数据节点、分布式数据库、计算设备
本申请涉及数据库领域,尤其涉及查询数据的方法、数据节点、分布式数据库、计算设备和计算机程序产品。
技术介绍
分布式数据库,支持SQL(StructuredQueryLanguage)语句的数据查询。该SQL语句可以包括NOTIN表达式。例如,该NOTIN表达式用于比较两张表中的指定列,一张表为待查询的外表,另一张表为用于与外表比较的内表;分布式数据库的所有数据节点(datanode,DN)会相互复制各自具有的内表的子内表,从而所有DN都具有整个内表的所有元组;然后,每个DN会将其具有的外表的子外表中的指定列与该DN上的整个外表按照NOTIN表达式进行比较,则比较结果为该外表中满足NOTIN表达式的元组。这种处理NOTIN表达式的解决方案,需要在所有DN之间相互复制各自具有的内表的子内表来形成完整的内表,该复制操作会占用大量带宽,并且,长时间的复制时间会影响查询效率。
技术实现思路
有鉴于此,本申请提供了一种查询数据的方法、数据节点、分布式数据库、计算设备和计算机程序产品,提高包含NOTIN表达式的SQL语句的查询效率。第一方面,本申请提供一种查询数据的方法。该方法应用于分布式数据库,分布式数据库包括协调节点和多个数据节点;该多个数据节点分别存储不同的子外表和不同的子内表;该多个数据节点中的一个或多个目标数据节点所存储的子内表具有目标元组,该目标元组在NOTIN表达式指定的一个或多个列为NULL值。在该方法中,该协调节点接收查询语句,该查询语句包含该NOTIN表达式。分布式数据库的所有数据节点分别获取该查询语句对应的执行计划。第一数据节点为分布式数据库的一个数据节点,分布式数据库的所有数据节点中除了第一数据节点的所有目标数据节点分别基于获取的执行计划从各自的子内表中筛选出目标元组。分布式数据库的所有数据节点中除了该第一数据节点的所有目标数据节点,分别将各自筛选出的目标元组向该第一数据节点发送;相应地,该第一数据节点接收分布式数据库的所有数据节点中除了该第一数据节点的所有目标数据节点分别发送的目标元组。这样,该第一数据节点可以基于该第一数据节点的子外表、该第一数据节点的子内表和该第一数据节点接收的目标元组处理该第一数据节点获取的执行计划,以便从该第一数据节点的子外表中选出满足该查询语句中的NOTIN表达式的元组。最后,该第一数据节点将选出的元组向该协调节点发送。这样,在第一数据节点处理包含NOTIN表达式的SQL语句时,仅需要将其它数据节点的目标元组复制到该第一数据节点,不需要复制其它数据节点的子外表中除了目标元组以外的其它元组,相对于现有技术需要将其它数据节点的子外表中的所有元组复制到第一数据节点,减少了复制所占用的带宽,也减少了第一数据节点反馈满足SQL语句的元组的时间,提高了查询效率。第一方面的一种可能设计,在该方法中,第一数据节点为分布式数据库的所有数据节点中的任意一个数据节点。这样,在分布式数据库的所有数据节点处理包含NOTIN表达式的SQL语句时,仅在所有数据节点之间复制目标元组,不需要复制所有数据节点的子外表中除了目标元组以外的其它元组,相对于现有技术需要在所有数据节点之间复制所有数据节点的子外表,减少了复制所占用的带宽,也提高了所有数据节点反馈满足SQL语句的元组的时间,提高了查询效率。第一方面的一种可能设计,在该方法中,在该第一数据节点为一个目标数据节点时,该第一数据节点基于该第一数据节点获取的执行计划从该第一数据节点的子内表中筛选出该第一数据节点的目标元组,该第一数据节点向分布式数据库的所有数据节点中除了该第一数据节点以外的其它数据节点发送该第一数据节点的目标元组。这样,每个数据节点都具有第一数据节点的目标元组。从而,每个数据节点均可以基于其具有的子外表和子内表以及其它数据节点的目标元组处理执行计划,以便从该数据节点的子外表中选出满足该查询语句中的NOTIN表达式的元组。每个数据节点均将选出的元组向该协调节点发送。第一方面的一种可能设计,在该方法中,该协调节点接收该分布式数据库的所有数据节点发送的满足该查询语句的元组,接收的所有满足该查询语句的元组为该查询语句的查询结果。这样,协调节点可以向用户呈现该查询结果,或者向应用或中间件反馈该查询结果。第一方面的一种可能设计,在该方法中,该协调节点按照相同的哈希算法将外表的元组和内表的元组分布到该分布式数据库的所有数据节点的子外表和子内表。具体地,该协调节点按照该哈希算法将外表的元组分布到该分布式数据库的所有数据节点的子外表;该协调节点按照相同的该哈希算法将内表的元组分布到该分布式数据库的所有数据节点的子内表。这样,同一数据节点上,将子外表中不包括NULL值的元组与子内表中不包括NULL值的元组进行比较时,才有可能匹配相同的元组。不同数据节点上,将一个数据节点的子外表中不包括NULL值的元组与另一个数据节点的子内表中不包括NULL值的元组进行比较时,不会匹配到相同的元组。这样,只需要在同一数据节点上进行非NULL值的元组匹配,就可以筛除子外表中比较结果为相同的元组,以便进一步针对目标元组(在待比较的至少一个列为NULL值)的场景从子外表中筛选出满足NOTIN的元组。第一方面的一种可能设计,在该方法中,该协调节点基于该查询语句生成执行计划,并将该执行计划发送至分布式数据库的每个数据节点。以便每个数据节点处理该执行计划。第一方面的一种可能设计,在该方法中,该协调节点向分布式数据库的每个数据节点发送该查询语句。分布式数据库的每个数据节点基于该查询语句生成各自的执行计划,每个数据节点处理各自的执行计划。第二方面,本申请提供一种协调节点。该协调节点包括的多个功能模块,用于实现第一方面或第一方面的任意可能设计提供的方法中由协调节点执行的不同步骤。第三方面,本申请提供一种数据节点。该数据节点包括的多个功能模块,用于实现第一方面或第一方面的任意可能设计提供的方法中由该数据节点执行的不同步骤。第四方面,本申请提供一种分布式数据库,该分布式数据库包括第一方面或第一方面的任意可能设计提供的协调节点和数据节点。第五方面,本申请提供一种计算设备,该计算设备包括处理器和存储器。该存储器存储计算机指令;该处理器执行该存储器存储的计算机指令,使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由协调节点执行的步骤,或者使得该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由数据节点执行的步骤,或者使得该计算设备部署第二方面提供的协调节点,或者使得该计算设备部署第三方面提供的数据节点。第六方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算设备的处理器执行该计算机指令时,该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由协调节点执行的步骤,或者该计算设备执行上述第一方面或者第一方面的各种可能设计提供的方法中由数据节点执行的步骤,或者该计本文档来自技高网...

【技术保护点】
1.一种查询数据的方法,其特征在于,所述方法应用于分布式数据库中,所述分布式数据库至少包括第一数据节点和第二数据节点;所述方法包括:/n所述第一数据节点和所述第二数据节点分别获取查询语句对应的执行计划,所述查询语句包含NOT IN表达式;/n基于所述执行计划,所述第二数据节点从本地的子内表所包含的多个元组中筛选出一个或多个目标元组,所述目标元组在所述NOT IN表达式指定的一个或多个列为NULL值;/n所述第二数据节点将所述第二数据节点的目标元组发送给所述第一数据节点;/n所述第一数据节点根据所述第一数据节点的子外表中的元组和所述第二数据节点的目标元组处理所述执行计划,以从所述第一数据节点的子外表获得满足所述NOT IN表达式的元组。/n

【技术特征摘要】
20191119 CN 20191113380141.一种查询数据的方法,其特征在于,所述方法应用于分布式数据库中,所述分布式数据库至少包括第一数据节点和第二数据节点;所述方法包括:
所述第一数据节点和所述第二数据节点分别获取查询语句对应的执行计划,所述查询语句包含NOTIN表达式;
基于所述执行计划,所述第二数据节点从本地的子内表所包含的多个元组中筛选出一个或多个目标元组,所述目标元组在所述NOTIN表达式指定的一个或多个列为NULL值;
所述第二数据节点将所述第二数据节点的目标元组发送给所述第一数据节点;
所述第一数据节点根据所述第一数据节点的子外表中的元组和所述第二数据节点的目标元组处理所述执行计划,以从所述第一数据节点的子外表获得满足所述NOTIN表达式的元组。


2.根据权利要求1所述的方法,其特征在于,所述分布式数据库还包括其它数据节点;
所述方法还包括:所述其它数据节点从本地的子内表所包含的多个元组中筛选出一个或多个目标元组,所述其它数据节点向所述第一数据节点发送所述其它数据节点的目标元组;
所述第一数据节点根据所述第一数据节点的子外表中的元组和所述第二数据节点的目标元组处理所述执行计划以从所述第一数据节点的子外表获得满足所述NOTIN表达式的元组,包括:所述第一数据节点根据所述第一数据节点的子外表中的元组和所述第二数据节点的目标元组以及所述其它数据节点的目标元组处理所述执行计划,以从所述第一数据节点的子外表获得满足所述NOTIN表达式的元组。


3.根据权利要求2所述的方法,其特征在于,所述第一数据节点根据所述第一数据节点的子外表中的元组和所述第二数据节点的目标元组以及所述其它数据节点的目标元组处理所述执行计划以从所述第一数据节点的子外表获得满足所述NOTIN表达式的元组,包括:
所述第一数据节点根据所述第一数据节点的子外表中的元组、所述第一数据节点的子内表中的元组、所述第二数据节点的目标元组和所述其它数据节点的目标元组处理所述执行计划,以从所述第一数据节点的子外表获得满足所述NOTIN表达式的元组。


4.根据权利要求1至3任一项所述的方法,其特征在于,所述分布式数据库还包括协调节点;所述方法还包括:
所述第一数据节点向所述协调节点发送满足所述NOTIN表达式的元组。


5.根据权利要求1至4中任一项所述的方法,其特征在于,所述分布式数据库包含外表和内表,所述外表包括多个子外表,所述内表包括多个子内表;所述多个子外表分别位于所述分布式数据库的不同数据节点上,所述多个子内表分别位于所述分布式数据库的不同数据节点上;所述方法还包括:
所述分布式数据库的...

【专利技术属性】
技术研发人员:周兆琦李茂增冯欢
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东;44

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

1