CN113360507B - 用于数据库表连接的过滤器传输方法、装置及系统 - Google Patents
用于数据库表连接的过滤器传输方法、装置及系统 Download PDFInfo
- Publication number
- CN113360507B CN113360507B CN202110912299.8A CN202110912299A CN113360507B CN 113360507 B CN113360507 B CN 113360507B CN 202110912299 A CN202110912299 A CN 202110912299A CN 113360507 B CN113360507 B CN 113360507B
- Authority
- CN
- China
- Prior art keywords
- filter
- table storage
- storage node
- driven
- driven table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书的实施例提供用于分布式数据库的表连接的过滤器传输方法,表连接所涉及的被驱动表存储在至少两个被驱动表存储节点处。各个表连接节点将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个被驱动表存储节点分组通过对至少两个被驱动表存储节点进行节点分组得到。各个被驱动表存储节点对所获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。在同一被驱动表存储节点分组中的各个被驱动表存储节点之间共享各自的第一合并局部Bloom过滤器。各个被驱动表存储节点对所获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,得到完整Bloom过滤器。
Description
技术领域
本说明书实施例通常涉及数据库领域,尤其涉及用于分布式数据库的表连接的过滤器传输方法、过滤器传输装置以及分布式数据库系统。
背景技术
在数据库中进行表连接时,优化器会根据代价选择表连接过程中是否使用布隆过滤器(Bloom Filter)。在表连接过程具有较高的过滤性时,使用Bloom过滤器可以有效提升表连接性能。在分布式数据库中,需要按照分布式执行的方式执行表连接。在分布式执行中,Bloom过滤器需要广播给表连接节点右侧所有参与表连接的被驱动表存储节点,这些被驱动表存储节点部署在不同的设备处。在数据规模较大且数据库集群规模也较大时,将Bloom过滤器广播给表连接节点右侧所有参与表连接的被驱动表存储节点会占用大量网络带宽,从而造成Bloom过滤器的发送时间较长,最终导致表连接节点右侧参与表连接的被驱动表存储节点迟迟收不到Bloom过滤器,进而影响表连接执行性能。
发明内容
鉴于上述,本说明书实施例提供用于分布式数据库的表连接的过滤器传输方法、过滤器传输装置及分布式数据库系统。利用该过滤器传输方法及装置,通过基于分组传输来将表连接节点的Bloom Filter传输到各个被驱动表存储节点,可以有效地减少BloomFilter的网络传输数据量,降低Bloom Filter的传输耗时,从而提升表连接的执行性能。
根据本说明书实施例的一个方面,提供一种用于分布式数据库的表连接的过滤器传输方法,所述表连接的被驱动表存储在至少两个被驱动表存储节点处,所述Bloom过滤器传输方法由一个被驱动表存储节点执行,所述过滤器传输方法包括:基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,各个表连接节点的局部Bloom过滤器分别基于驱动表的部分行数据创建,所述分组传输包括第一分组传输,在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点;对基于所述分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器,所述其余被驱动表存储节点处的第一合并局部Bloom过滤器通过对基于分组传输获取的局部Bloom过滤器进行第一过滤器合并得到;以及对从所述其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
可选地,在上述方面的一个示例中,在第一分组传输时,所述各个表连接节点对各自的局部Bloom过滤器经过过滤器分割后得到Bloom过滤器分块,并且将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点。基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器可以包括:基于第一分组传输获取至少两个表连接节点中的部分表连接节点的Bloom过滤器分块;以及对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
可选地,在上述方面的一个示例中,所述分组传输还包括多层级第二分组传输,所述第一分组传输和所述多层级第二分组传输组成多层级级联传输。在每一层级第二分组传输时,所述过滤器传输方法可以包括:对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,其中,所述同一被驱动表存储节点分组包括最后层级第二分组传输时的同一被驱动表存储节点分组。
可选地,在上述方面的一个示例中,在每一层级第二分组传输时,在将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点之前,所述过滤器传输方法还可以包括:对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。此外,在每一层级第二分组传输时,在对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并之前,所述过滤器传输方法还可以包括:对从同一被驱动表存储节点获取的Bloom过滤器分块进行分块级联合并,得到从该被驱动表存储节点获取的局部Bloom过滤器。
可选地,在上述方面的一个示例中,所述过滤器分割包括下述过滤器分割中的一种:基于指定大小的过滤器分割,基于指定个数的过滤器分割,或者自适应过滤器分割。
可选地,在上述方面的一个示例中,所述多层级第二分组传输中的层级数目可以根据下述参数中的一个参数决定:所述多个被驱动表存储节点的节点递归分组的分组层次;指定第二分组传输层次;或者表连接代价。
可选地,在上述方面的一个示例中,所述被驱动表存储节点的节点分组可以基于
下述过程实现:基于给定函数确定出节点分组的分组数目,其中,N为被驱动表存储节
点的节点总数;以及为每个节点分组分配被驱动表存储节点。
可选地,在上述方面的一个示例中,为每个节点分组分配被驱动表存储节点可以包括:基于负载均衡策略来为每个节点分组分配被驱动表存储节点。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表连接的过滤器传输方法,所述表连接的被驱动表存储在至少两个被驱动表存储节点处,所述过滤器传输方法包括:经由各个表连接节点,将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由各个表连接节点分别基于驱动表的部分行数据创建,各个被驱动表存储节点分组通过对所述至少两个被驱动表存储节点进行节点分组得到;经由各个被驱动表存储节点,对所获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器;以及在各个被驱动表存储节点处,对从所述其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,得到完整Bloom过滤器。
可选地,在上述方面的一个示例中,经由各个表连接节点,将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点可以包括:经由各个表连接节点,对各自的局部Bloom过滤器进行过滤器分割后得到Bloom过滤器分块;以及经由各个表连接节点,将各自的Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。此外,在经由各个被驱动表存储节点,对所获取的局部Bloom过滤器进行第一过滤器合并之前,所述过滤器传输方法还可以包括:经由各个被驱动表存储节点,对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
可选地,在上述方面的一个示例中,在经由各个被驱动表存储节点对所获取的局部Bloom过滤器进行第一过滤器合并之前,所述过滤器传输方法还可以包括:经由各个被驱动表存储节点,对从表连接节点获取的局部Bloom过滤器进行第三过滤器合并;以及经由各个被驱动表存储节点,基于多层级分组传输来将各自经过第三过滤器合并得到的局部Bloom过滤器传输到对应的被驱动表存储节点。在每一层级分组传输时,所述过滤器传输方法可以包括:对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,其中,所述同一被驱动表存储节点分组包括最后层级分组传输时的同一被驱动表存储节点分组。
可选地,在上述方面的一个示例中,在每一层级分组传输时,在将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点之前,所述过滤器传输方法还可以包括:对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。在每一层级分组传输时,在对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并之前,所述过滤器传输方法还可以包括:对从同一被驱动表存储节点获取的Bloom过滤器分块进行分块级联合并,得到从该被驱动表存储节点获取的局部Bloom过滤器。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表连接的过滤器传输装置,所述表连接的被驱动表存储在多个被驱动表存储节点处,所述过滤器传输装置应用于被驱动表存储节点,所述过滤器传输装置可以包括:分组传输单元,基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,所述表连接节点的局部Bloom过滤器基于驱动表的部分行数据创建,所述分组传输包括第一分组传输,在第一分组传输时,各个被驱动表存储节点被分组为多个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点;过滤器合并单元,对基于所述分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;过滤器共享单元,与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器;以及完整过滤器生成单元,对所具有的第一合并局部Bloom过滤器进行第二合并,得到完整Bloom过滤器。
可选地,在上述方面的一个示例中,在第一分组传输时,所述各个表连接节点对各自的局部Bloom过滤器经过过滤器分割后得到Bloom过滤器分块,并且将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点。所述分组传输单元可以包括:过滤器接收模块,基于第一分组传输获取至少两个表连接节点中的对应表连接节点的Bloom过滤器分块;以及分块合并模块,对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
可选地,在上述方面的一个示例中,所述分组传输还包括多层级第二分组传输,所述第一分组传输和所述多层级第二分组传输组成多层级级联传输。所述分组传输单元可以包括:过滤器接收模块,获取至少两个表连接节点中的对应表连接节点基于第一分组传输所传输的局部Bloom过滤器,或者针对每一层级第二分组传输,从对应的被驱动表存储节点获取Bloom过滤器分块;过滤器合并模块,针对每一层级第二分组传输,对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及过滤器发送模块,针对每一层级第二分组传输,将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,其中,所述同一被驱动表存储节点分组包括最后层级第二分组传输时的同一被驱动表存储节点分组。
可选地,在上述方面的一个示例中,所述分组传输单元还可以包括:过滤器分割模块,针对每一层级第二分组传输,对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。所述过滤器发送模块在每一层级第二分组传输时,将每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点。此外,所述分组传输单元还可以包括:分块合并模块,针对每一层级第二分组传输,在基于分组传输得到Bloom过滤器分块后,对所得到的Bloom过滤器分块进行分块级联合并。
可选地,在上述方面的一个示例中,所述过滤器分割模块基于指定大小或指定个数对所述合并后的局部Bloom过滤器进行过滤器分割,或者对所述合并后的局部Bloom过滤器进行自适应过滤器分割。
可选地,在上述方面的一个示例中,所述多层级第二分组传输中的层级数目可以根据下述参数中的一个参数决定:所述多个被驱动表存储节点的节点递归分组的分组层次;指定第二分组传输层次;或者表连接代价。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表连接的过滤器传输设备,包括:至少两个第一过滤器传输装置,每个第一过滤器传输装置部署在一个表连接节点处,并且每个第一过滤器传输装置将对应表连接节点的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由该表连接节点基于驱动表的部分行数据创建,所述各个被驱动表存储节点分组通过对所述多个被驱动表存储节点进行节点分组得到;以及至少两个第二过滤器传输装置,每个第二过滤器传输装置部署在一个被驱动表存储节点处,并且包括如上所述的过滤器传输装置。
可选地,在上述方面的一个示例中,所述第一过滤器传输装置可以包括:过滤器分割单元,对所具有的局部Bloom过滤器进行过滤器分割后得到Bloom过滤器分块;以及过滤器传输单元,将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
根据本说明书的实施例的另一方面,提供一种分布式数据库系统,包括:至少两个驱动表存储节点,每个驱动表存储节点存储驱动表的部分行数据;至少两个表连接节点,每个表连接节点包括第一过滤器传输装置,所述第一过滤器传输装置将对应表连接节点的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由该表连接节点基于驱动表的部分行数据创建,所述各个被驱动表存储节点分组通过对所述多个被驱动表存储节点进行节点分组得到;以及至少两个被驱动表存储节点,每个驱动表存储节点存储被驱动表的部分行数据,并且包括如上所述的第二过滤器传输装置。
根据本说明书的实施例的另一方面,提供一种用于分布式数据库的表连接的过滤器传输装置,包括:至少一个处理器,与所述至少一个处理器耦合的存储器,以及存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求上所述的过滤器传输方法。
根据本说明书的实施例的另一方面,提供一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如上所述的过滤器传输方法。
根据本说明书的实施例的另一方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行来实现如上所述的过滤器传输方法。
附图说明
通过参照下面的附图,可以实现对于本说明书内容的本质和优点的进一步理解。在附图中,类似组件或特征可以具有相同的附图标记。
图1示出了分布式数据库的示例示意图。
图2示出了分布式数据库的哈希连接过程的一种实现过程的示例示意图。
图3示出了Bloom过滤器的创建过程的示例流程图。
图4A-图4C示出了图3的Bloom过滤器创建过程的各个阶段的Bloom过滤器的示例示意图。
图5示出了图2的表连接过程中的过滤器传输机制在不同规模的分布式数据库下的Bloom Filter网络传输数据量的比较图。
图6示出了Bloom过滤器的可分割性的示例示意图。
图7示出了Bloom过滤器的可合并性的示例示意图。
图8示出了根据本说明书的实施例的分布式数据库系统的示例示意图。
图9示出了根据本说明书的实施例的用于分布式数据库的表连接的过滤器传输方法的示例流程图。
图10示出了根据本说明书的实施例的过滤器传输方法中各节点之间的局部Bloom过滤器传输的示例示意图。
图11示出了根据本说明书的实施例的用于分布式数据库的表连接的过滤器传输装置的示例方框图。
图12示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输方法的示例流程图。
图13示出了根据本说明书的另一实施例的经过分块分割后的表连接处的Bloom过滤器的示例示意图。
图14示出了根据本说明书的另一实施例的各个被驱动表存储节点处接收的Bloom过滤器分块的示例示意图。
图15示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输装置的示例方框图。
图16示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输方法的示例流程图。
图17示出了根据本说明书的另一实施例的过滤器传输方法中各节点之间的局部Bloom 过滤器传输的示例示意图。
图18示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输装置的示例方框图。
图19示出了根据本说明书的实施例的基于计算机系统实现的用于分布式数据库的表连接的过滤器传输装置的示例示意图。
具体实施方式
现在将参考示例实施方式讨论本文描述的主题。应该理解,讨论这些实施方式只是为了使得本领域技术人员能够更好地理解从而实现本文描述的主题,并非是对权利要求书中所阐述的保护范围、适用性或者示例的限制。可以在不脱离本说明书内容的保护范围的情况下,对所讨论的元素的功能和排列进行改变。各个示例可以根据需要,省略、替代或者添加各种过程或组件。例如,所描述的方法可以按照与所描述的顺序不同的顺序来执行,以及各个步骤可以被添加、省略或者组合。另外,相对一些示例所描述的特征在其它例子中也可以进行组合。
如本文中使用的,术语“包括”及其变型表示开放的术语,含义是“包括但不限于”。术语“基于”表示“至少部分地基于”。术语“一个实施例”和“一实施例”表示“至少一个实施例”。术语“另一个实施例”表示“至少一个其他实施例”。术语“第一”、“第二”等可以指代不同的或相同的对象。下面可以包括其他的定义,无论是明确的还是隐含的。除非上下文中明确地指明,否则一个术语的定义在整个说明书中是一致的。
图1示出了分布式数据库100的示例示意图。
如图1所示,分布式数据库100包括4个存储节点A1到A4,每个存储节点A1-A4存储数据库中的部分数据。例如,在一个示例中,假设数据库包括4个数据表T1到T4,则每个数据表可以分别存储在4个存储节点中的一个存储节点上,例如,数据表T1到T4分别存储在存储节点A1到A4上。在另一示例中,假设数据库包括2个数据表T1和T2,则数据表T1的数据可以存储在存储节点A1和A2上,以及数据表T2的数据可以存储在存储节点A3和A4上。在本说明书中,术语“节点”可以与术语“设备”、“装置”互换使用。节点的示例例如可以包括但不限于终端设备、服务器设备等。
在数据库使用时,例如,对数据库进行多表查询时,通常会需要对数据库中的数据表进行表连接。术语“表连接”是指根据关联字段来将两个数据表组合成一个数据集。用于实现数据库的表连接的表连接方法的示例例如可以包括但不限于:哈希连接(Hsah Join)、嵌套循环连接(Nested Loops Join)和排序合并连接(Sort Merge Join)。在本说明书中,在对数据表A和数据表B进行表连接时,如果以数据表A为表连接操作的起点数据表,则数据表A称为驱动表,以及数据表B称为被驱动表。数据表A作为驱动表是指在进行表连接操作时,首先读取数据表A的一行数据,然后基于所读取的数据表A中的该行数据,遍历数据表B的所有行数据来进行行数据匹配,由此实现表连接。
哈希连接是在对两个数据表进行表连接时依靠哈希运算来得到连接结果集的表连接方法。嵌套循环连接是在对数据表进行表连接时依靠两层嵌套循环来得到连接结果集的表连接方法。排序合并连接是在对两个数据表进行表连接时使用排序操作和合并操作来得到连接结果集的表连接方法。
图2示出了分布式数据库的哈希连接过程的一种实现过程的示例示意图。哈希连接会涉及三种节点:驱动表数据存储节点、表连接节点和被驱动表数据存储节点。在哈希连接时,驱动表数据存储节点可以称为左侧节点,表连接节点可以称为中间节点,以及被驱动表数据存储节点可以称为右侧节点。
在图2的示例中,虽然仅仅示出了1个驱动表数据存储节点10、1个表连接节点20和1个被驱动表数据存储节点30,但是在分布式数据库中,哈希连接所涉及的驱动表分别存储在多个驱动表数据存储节点上,被驱动表分别存储在多个被驱动表数据存储节点上,并且需要采用多个表连接节点来进行哈希连接,从而分布式数据库的哈希连接涉及由多个驱动表数据存储节点、多个表连接节点和多个被驱动表数据存储节点组成的分布式数据库系统。
在图2的示例中,用于执行哈希连接的执行计划包括3DFO(数据流操作,Data FlowOperation)分布式执行计划。DFO代表分布式调度的最小子计划,该最小子计划由一系列算子组成,例如,Scan算子、Transmit算子、Receive算子、Filter Create算子、Filter Use算子和Hash Join算子。Scan 算子用于对表数据进行扫描,Transmit算子用于执行代表分布式节点之间的行数据发送,Receive算子用于执行分布式节点之间的行数据接收,FilterCreate算子用于创建Bloom过滤器,Filter Use算子用于使用Bloom过滤器进行行数据匹配,以及Hash Join算子用于执行表连接。
在图2的示例中,驱动表数据存储节点100、表连接节点200和被驱动表数据存储节点300分别执行子计划DFO1、DFO2和DFO3。DFO1包括Scan 算子和Transmit算子,分别对应于驱动表数据扫描201和驱动表数据发送202。DFO2包括Receive算子、Filter Create算子和Hash Join子,分别对应于驱动表数据接收203、被驱动表数据接口209、过滤器创建204和表连接210。DFO3包括Scan 算子、Filter Use算子和Transmit算子,分别对应于被驱动表数据扫描206、过滤器合并205、数据匹配207和被驱动表数据发送208。
具体地,在进行从驱动表T1到被驱动表T2的表连接时,在存储有驱动表T1的驱动表存储节点10处,调用Scan算子对驱动表进行扫描得到该驱动表的行数据,并经由Transmit算法将所扫描到的行数据(左侧行数据)发送给表连接节点20。
在表连接节点20经由Receive算子接收到驱动表的行数据后,将所接收的行数据发送给Filter Create算子,同时将所接收的行数据发送给Hash Join算子。
Filter Create算子基于所接收的行数据来创建Bloom过滤器。Bloom过滤器是一种二进制向量数据结构(例如,m维向量),被使用来快速检测一个元素是不是集合中的一个成员。
图3示出了Bloom过滤器的创建过程300的示例流程图。
如图3所示,在310,初始化一个m维向量,并且该m维向量中的每个bit位的取值为0,如图4A所示。
在320,针对所接收的驱动表中的每个行数据,使用K个独立哈希函数对该行数据中的用于表连接的连接列的值进行哈希计算得到K个哈希值。例如,假设使用3个哈希函数hash1( )、hash2( )和hash3( ),行数据的连接列的值为x,通过哈希计算后得到哈希值hash1(x)=8,hash2(x)=1以及hash3(x)=14。哈希值对应于m维向量中的位置。这里,连接列是用于表征关联字段(例如,属性字段)的列数据。
在330,将该K个哈希值映射到m维向量中的K个位置,并且将该K个位置赋值为1,如图4B所示。
假设表连接节点20从驱动表存储节点10接收到三行数据,并且该三行数据的连接列的值分别为a、b和c,则所创建的Bloom过滤器如图4C所示。
在对所有行数据都执行上述处理后,表连接节点20创建出与所接收的行数据对应的Bloom过滤器。然后,表连接节点20将所创建的Bloom过滤器发送给被驱动表存储节点30。在分布式数据库的情况下,存在多个表连接节点20参与表连接,每个表连接节点20从驱动表存储节点接收的驱动表数据仅仅是该驱动表数据的部分行数据,从而基于该部分行数据创建的Bloom过滤器是局部Bloom过滤器。在这种情况下,参与表连接的每个表连接节点20都需要将所创建的局部Bloom过滤器发送给每个被驱动表存储节点30。
此外,表连接节点20还使用所接收的行数据来创建出对应的哈希表。具体地,首先,创建一个size为N的空哈希表。接着,针对所接收的驱动表的每行数据,使用1个哈希函数来对该行数据中的连接列的值进行哈希计算得到哈希值。然后,将所计算出的哈希值作为key以及连接列的值作为value插入至哈希表中。这里,所使用的哈希函数与上面创建Bloom过滤器所使用的K个哈希函数可以不同,也可以与K个哈希函数中的一个哈希函数相同。
在驱动表存储节点10发送完所有行数据后,调度被驱动表存储节点30执行对应的子计划。在被驱动表存储节点30处,经由Scan算子扫描被驱动表得到被驱动表的行数据(右侧行数据),并且经由Filter Use算子循环监测是否已经从参与表连接的所有表连接节点接收到局部Bloom过滤器,直到已经收到所有局部Bloom过滤器。在接收到所有局部Bloom过滤器后,对所接收的局部Bloom过滤器进行合并得到完整Bloom过滤器。
在如上得到完整Bloom过滤器后,经由Filter Use算子使用所得到的完整Bloom过滤器来对所扫描出的被驱动表的行数据进行行数据匹配,由此得到匹配的行数据。具体地,使用上述K个哈希函数对该行数据中的连接列的值进行哈希计算得到K个哈希值,然后将该K个哈希值映射到Bloom过滤器中的不同位置,如果存在一个位置的值为0,则确定该行数据与驱动表中的行数据不匹配。如果所有位置的值都为1,则确定该行数据可能与驱动表中的行数据匹配。
然后,被驱动表存储节点30将所得到的被驱动表的可能匹配的行数据发送给表连接节点20。表连接节点200根据先前创建好的哈希表完成表连接。具体地,使用创建哈希表所使用的哈希函数来对被驱动表的可能匹配的行数据进行哈希计算。如果哈希表中存在与所计算出的哈希值一致的值,则认为该行数据与哈希表中的对应哈希值所对应的驱动表的行数据相关联,并且将该行数据与驱动表的关联行数据连接在一起,由此完成针对该行数据的表连接处理。
利用上述表连接方案,在分布式数据库系统的节点规模不大且哈希连接数据量不大的情况下,由于Bloom过滤器提前过滤掉被驱动表的部分行数据, 从而减少了表连接过程中的右侧数据的网络传输数据量,由此可以较好地提升表连接性能。在分布式数据库系统的节点规模较大且哈希连接数据量较大的情况下,随着节点规模变大,同等规模的数据在分布式数据库系统中打散后,每个节点所存储的数据量变少,换言之,被驱动表存储节点的数目变多,从而使得每个表连接节点所广播的局部Bloom过滤器的个数变多。由于所有局部Bloom过滤器必须要保证长度一致,并且局部Bloom过滤器的长度都是根据哈希连接的数据总量计算出,从而使得即使每个表连接节点在创建局部Bloom过滤器时所使用的驱动表数据减少,每个表连接节点所创建的局部Bloom过滤器的大小也不会变小,由此导致单个表连接节点所传输的Bloom过滤器的数据量随着节点规模增长而增长,从而导致Bloom过滤器的传输耗时增加,进而影响表连接性能。
图5示出了图2的表连接过程中的过滤器传输机制在不同规模的分布式数据库下的Bloom Filter网络传输数据量的比较图。
如图5所示,左图示出了3个表连接节点A1-C1和3个被驱动表存储节点A2-C2的示意图,以及右图示出了5个表连接节点A1-E1和5个被驱动表存储节点A2-E2的示意图。
在表连接节点使用Bloom Filter的场景中,各个表连接节点需要广播Bloom过滤器给所有被驱动表存储节点,对于单个表连接节点来说,广播Bloom过滤器的数据量随着被驱动表存取节点的节点数线性增长而线性增长。
例如,在哈希连接所涉及的两个数据表的数据总量不变的情况下,根据数据总量计算出的Bloom过滤器的大小为1G,在表连接节点和被驱动表存储节点的规模从三个节点变成五个节点时,每个表连接节点所广播的Bloom过滤器的数据量从3G变成了5G,以及每个被驱动表存储节点所接收的Bloom Filter的数据量也从3G变成了5G,会导致被驱动表存储节点收到全部Bloom Filter的时间延长。由于单个表连接节点的网络带宽始终具有上限,从而随着分布式数据库的节点规模逐渐增加,单个表连接节点的Bloom过滤器网络传输会成为表连接性能瓶颈。
通过分析Bloom过滤器可知,Bloom过滤器具有可分割性和可合并性。一个完整Bloom过滤器通常固化在一块连续内存中,在实现中,为了方便内存申请以及并发处理,可以将一个大Bloom过滤器如上分割成多块小Bloom过滤器,并且将每块小Bloom过滤器固化在小内存中拼凑而成。
图6示出了Bloom过滤器的可分割性的示例示意图。在图6的示例中,按照1MB的指定大小来对Bloom过滤器进行分割。在其它示例中,也可以采用其它分割策略来对Bloom过滤器进行过滤器分割。例如,可以按照指定个数来将Bloom过滤器分割为指定个数个Bloom过滤器分块(Bloom Filter Block)。或者,可以对Bloom过滤器进行自适应过滤器分割。例如,Bloom过滤器分割策略可以由传输时所使用线程资源以及网络带宽共同决定。假设线程数为N,网络带宽上限为M,则可以将单个Bloom过滤器分割为M / N个小Bloom过滤器。
在分布式数据库中,可以对基于多个局部数据生成的局部Bloom过滤器进行过滤器合并,由此得到基于更多局部数据生成的较大Bloom 过滤器,例如,完整Bloom过滤器。Bloom过滤器合并是指将两个Bloom过滤器按位进行或运算,如图7所示。由于Bloom过滤器合并是按位或运算,从而使得过滤器合并得到的Bloom过滤器的大小与合并之前的Bloom过滤器的大小相同。例如,假设2个进行Bloom过滤器合并的Bloom过滤器的大小为1G,则经过过滤器合并后得到的Bloom过滤器的大小仍然为1G。
考虑到Bloom过滤器合并的上述特性,提出了一种基于分组传输的过滤器传输方案。在该过滤器传输方案中,在表连接节点向被驱动表存储节点传输局部Bloom过滤器时,将各个被驱动表存储节点分组为至少两个被驱动表存储节点分组,并且各个表连接节点仅仅向各个被驱动表存储节点分组中的一个被驱动表存储节点传输各自的局部Bloom过滤器。各个被驱动表存储节点接收到局部Bloom过滤器后,对所接收的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。然后,在同一被驱动表存储节点分组中的各个被驱动表存储节点之间共享各自的第一合并局部Bloom过滤器,并且各个被驱动表存储节点对所获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
在上述过滤器传输方案中,利用Bloom过滤器的可合并性以及Bloom 过滤器合并后大小不变,通过对被驱动表存储节点进行分组,在表连接节点和被驱动表存储节点之间执行分组传输,并且在同一被驱动表存储节点分组内进行Bloom过滤器共享之前提前进行Bloom过滤器合并,可以减少Bloom过滤器的网络传输数据量,由此提升表连接性能。
下面将参考附图来详细描述根据本说明书的实施例的用于分布式数据库的表连接的过滤器传输方法、过滤器传输装置及分布式数据库系统。
图8示出了根据本说明书的实施例的分布式数据库系统800的示例示意图。
如图8所示,分布式数据库系统800包括多个分布式存储节点,每个分布式存储节点存储分布式数据库的部分数据。例如,在分布式数据库包括多个数据表的情况下,一个数据表可以存储在一个或多个分布式存储节点上。例如,在数据表较大的情况下,该数据表分布式地存储在多个分布式存储节点上,每个分布式存储节点存储该数据表的部分行数据。
在进行表连接时,分布式数据库中的部分节点充当驱动表存储节点,部分节点充当表连接节点,以及部分节点充当被驱动表存储节点。如图8所示,分布式数据库系统800包括2个驱动表存储节点810-1和810-2,2个表连接节点820-1和820-2以及2个被驱动表存储节点830-1和830-2。每个驱动表存储节点存储驱动表的部分行数据,每个被驱动表存储节点存储被驱动表的部分行数据,以及每个表连接节点执行驱动表和被驱动表之间的部分行数据之间的表连接。
在进行表连接,在各个驱动表存储节点810-1和810-2处,经由各自的驱动表数据扫描装置811分别扫描各自存储的驱动表数据来得到驱动表的部分行数据。然后,经由各自的驱动表数据发送装置812将所扫描出的驱动表的部分行数据发送到对应的表连接节点820-1和820-2。
在各个表连接节点820-1和820-2处,在经由驱动表数据接收装置821接收到驱动表的部分行数据后,过滤器创建装置822根据所接收的驱动表的部分行数据创建局部Bloom过滤器。在创建出局部Bloom过滤器后,各个表连接节点经由各自的第一过滤器传输装置823,与各个被驱动表存储节点830-1和830-2中的第二过滤器传输装置831协作来基于分组传输机制将各自创建的局部Bloom过滤器传输给被驱动表所对应的各个被驱动表存储节点830-1和830-2。在经过上述分组传输后,各个被驱动表存储节点得到完整Bloom过滤器。基于分组传输机制的过滤器传输过程将在后面参照附图详细说明。此外,在各个表连接节点820-1和820-2处,还使用所接收的驱动表的部分行数据创建对应的哈希表。哈希表的创建过程可以参考上面参照图2描述的哈希表创建过程。
在各个被驱动表存储节点830-1和830-2处,经由各自的被驱动表数据扫描装置832-分别扫描各自存储的被驱动表数据来得到被驱动表的部分行数据。在得到被驱动表的部分行数据后,经由数据匹配装置833来使用完整Bloom过滤器对所扫描出的被驱动表的部分行数据进行行数据匹配。关于基于Bloom过滤器的行数据匹配过程参考上面参照图2描述的行数据匹配过程。在数据匹配装置833确定出可能匹配的被驱动表的行数据后,经由被驱动表发送装置将所确定出的可能匹配的被驱动表的行数据发送给表连接节点。
在经由被驱动表数据接收装置824接收到可能匹配的被驱动表的行数据后,在各个表连接节点820-1和820-2处,经由表连接处理装置825根据先前创建好的哈希表完成表连接。具体的表连接过程可以参考上面参照图2描述的表连接过程。
图8的分布式数据库系统中仅仅示出了2个驱动表存储节点、2个表连接节点以及2个被驱动表存储节点,但是图8中的示例仅仅是例示性的,在本说明书的其它实施例中,分布式数据库系统可以具有更多的驱动表存储节点、更多的表连接节点以及更多的被驱动表存储节点。此外,在一些实施例中,驱动表存储节点和表连接节点可以采用同一存储节点实现。
图9示出了根据本说明书的实施例的用于分布式数据库的表连接的过滤器传输方法900的示例流程图。图9示出的实施例是基于两级分组传输的过滤器传输方案,在该过滤器传输方案中,各个表连接节点和各个被驱动表存储节点之间执行第一分组传输(第一级分组传输),以及在各个被驱动表存储节点分组之内执行组内共享(第二级分组传输)。
如图9所示,在910,各个表连接节点基于第一分组传输将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。各个表连接节点的局部Bloom过滤器基于所接收的驱动表的部分行数据创建。在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
在920,在各个被驱动表存储节点处,对基于第一分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。这里,第一过滤器合并采用图7中所示的过滤器合并方案,即,基于按位进行或运算的过滤器合并方案。
在930,在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器。
在940,在各个被驱动表存储节点处,对从同一被驱动表存储节点分组中的其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。这里,第二过滤器合并同样可以采用图7中所示的过滤器合并方案。
在一个示例中,被驱动表存储节点的节点分组过程可以包括:基于给定函数
来确定出节点分组的分组数目,其中,N为被驱动表存储节点的节点总数;并且为每个节点
分组分配被驱动表存储节点。在另一示例中,在为每个节点分组分配被驱动表存储节点时,
可以基于负载均衡策略来为每个节点分组分配被驱动表存储节点。
图10示出了根据本说明书的实施例的过滤器传输方法中各节点之间的局部Bloom过滤器传输的示例示意图。在图10的示例中,表连接过程所涉及的表连接节点包括9个表连接节点A1到J1,每个表连接节点处生成的局部Bloom过滤器的大小为1G。用于存储被驱动表的被驱动表存储节点包括9个被驱动表存储节点A2到J2,并且9个被驱动表存储节点A2到J2被分组为3组,其中,被驱动表存储节点A2到C2、被驱动表存储节点D2到F2以及被驱动表存储节点G2到J2被分别分组为第一到第三被驱动表存储节点分组。
如图10所示,在第一分组传输时,表连接节点A1节点、D1节点和G1节点的局部Bloom过滤器被传输到被驱动表存储节点A2、D2和G2,表连接节点B1节点、E1节点和H1节点的局部Bloom过滤器被传输到被驱动表存储节点B2、E2和H2,以及表连接节点C1节点、F1节点和J1节点的局部Bloom过滤器被传输到被驱动表存储节点C2、F2和J2。
在组内共享时,各个节点分组内的被驱动表存储节点所接收的局部Bloom过滤器经过过滤器合并后共享给该节点分组内的其余成员节点。例如,在第一被驱动表存储节点分组中,A2节点经过过滤器合并后的局部Bloom过滤器被共享给B2节点和C2节点,B2节点经过过滤器合并后的局部Bloom过滤器被共享给A2节点和C2节点,以及C2节点经过过滤器合并后的局部Bloom过滤器被共享给A2节点和B2节点。第二和第三被驱动表存储节点分组按照上述相同的机制实现组内共享。
图11示出了根据本说明书的实施例的用于分布式数据库的表连接的第二过滤器传输装置1100的示例方框图。图11中的第二过滤器传输装置1100应用于被驱动表存储节点。如图11所示,第二过滤器传输装置1100包括分组传输单元1110、过滤器合并单元1120、过滤器共享单元1130和完整过滤器生成单元1140。
分组传输单元1110被配置为基于第一分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,所述表连接节点的局部Bloom过滤器基于驱动表的部分行数据创建。在第一分组传输时,各个被驱动表存储节点被分组为多个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
过滤器合并单元1120被配置为对基于第一分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。
过滤器共享单元1130被配置为与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器。
完整过滤器生成单元1140被配置为对所具有的第一合并局部Bloom过滤器进行第二合并,得到完整Bloom过滤器。
此外,每个表连接节点包括第一过滤器传输装置(未示出)。各个表连接节点中的第一过滤器传输装置被配置为将所具有的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
从上面的描述可知,由于按位合并Bloom过滤器后Bloom过滤器的大小不变,从而使得在上述9个节点规模的Bloom过滤器传输方案中,分布式数据库系统仅仅需要发送1G *9 * 3 + 1G * 3 * 2 * 3 = 45G数据,而使用图5中示出的Bloom过滤器传输方案,分布式数据库系统需要发送1G * 9 * 9 = 81G数据。由此可见,根据本说明书的实施例的Bloom过滤器传输方案的网络传输数据量仅为图5中示出的方案的5 / 9。
理论上,在节点数为N数据均匀分布的数据库集群中,如果选择分组数为K且所有节点均匀分组,假设单个Bloom过滤器大小为1G,则使用传统方案广播Bloom过滤器需要传输的数据量为N * N G数据量,而使用根据本说明书的实施例的Bloom过滤器传输方案所传输的数据量为 N * K + (N * N - N) /K G,当K < N时,N * K + (N * N - N) /K <= N *N恒成立。
利用上述两级分组过滤器传输方案,通过将接收Bloom过滤器的被驱动表存储节点进行分组,并且在第一级传输时,各个表连接节点仅仅将各自创建的局部Bloom过滤器传输到各个被驱动表存储节点分组中的一个成员节点,并且在第二级传输之前时,各个被驱动表存储节点对所接收的局部Bloom过滤器进行过滤器合并,在第二级传输时,仅仅在各个节点分组内,各个成员节点彼此共享各自在第一级传输阶段接收后进行合并后的局部Bloom过滤器,从而减少广播Bloom Filter的网络传输数据量,进而提升表连接性能。
图12示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输方法1200的示例流程图。图12示出的实施例是图9中示出的实施例的修改例。
如图12所示,在1210,各个表连接节点对各自创建的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。图13示出了根据本说明书的另一实施例的经过分块分割后的表连接处的Bloom过滤器的示例示意图。经过Bloom过滤器分块后,每个Bloom过滤器被分割为多个Bloom过滤器分块,每个Bloom过滤器分块具有分块标识,该分块标识用于标识该Bloom过滤器分块在Bloom过滤器中的分块位置。
在1220,各个表连接节点基于第一分组传输将各自的局部Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器分块被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
图14示出了根据本说明书的另一实施例的各个被驱动表存储节点处接收的Bloom过滤器分块的示例示意图。
如图14所示,针对A1节点,Block1被传输给A2节点、D2节点和G2节点,Block2被传输给B2节点、E2节点和H2节点,Block3被传输给C2节点、F节点和J节点,Block4被传输给A2节点、D2节点和G2节点,Block5被传输给B2节点、E2节点和H2节点,Block6被传输给C2节点、F2节点和J2节点。对于B1节点,B1节点的传输和A1节点相同。即,Block1和Block4被传输给A2节点、D2节点和G2节点,Block2和Block5被传输给B2节点、E2节点和H2节点。Block3和Block6被传输给C2节点、F2节点和J2节点。其他节点以此类推。
在1230,在各个被驱动表存储节点处,对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。在本说明书中,所传输的Bloom过滤器分块具有分块标识,在进行分块级联合并时,针对所接收的各个Bloom过滤器分块,基于该Bloom过滤器分块的分块标识,将该Bloom过滤器分块放置在对应的分块位置上,由此完成分块级联合并。
在1240,在各个被驱动表存储节点处,对从对应的表连接节点接收的经过分块级联合并后的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。
在1250,在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器。
在1260,在各个被驱动表存储节点处,对从同一被驱动表存储节点分组中的其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
图15示出了根据本说明书的另一实施例的用于分布式数据库的表连接的第二过滤器传输装置1500的示例方框图。图15中的第二过滤器传输装置1500应用于被驱动表存储节点。如图15所示,第二过滤器传输装置1500包括分组传输单元1510、过滤器合并单元1520、过滤器共享单元1530和完整过滤器生成单元1540。
图15中示出的第二过滤器传输装置是对图11中示出的第二过滤器传输装置的修改例,过滤器合并单元1520、过滤器共享单元1530和完整过滤器生成单元1540的操作和结构与图11中的过滤器合并单元1120、过滤器共享单元1130和完整过滤器生成单元1140的操作和结构相同,在此不再描述。下面仅仅对存在不同的分组传输单元1510进行详细描述。
如图15所示,分组传输单元1510包括过滤器接收模块1511和分块合并模块1512。过滤器接收模块1511被配置为基于第一分组传输获取至少两个表连接节点中的对应表连接节点的Bloom过滤器分块。分块合并模块1512被配置为对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器对所述合并后的局部Bloom过滤器。
相应地,表连接节点处的第一过滤器传输装置还包括过滤器分割单元。过滤器分割单元对所具有的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。然后,第一过滤器传输装置的过滤器传输单元将Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
利用上述过滤器传输方案,利用Bloom过滤器的可分割性,通过将各个表连接节点发送给被驱动表存储节点的局部Bloom过滤器分割为更小的Bloom过滤器分块,并且基于第一分组传输机制来将Bloom过滤器分块传输到各个被驱动表存储节点,由于Bloom过滤器分割成更小的Bloom过滤器分块,发送时没有把Bloom过滤器分块发送给被驱动表存储节点分组中的所有被驱动表存储节点,而是每个分组里选一个被驱动表存储节点发送,虽然Bloom过滤器分割本身没有减少网络传输,但是相比发送全部节点分组成员减少了整体网络传输,从而可以提升内存使用效率以及更好地进行并发处理,由此提升表连接性能。
图16示出了根据本说明书的另一实施例的用于分布式数据库的表连接的过滤器传输方法1600的示例流程图。图16中示出的实施例是图9中示出的实施例的修改例。
如图16所示,在1610,各个表连接节点基于第一分组传输将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。各个表连接节点的局部Bloom过滤器基于所接收的驱动表的部分行数据创建。在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
在1620,各个被驱动表存储节点对从表连接节点获取的局部Bloom过滤器进行第三过滤器合并。这里,第三过滤器合并可以采用图7中描述的过滤器合并方式。
在1630,各个被驱动表存储节点基于多层级第二分组传输,将各自经过第三过滤器合并后的局部Bloom过滤器传输到对应的被驱动表存储节点。
多层级第二分组传输可以包括一个或多个层级的第二分组传输。在每一层级第二分组传输时,首先,对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器。然后,将当前层级的局部Bloom过滤器分别传输到与被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点。这里,第二被驱动表存储节点分组可以通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到。
在1640,在各个被驱动表存储节点处,对基于多层级第二分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器。
在1650,在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器。这里,同一被驱动表存储节点分组是指最后层级的第二分组传输时得到的同一被驱动表存储节点分组。
在1660,在各个被驱动表存储节点处,对从同一被驱动表存储节点分组中的其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
在一个示例中,多层级第二分组传输中的层级数目可以根据下述参数中的一个参数决定:多个被驱动表存储节点的节点递归分组的分组层次;指定第二分组传输层次;或者表连接代价。例如,在一个示例中,在每次完成分组传输后,判断该分组传输时的各个被驱动表存储节点分组是否还可以进行进一步的节点分组,例如假设被驱动表存储节点分组中的成员节点的个数超过2个,则认为可以进行进一步的节点分组,如此递归进行节点分组和对应的分组传输,直到各个被驱动表存储节点分组仅仅包括2个被驱动表存储节点。在另一示例中,可以提供指定分组传输层次,例如,2个第二分组传输层次,然后基于所提供的指定分组传输层次来实现多层级第二分组传输。在另一示例中,基于表连接代价来确定多层级第二分组传输中的层级数目。例如,参与连接前,可以估算出左侧驱动表行数,计算出驱动表的参与连接列的NDV(Number of distinct value不同值的数量)作为Bloom过滤器的长度L。然后,计算出对端需要接收Bloom过滤器的被驱动表存储节点的个数N,并且参与发送Bloom过滤器的被驱动表存储节点的个数为M,则L * N * M是分布式数据库系统中Bloom过滤器的传输总量。每多一个层级,则传输总量下降为F(L * N * M)。假设网络传输速度为V,如果F(L * N * M)大于V的10倍值,则增加一个层级,进一步降低网络传输量,由此变成F(F(L * N * M)),直到小于等于10V或者已经无法再分组后,由此确定出多层级第二分组传输中的层级数目。此外,也可以通过用户指定层级数目来确定多层级第二分组传输中的层级数目。
图17示出了根据本说明书的另一实施例的过滤器传输方法中各节点之间的局部Bloom过滤器传输的示例示意图。在图17的示例中,表连接节点包括8个表连接节点A1到H1,每个表连接节点处生成的局部Bloom过滤器的大小为1G。被驱动表存储节点包括8个被驱动表存储节点A2到H2。此外,多层级第二分组传输包括1级第二分组传输。
如图17所示,在第一分组传输时,8个被驱动表存储节点A2到H2被分组为两个节点分组,第一节点分组包括4个被驱动表存储节点A2到D2,以及第二节点分组包括4个被驱动表存储节点E2到H2。表连接节点A1节点和E1节点的局部Bloom过滤器被传输到被驱动表存储节点A2和E2,表连接节点B1节点和F1节点的局部Bloom过滤器被传输到被驱动表存储节点A2和F2,表连接节点C1节点和G1节点的局部Bloom过滤器被传输到被驱动表存储节点C2和G2,以及表连接节点D1节点和H1节点的局部Bloom过滤器被传输到被驱动表存储节点D2和H2。
在第二分组传输时,第一节点分组被进一步分组为第三节点分组和第四节点分组,其中,第三节点分组包括2个被驱动表存储节点A2到D2,以及第四节点分组包括2个被驱动表存储节点C2到D2。第二节点分组被进一步分组为第五节点分组和第六节点分组,其中,第五节点分组包括2个被驱动表存储节点E2到F2,以及第六节点分组包括2个被驱动表存储节点G2到H2。
在进行第二分组传输时,被驱动表存储节点A2节点和C2节点的局部Bloom过滤器经过过滤器合并后,被传输到被驱动表存储节点A2和C2。被驱动表存储节点B2节点和D2节点的局部Bloom过滤器经过过滤器合并后,被传输到被驱动表存储节点B2和D2。被驱动表存储节点E2节点和G2节点的局部Bloom过滤器经过过滤器合并后,被传输到被驱动表存储节点E2和G2。被驱动表存储节点F2节点和H2节点的局部Bloom过滤器经过过滤器合并后,被传输到被驱动表存储节点F2和H2。
在组内共享时,各个节点分组内的被驱动表存储节点所接收的局部Bloom过滤器经过过滤器合并后共享给该节点分组内的其余成员节点。例如,在第三被驱动表存储节点分组中,A2节点经过过滤器合并后的局部Bloom过滤器被共享给B2节点,B2节点经过过滤器合并后的局部Bloom过滤器被共享给A2节点。第四到第六被驱动表存储节点分组按照上述相同的机制实现组内共享。
图18示出了根据本说明书的另一实施例的用于分布式数据库的表连接的第二过滤器传输装置1800的示例方框图。图18中的第二过滤器传输装置1800应用于被驱动表存储节点。如图18所示,第二过滤器传输装置1800包括分组传输单元1810、过滤器合并单元1820、过滤器共享单元1830和完整过滤器生成单元1840。
图18中示出的第二过滤器传输装置是对图11中示出的第二过滤器传输装置的修改例,过滤器合并单元1820、过滤器共享单元1830和完整过滤器生成单元1840的操作和结构与图11中的过滤器合并单元1120、过滤器共享单元1130和完整过滤器生成单元1140的操作和结构相同,在此不再描述。下面仅仅对存在不同的分组传输单元1810进行详细描述。
如图18所示,分组传输单元1810包括过滤器接收模块1811、过滤器合并模块1813和过滤器发送模块1815。
过滤器接收模块1811被配置为获取至少两个表连接节点中的对应表连接节点基于第一分组传输所传输的局部Bloom过滤器。
针对每一层级第二分组传输,过滤器发送模块1815被配置为将当前层级的局部Bloom过滤器分别传输到与被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点。这里,第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到从对应的被驱动表存储节点获取Bloom过滤器分块。
针对每一层级第二分组传输,过滤器合并模块1813被配置为对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器。
此外,过滤器接收模块1811还被配置为针对每一层级第二分组传输,从对应的被驱动表存储节点获取Bloom过滤器分块。
利用上述过滤器传输方案,除了第一分组传输之前,还设置一层或多层第二分组传输,并且将第一分组传输和第二分组传输级联组成多层级分组级联传输方案,通过在中间层多次合并局部Bloom过滤器,相较于两层级联,可以进一步地减少Bloom过滤器的网络传输数据量。
要说明的是,还可以对图16中示出的实施例进行修改。例如,在一些实施例中,可以将各个表连接节点处的局部Bloom过滤器处的局部Bloom过滤器进行过滤器分割,然后在表连接节点和被驱动表存储节点之间传输Bloom过滤器分块之间传输Bloom过滤器分块,如图12所示。相应地,分组传输单元1810还包括分块合并模块(未示出)。所述分块合并模块对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
在一些实施例中,可以将各个被驱动表存储节点处的局部Bloom过滤器进行过滤器分割,然后在各个被驱动表存储节点之间传输Bloom过滤器分块。例如,在每一层级第二分组传输时,在将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点之前,过滤器传输方法还可以包括:对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。此外,在每一层级第二分组传输时,在对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并之前,过滤器传输方法还可以包括:对从同一被驱动表存储节点获取的Bloom过滤器分块进行分块级联合并,得到从该被驱动表存储节点获取的局部Bloom过滤器。
相应地,分组传输单元1810还可以包括过滤器分割模块和分块合并模块。过滤器分割模块被配置为针对每一层级第二分组传输,对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块。过滤器发送模块在每一层级第二分组传输时,将每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点。分块合并模块被配置为针对每一层级第二分组传输,在基于分组传输得到Bloom过滤器分块后,对所得到的Bloom过滤器分块进行分块级联合并。
如上参照图1到图18,对根据本说明书实施例的过滤器传输方法和过滤器传输装置进行了描述。上面的过滤器传输装置可以采用硬件实现,也可以采用软件或者硬件和软件的组合来实现。
图19示出了根据本说明书的实施例的基于计算机系统实现的用于分布式数据库的表连接的过滤器传输装置1900的示意图。如图19所示,过滤器传输装置1900可以包括至少一个处理器1910、存储器(例如,非易失性存储器)1920、内存1930和通信接口1940,并且至少一个处理器1910、存储器1920、内存1930和通信接口1940经由总线1960连接在一起。至少一个处理器1910执行在存储器中存储或编码的至少一个计算机可读指令(即,上述以软件形式实现的元素)。
在一个实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1910:基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,各个表连接节点的局部Bloom过滤器基于驱动表的部分行数据创建,所述分组传输包括第一分组传输,在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点;对基于分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器,所述其余被驱动表存储节点处的第一合并局部Bloom过滤器通过对基于分组传输获取的局部Bloom过滤器进行第一过滤器合并得到;以及对从所述其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
在另一实施例中,在存储器中存储计算机可执行指令,其当执行时使得至少一个处理器1910:经由各个表连接节点,将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由各个表连接节点基于驱动表的部分行数据创建,各个被驱动表存储节点分组通过对至少两个被驱动表存储节点进行节点分组得到;经由各个被驱动表存储节点,对所获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器;以及在各个被驱动表存储节点处,对从所述其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,得到完整Bloom过滤器。
应该理解,在存储器中存储的计算机可执行指令当执行时使得至少一个处理器1910进行本说明书的各个实施例中以上结合图1-图18描述的各种操作和功能。
根据一个实施例,提供了一种比如机器可读介质(例如,非暂时性机器可读介质)的程序产品。机器可读介质可以具有指令(即,上述以软件形式实现的元素),该指令当被机器执行时,使得机器执行本说明书的各个实施例中以上结合图1-图18描述的各种操作和功能。具体地,可以提供配有可读存储介质的系统或者装置,在该可读存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机或处理器读出并执行存储在该可读存储介质中的指令。
在这种情况下,从可读介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此机器可读代码和存储机器可读代码的可读存储介质构成了本发明的一部分。
可读存储介质的实施例包括软盘、硬盘、磁光盘、光盘(如CD-ROM、CD-R、CD-RW、DVD-ROM、DVD-RAM、DVD-RW、DVD-RW)、磁带、非易失性存储卡和ROM。可选择地,可以由通信网络从服务器计算机上或云上下载程序代码。
根据一个实施例,提供一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序当被处理器执行时,使得处理器执行本说明书的各个实施例中以上结合图1-图18描述的各种操作和功能。
本领域技术人员应当理解,上面公开的各个实施例可以在不偏离发明实质的情况下做出各种变形和修改。因此,本发明的保护范围应当由所附的权利要求书来限定。
需要说明的是,上述各流程和各系统结构图中不是所有的步骤和单元都是必须的,可以根据实际的需要忽略某些步骤或单元。各步骤的执行顺序不是固定的,可以根据需要进行确定。上述各实施例中描述的装置结构可以是物理结构,也可以是逻辑结构,即,有些单元可能由同一物理实体实现,或者,有些单元可能分由多个物理实体实现,或者,可以由多个独立设备中的某些部件共同实现。
以上各实施例中,硬件单元或模块可以通过机械方式或电气方式实现。例如,一个硬件单元、模块或处理器可以包括永久性专用的电路或逻辑(如专门的处理器,FPGA或ASIC)来完成相应操作。硬件单元或处理器还可以包括可编程逻辑或电路(如通用处理器或其它可编程处理器),可以由软件进行临时的设置以完成相应操作。具体的实现方式(机械方式、或专用的永久性电路、或者临时设置的电路)可以基于成本和时间上的考虑来确定。
上面结合附图阐述的具体实施方式描述了示例性实施例,但并不表示可以实现的或者落入权利要求书的保护范围的所有实施例。在整个本说明书中使用的术语“示例性”意味着“用作示例、实例或例示”,并不意味着比其它实施例“优选”或“具有优势”。出于提供对所描述技术的理解的目的,具体实施方式包括具体细节。然而,可以在没有这些具体细节的情况下实施这些技术。在一些实例中,为了避免对所描述的实施例的概念造成难以理解,公知的结构和装置以框图形式示出。
本公开内容的上述描述被提供来使得本领域任何普通技术人员能够实现或者使用本公开内容。对于本领域普通技术人员来说,对本公开内容进行的各种修改是显而易见的,并且,也可以在不脱离本公开内容的保护范围的情况下,将本文所定义的一般性原理应用于其它变型。因此,本公开内容并不限于本文所描述的示例和设计,而是与符合本文公开的原理和新颖性特征的最广范围相一致。
Claims (23)
1.一种用于分布式数据库的表连接的过滤器传输方法,所述表连接的被驱动表存储在至少两个被驱动表存储节点处,所述过滤器传输方法由一个被驱动表存储节点执行,所述过滤器传输方法包括:
基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,各个表连接节点的局部Bloom过滤器分别基于驱动表的部分行数据创建,所述分组传输包括第一分组传输,在第一分组传输时,各个被驱动表存储节点被分组为至少两个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点;
对基于所述分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;
与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器,所述其余被驱动表存储节点处的第一合并局部Bloom过滤器通过对基于分组传输获取的局部Bloom过滤器进行第一过滤器合并得到;以及
对从所述其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,生成完整Bloom过滤器。
2.如权利要求1所述的过滤器传输方法,其中,在第一分组传输时,各个表连接节点对各自的局部Bloom过滤器经过过滤器分割后得到Bloom过滤器分块,并且将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点,
基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器包括:
基于第一分组传输获取至少两个表连接节点中的部分表连接节点的Bloom过滤器分块;以及
对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
3.如权利要求1所述的过滤器传输方法,其中,所述分组传输还包括多层级第二分组传输,所述第一分组传输和所述多层级第二分组传输组成多层级级联传输,
在每一层级第二分组传输时,所述过滤器传输方法包括:
对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及
将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,
其中,所述同一被驱动表存储节点分组包括最后层级第二分组传输时的同一被驱动表存储节点分组。
4.如权利要求3所述的过滤器传输方法,其中,在每一层级第二分组传输时,在将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点之前,所述过滤器传输方法还包括:
对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块,
在每一层级第二分组传输时,在对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并之前,所述过滤器传输方法还包括:
对从同一被驱动表存储节点获取的Bloom过滤器分块进行分块级联合并,得到从该被驱动表存储节点获取的局部Bloom过滤器。
5.如权利要求2或4所述的过滤器传输方法,其中,所述过滤器分割包括下述过滤器分割中的一种:
基于指定大小的过滤器分割;
基于指定个数的过滤器分割;或者
自适应过滤器分割。
6.如权利要求3所述的过滤器传输方法,其中,所述多层级第二分组传输中的层级数目根据下述参数中的一个参数决定:
各个被驱动表存储节点的节点递归分组的分组层次;
指定第二分组传输层次;或者
表连接代价。
8.如权利要求7所述的过滤器传输方法,其中,为每个节点分组分配被驱动表存储节点包括:
基于负载均衡策略来为每个节点分组分配被驱动表存储节点。
9.一种用于分布式数据库的表连接的过滤器传输方法,所述表连接的被驱动表存储在至少两个被驱动表存储节点处,所述过滤器传输方法包括:
经由各个表连接节点,将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,所述表连接节点的局部Bloom过滤器由各个表连接节点分别基于驱动表的部分行数据创建,所述各个被驱动表存储节点分组通过对所述至少两个被驱动表存储节点进行节点分组得到;
经由各个被驱动表存储节点,对所获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;
在同一被驱动表存储节点分组中的各个被驱动表存储节点之间,彼此共享各自的第一合并局部Bloom过滤器;以及
在各个被驱动表存储节点处,对从其余被驱动表存储节点获取的第一合并局部Bloom过滤器以及本地具有的第一合并局部Bloom过滤器进行第二过滤器合并,得到完整Bloom过滤器。
10.如权利要求9所述的过滤器传输方法,其中,经由各个表连接节点,将各自的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点包括:
经由各个表连接节点,对各自的局部Bloom过滤器进行过滤器分割后得到Bloom过滤器分块;以及
经由各个表连接节点,将各自的Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,
在经由各个被驱动表存储节点,对所获取的局部Bloom过滤器进行第一过滤器合并之前,所述过滤器传输方法还包括:
经由各个被驱动表存储节点,对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
11.如权利要求9所述的过滤器传输方法,其中,在经由各个被驱动表存储节点对所获取的局部Bloom过滤器进行第一过滤器合并之前,所述过滤器传输方法还包括:
经由各个被驱动表存储节点,对从表连接节点获取的局部Bloom过滤器进行第三过滤器合并;以及
经由各个被驱动表存储节点,基于多层级分组传输来将各自经过第三过滤器合并得到的局部Bloom过滤器传输到对应的被驱动表存储节点,
在每一层级分组传输时,所述过滤器传输方法包括:
对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及
将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,
其中,所述同一被驱动表存储节点分组包括最后层级分组传输时的同一被驱动表存储节点分组。
12.如权利要求11所述的过滤器传输方法,其中,在每一层级分组传输时,在将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点之前,所述过滤器传输方法还包括:
对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块,
在每一层级分组传输时,在对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并之前,所述过滤器传输方法还包括:
对从同一被驱动表存储节点获取的Bloom过滤器分块进行分块级联合并,得到从该被驱动表存储节点获取的局部Bloom过滤器。
13.一种用于分布式数据库的表连接的过滤器传输装置,所述表连接的被驱动表存储在多个被驱动表存储节点处,所述过滤器传输装置应用于被驱动表存储节点,所述过滤器传输装置包括:
分组传输单元,基于分组传输获取至少两个表连接节点中的部分表连接节点的局部Bloom过滤器,各个表连接节点的局部Bloom过滤器分别基于驱动表的部分行数据创建,所述分组传输包括第一分组传输,在第一分组传输时,各个被驱动表存储节点被分组为多个被驱动表存储节点分组,并且各个表连接节点的局部Bloom过滤器被分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点;
过滤器合并单元,对基于所述分组传输获取的局部Bloom过滤器进行第一过滤器合并,得到第一合并局部Bloom过滤器;
过滤器共享单元,与同一被驱动表存储节点分组中的其余被驱动表存储节点,彼此共享各自的第一合并局部Bloom过滤器;以及
完整过滤器生成单元,对所具有的第一合并局部Bloom过滤器进行第二合并,得到完整Bloom过滤器。
14.如权利要求13所述的过滤器传输装置,其中,在第一分组传输时,各个表连接节点对各自的局部Bloom过滤器经过过滤器分割后得到Bloom过滤器分块,并且将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个对应的被驱动表存储节点分组中的一个被驱动表存储节点,
所述分组传输单元包括:
过滤器接收模块,基于第一分组传输获取至少两个表连接节点中的对应表连接节点的Bloom过滤器分块;以及
分块合并模块,对从同一表连接节点获取的Bloom过滤器分块进行分块级联合并,得到从该表连接节点获取的局部Bloom过滤器。
15.如权利要求13所述的过滤器传输装置,其中,所述分组传输还包括多层级第二分组传输,所述第一分组传输和所述多层级第二分组传输组成多层级级联传输,
所述分组传输单元包括:
过滤器接收模块,获取至少两个表连接节点中的对应表连接节点基于第一分组传输所传输的局部Bloom过滤器,或者针对每一层级第二分组传输,从对应的被驱动表存储节点获取Bloom过滤器分块;
过滤器合并模块,针对每一层级第二分组传输,对上一层级分组传输所获取的局部Bloom过滤器进行过滤器合并,得到当前层级的局部Bloom过滤器;以及
过滤器发送模块,针对每一层级第二分组传输,将当前层级的局部Bloom过滤器分别传输到与所述被驱动表存储节点在上一层级分组传输时所属的第一被驱动表存储节点分组对应的各个第二被驱动表存储节点分组中的一个被驱动表存储节点,所述第二被驱动表存储节点分组通过对上一层级分组传输所得到的各个第一被驱动表存储节点分组进一步分组得到,
其中,所述同一被驱动表存储节点分组包括最后层级第二分组传输时的同一被驱动表存储节点分组。
16.如权利要求15所述的过滤器传输装置,其中,所述分组传输单元还包括:
过滤器分割模块,针对每一层级第二分组传输,对当前层级的局部Bloom过滤器进行过滤器分割得到Bloom过滤器分块,
所述过滤器发送模块在每一层级第二分组传输时,将每个Bloom过滤器分块分别传输到各个对应的第二被驱动表存储节点分组中的一个被驱动表存储节点,
所述分组传输单元还包括:
分块合并模块,针对每一层级第二分组传输,在基于分组传输得到Bloom过滤器分块后,对所得到的Bloom过滤器分块进行分块级联合并。
17.如权利要求16所述的过滤器传输装置,其中,所述过滤器分割模块基于指定大小或指定个数对所述合并后的局部Bloom过滤器进行过滤器分割,或者对所述合并后的局部Bloom过滤器进行自适应过滤器分割。
18.如权利要求15所述的过滤器传输装置,其中,所述多层级第二分组传输中的层级数目根据下述参数中的一个参数决定:
各个被驱动表存储节点的节点递归分组的分组层次;
指定第二分组传输层次;或者
表连接代价。
19.一种用于分布式数据库的表连接的过滤器传输设备,包括:
至少两个第一过滤器传输装置,每个第一过滤器传输装置部署在一个表连接节点处,并且每个第一过滤器传输装置将对应表连接节点的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由该表连接节点基于驱动表的部分行数据创建,所述各个被驱动表存储节点分组通过对所述多个被驱动表存储节点进行节点分组得到;以及
至少两个第二过滤器传输装置,每个第二过滤器传输装置部署在一个被驱动表存储节点处,并且包括如权利要求13到18中任一所述的过滤器传输装置。
20.如权利要求19所述的过滤器传输设备,其中,所述第一过滤器传输装置包括:
过滤器分割单元,对所具有的局部Bloom过滤器进行过滤器分割后得到Bloom过滤器分块;以及
过滤器传输单元,将所述Bloom过滤器分块中的每个Bloom过滤器分块分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点。
21.一种分布式数据库系统,包括:
至少两个驱动表存储节点,每个驱动表存储节点存储驱动表的部分行数据;
至少两个表连接节点,每个表连接节点包括第一过滤器传输装置,所述第一过滤器传输装置将对应表连接节点的局部Bloom过滤器分别传输到各个被驱动表存储节点分组中的一个被驱动表存储节点,各个表连接节点的局部Bloom过滤器由该表连接节点基于驱动表的部分行数据创建,所述各个被驱动表存储节点分组通过对所述多个被驱动表存储节点进行节点分组得到;以及
至少两个被驱动表存储节点,每个驱动表存储节点存储被驱动表的部分行数据,并且包括如权利要求13到18中任一所述的过滤器传输装置。
22.一种用于分布式数据库的表连接的过滤器传输装置,包括:
至少一个处理器,
与所述至少一个处理器耦合的存储器,以及
存储在所述存储器中的计算机程序,所述至少一个处理器执行所述计算机程序来实现如权利要求1到8中任一所述的过滤器传输方法或者如权利要求9到12中任一所述的过滤器传输方法。
23.一种计算机可读存储介质,其存储有可执行指令,所述指令当被执行时使得处理器执行如权利要求1到8中任一所述的过滤器传输方法或者如权利要求9到12中任一所述的过滤器传输方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110912299.8A CN113360507B (zh) | 2021-08-10 | 2021-08-10 | 用于数据库表连接的过滤器传输方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110912299.8A CN113360507B (zh) | 2021-08-10 | 2021-08-10 | 用于数据库表连接的过滤器传输方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113360507A CN113360507A (zh) | 2021-09-07 |
CN113360507B true CN113360507B (zh) | 2021-12-07 |
Family
ID=77540900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110912299.8A Active CN113360507B (zh) | 2021-08-10 | 2021-08-10 | 用于数据库表连接的过滤器传输方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113360507B (zh) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9372892B1 (en) * | 2015-12-28 | 2016-06-21 | International Business Machines Corporation | Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database |
CN107944294A (zh) * | 2017-11-24 | 2018-04-20 | 云易天成(北京)安全科技开发有限公司 | 基于布隆过滤器过滤数据库数据的数据防泄漏方法及设备 |
CN109271408B (zh) * | 2018-08-31 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 一种分布式数据连接处理方法、装置、设备及存储介质 |
-
2021
- 2021-08-10 CN CN202110912299.8A patent/CN113360507B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113360507A (zh) | 2021-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Waldvogel | Fast longest prefix matching: algorithms, analysis, and applications | |
US8856203B1 (en) | System and method for algorithmic TCAM packet classification | |
CN104462260B (zh) | 一种基于k-核的社交网络中的社区搜索方法 | |
US10462062B2 (en) | Memory efficient packet classification method | |
CN104579941A (zh) | 一种OpenFlow交换机中的报文分类方法 | |
CN110226159B (zh) | 在网络交换机上执行数据库功能的方法 | |
CN104954270A (zh) | 用于在多包处理器联网系统中聚合硬件路由资源的技术 | |
CN110858823B (zh) | 一种数据包的分类方法、装置及计算机可读存储介质 | |
CN110874417B (zh) | 数据检索的方法和装置 | |
Norige et al. | A ternary unification framework for optimizing TCAM-based packet classification systems | |
Meiners et al. | Hardware based packet classification for high speed internet routers | |
CN110169019B (zh) | 数据库功能定义的网络交换机和数据库系统 | |
CN106780579A (zh) | 一种超大规模图像特征点匹配方法及系统 | |
CN113360507B (zh) | 用于数据库表连接的过滤器传输方法、装置及系统 | |
US20140156809A1 (en) | Data downloading method, terminal, server, and system | |
Song et al. | Packet classification using coarse-grained tuple spaces | |
CN110505322B (zh) | 一种ip地址段查找方法及装置 | |
Norige et al. | A ternary unification framework for optimizing TCAM-based packet classification systems | |
Patgiri et al. | Shed more light on bloom filter's variants | |
WO2021218854A1 (zh) | 报文分类方法及装置、电子设备、可读介质 | |
Gao et al. | FT-INDEX: A distributed indexing scheme for switch-centric cloud storage system | |
CN106294348B (zh) | 针对实时上报数据的实时排序方法和装置 | |
EP3793171B1 (en) | Message processing method, apparatus, and system | |
CN117009098A (zh) | 消息分发对象的确定方法、服务器和计算机可读存储介质 | |
CN106059914B (zh) | 一种基于单维最小化分组的不确定incast流量聚合方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20211112 Address after: Unit 02, 901, floor 9, unit 1, building 1, No. 1, Middle East Third Ring Road, Chaoyang District, Beijing 100020 Applicant after: Beijing aoxingbeisi Technology Co., Ltd Address before: 310000 801-10, Section B, floor 8, No. 556, Xixi Road, Xihu District, Hangzhou City, Zhejiang Province Applicant before: Ant Jinfu (Hangzhou) Network Technology Co., Ltd |
|
GR01 | Patent grant | ||
GR01 | Patent grant |