分布式数据库动态过滤方法、装置、计算机设备及介质制造方法及图纸

技术编号:38162456 阅读:11 留言:0更新日期:2023-07-13 09:36
本发明专利技术实施例提供了一种分布式数据库动态过滤方法、装置、计算机设备及介质,涉及数据查询技术领域,该方法包括以下步骤:遍历查询计划树,找到HashJoin;在右表中识别需要生成过滤器的节点,并生成过滤器标识,过滤器标识记录在左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;在执行HashJoin的过程中根据左表记录的过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器发送和接收;使用过滤器进行过滤。由于该方案通过根据HashJoin的右表生成一个过滤条件,并作用于右表的过滤,提高了数据查询效率。提高了数据查询效率。提高了数据查询效率。

【技术实现步骤摘要】
分布式数据库动态过滤方法、装置、计算机设备及介质


[0001]本专利技术涉及数据查询
,特别涉及一种分布式数据库动态过滤方法、装置、计算机设备及介质。

技术介绍

[0002]PostgreSQL(对象关系型数据库管理系统)因为强大的功能、优异的性能和可靠性,成为了使用广泛的开源数据库,有非常好的生态。很多面向特定领域的数据库,以及分布式数据库都是基于它来实现的。比如 Greenplum这一开源数据库,是Gartner统计中,并列世界第三的数据仓库。虽然有很多新的分析型数据库,但它们的架构和PosgreSQL相差很多,以至于在很多功能的实现方法上有很大区别。
[0003]作为一项重要的加速技术,基于HashJoin的动态过滤有着较多的实现,但在PostgreSQL和Greenplum上尚未有公开实现。这主要是因为其进程模型,使得跨进程的通信更为复杂和容易出错,难度更大。以 Greenplum为例,它实现了单边的通信模式,即数据总是从查询计划的下游向上游进程发送数据,而上游仅在必要时发送极少量的控制消息。限于简陋的网络实现和测试的缺少,使得在分布式数据库上基于HashJoin的动态过滤实现难度很大。

技术实现思路

[0004]有鉴于此,本专利技术实施例提供了一种分布式数据库动态过滤方法,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。该方法包括:遍历分布式数据库的查询计划树,找到HashJoin;在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;使用过滤器对分布式数据库进行过滤。
[0005]本专利技术实施例还提供了一种分布式数据库动态过滤装置,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。该装置包括:查找模块,用于遍历分布式数据库的查询计划树,找到HashJoin;过滤器标识模块,用于在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;查询计划树分发模块,用于将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
过滤器生成模块,用于在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;过滤器下推模块,用于将生成的过滤器沿着HashJoin的右表的节点逐级下推;通信模块,用于建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;过滤模块,用于使用过滤器对分布式数据库进行过滤。
[0006]本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的分布式数据库动态过滤方法,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。
[0007]本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的分布式数据库动态过滤方法的计算机程序,以解决了现有技术在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。
[0008]与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:遍历查询计划树,找到HashJoin;在HashJoin的右表中识别需要生成过滤器的节点,并对节点生成过滤器标识,将过滤器标识记录在HashJoin的左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;执行HashJoin,并在执行HashJoin的过程中根据左表中的过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;使用过滤器对分布式数据库进行过滤。本申请根据HashJoin的右表生成过滤器,并作用于右表的过滤,由于这个过滤器会大幅减少数据量,从而大大加速Join的执行,可以大幅提高数据查询性能,实现了应用于分布式场景下的动态过滤,兼顾了简捷、高效和可靠的优点。
附图说明
[0009]为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0010]图1是本专利技术实施例提供的一种分布式数据库动态过滤方法的流程图;图2是本专利技术实施例提供的一种计算机设备的结构框图;图3是本专利技术实施例提供的一种分布式数据库动态过滤装置的结构框图。
具体实施方式
[0011]下面结合附图对本申请实施例进行详细描述。
[0012]以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下
所获得的所有其他实施例,都属于本申请保护的范围。
[0013]关于本申请的分布式数据库动态过滤方法中的名词解释:过滤器,也被称为下推判断器(push

down predicates),支持把数据过滤标准从客户端下推到服务器;查询计划树(Query Planner),也即SQL执行计划生成器;HashJoin,哈希连接,一种用于equi

join(而anti

join就是使用NOT IN时的join)的技术,以代替sort

merge和nested

loop join方式,提高效率。
[0014]在本专利技术实施例中,提供了一种分布式数据库动态过滤方法,如图1所示,该方法包括以下步骤:步骤S1、遍历分布式数据库的查询计划树,找到HashJoin。在生成物理计划后,遍历整棵查询计划树,找出HashJoin;步骤S2、在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;步骤S3、将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;步骤S4、在各服务器上执行Hash本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分布式数据库动态过滤方法,其特征在于,包括:遍历分布式数据库的查询计划树,找到HashJoin;在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;使用过滤器对分布式数据库进行过滤。2.如权利要求1所述分布式数据库动态过滤方法,其特征在于,所述在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,包括:在HashJoin的右表中,递归的遍历各个节点,查找需要使用过滤器的第一节点并生成过滤器标识,所述第一节点为scan节点或append节点;查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生成过滤器标识,所述第二节点为所述左表的上游节点中包含的聚集节点、跨网络的通信节点或者右表中具有过滤效果的节点,所述具有过滤效果的节点为右表的输出行数和join的结果行数的比值超过第一阈值的节点。3.如权利要求2所述分布式数据库动态过滤方法,其特征在于,所述在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器,包括:根据所述过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤器;若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该第二节点的记录行数,如果所述记录行数超过第二阈值,则将该第二节点的过滤器设置为空。4.如权利要求2所述分布式数据库动态过滤方法,其特征在于,所述将生成的过滤器沿着HashJoin的右表的节点逐级下推,包括:针对生成过滤器的第一节点,将过滤器信息存入该第一节点;当生成过滤器的第二节点为跨网络的通信节点时,将过滤器发送至与该通信节点相关联的节点;当生成过滤器的第二节点为除跨网络的通信节点...

【专利技术属性】
技术研发人员:王勇杜佳伦杨谕黔姚延栋高小明翁岩青于宁唐鹏洲王昊白洁
申请(专利权)人:北京四维纵横数据技术有限公司
类型:发明
国别省市:

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

1