CN116401266B - 分布式数据库动态过滤方法、装置、计算机设备及介质 - Google Patents
分布式数据库动态过滤方法、装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN116401266B CN116401266B CN202310672531.4A CN202310672531A CN116401266B CN 116401266 B CN116401266 B CN 116401266B CN 202310672531 A CN202310672531 A CN 202310672531A CN 116401266 B CN116401266 B CN 116401266B
- Authority
- CN
- China
- Prior art keywords
- filter
- node
- hashjoin
- generating
- distributed database
- 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
- 238000001914 filtration Methods 0.000 title claims abstract description 69
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004891 communication Methods 0.000 claims abstract description 43
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000002776 aggregation Effects 0.000 claims description 13
- 238000004220 aggregation Methods 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 12
- 238000011144 upstream manufacturing Methods 0.000 claims description 11
- 230000005540 biological transmission Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 9
- 230000000694 effects Effects 0.000 claims description 9
- 238000009826 distribution Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/24—Querying
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
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)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种分布式数据库动态过滤方法、装置、计算机设备及介质,涉及数据查询技术领域,该方法包括以下步骤:遍历查询计划树,找到HashJoin;在右表中识别需要生成过滤器的节点,并生成过滤器标识,过滤器标识记录在左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;在执行HashJoin的过程中根据左表记录的过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器发送和接收;使用过滤器进行过滤。由于该方案通过根据HashJoin的右表生成一个过滤条件,并作用于右表的过滤,提高了数据查询效率。
Description
技术领域
本发明涉及数据查询技术领域,特别涉及一种分布式数据库动态过滤方法、装置、计算机设备及介质。
背景技术
PostgreSQL(对象关系型数据库管理系统)因为强大的功能、优异的性能和可靠性,成为了使用广泛的开源数据库,有非常好的生态。很多面向特定领域的数据库,以及分布式数据库都是基于它来实现的。比如 Greenplum这一开源数据库,是Gartner统计中,并列世界第三的数据仓库。虽然有很多新的分析型数据库,但它们的架构和PosgreSQL相差很多,以至于在很多功能的实现方法上有很大区别。
作为一项重要的加速技术,基于HashJoin的动态过滤有着较多的实现,但在PostgreSQL和Greenplum上尚未有公开实现。这主要是因为其进程模型,使得跨进程的通信更为复杂和容易出错,难度更大。以 Greenplum为例,它实现了单边的通信模式,即数据总是从查询计划的下游向上游进程发送数据,而上游仅在必要时发送极少量的控制消息。限于简陋的网络实现和测试的缺少,使得在分布式数据库上基于HashJoin的动态过滤实现难度很大。
发明内容
有鉴于此,本发明实施例提供了一种分布式数据库动态过滤方法,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。该方法包括:
遍历分布式数据库的查询计划树,找到HashJoin;
在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;
将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;
将生成的过滤器沿着HashJoin的右表的节点逐级下推;
建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
使用过滤器对分布式数据库进行过滤。
本发明实施例还提供了一种分布式数据库动态过滤装置,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。该装置包括:
查找模块,用于遍历分布式数据库的查询计划树,找到HashJoin;
过滤器标识模块,用于在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;
查询计划树分发模块,用于将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
过滤器生成模块,用于在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;
过滤器下推模块,用于将生成的过滤器沿着HashJoin的右表的节点逐级下推;
通信模块,用于建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
过滤模块,用于使用过滤器对分布式数据库进行过滤。
本发明实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的分布式数据库动态过滤方法,以解决了现有技术中在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的分布式数据库动态过滤方法的计算机程序,以解决了现有技术在分布式数据库上基于HashJoin的动态过滤实现难度大的技术问题。
与现有技术相比,本说明书实施例采用的上述至少一个技术方案能够达到的有益效果至少包括:遍历查询计划树,找到HashJoin;在HashJoin的右表中识别需要生成过滤器的节点,并对节点生成过滤器标识,将过滤器标识记录在HashJoin的左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;执行HashJoin,并在执行HashJoin的过程中根据左表中的过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;使用过滤器对分布式数据库进行过滤。本申请根据HashJoin的右表生成过滤器,并作用于右表的过滤,由于这个过滤器会大幅减少数据量,从而大大加速Join的执行,可以大幅提高数据查询性能,实现了应用于分布式场景下的动态过滤,兼顾了简捷、高效和可靠的优点。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种分布式数据库动态过滤方法的流程图;
图2是本发明实施例提供的一种计算机设备的结构框图;
图3是本发明实施例提供的一种分布式数据库动态过滤装置的结构框图。
具体实施方式
下面结合附图对本申请实施例进行详细描述。
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
关于本申请的分布式数据库动态过滤方法中的名词解释:
过滤器,也被称为下推判断器(push-down predicates),支持把数据过滤标准从客户端下推到服务器;
查询计划树(Query Planner),也即SQL执行计划生成器;
HashJoin,哈希连接,一种用于equi-join(而anti-join就是使用NOT IN时的join)的技术,以代替sort-merge和nested-loop join方式,提高效率。
在本发明实施例中,提供了一种分布式数据库动态过滤方法,如图1所示,该方法包括以下步骤:
步骤S1、遍历分布式数据库的查询计划树,找到HashJoin。在生成物理计划后,遍历整棵查询计划树,找出HashJoin;
步骤S2、在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;
步骤S3、将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
步骤S4、在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的过滤器标识生成过滤器;
步骤S5、将生成的过滤器沿着HashJoin的右表的节点逐级下推;
步骤S6、建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
步骤S7、使用过滤器对分布式数据库进行过滤。
本实施例的方法属于一种在分布式数据库动态生成过滤条件,并应用于数据扫描,从而大幅提高查询性能的方法。主要用于PostgreSQL及其衍生的数据库,比如Greenplum等。分布式的模式下,一个数据库分散在多台机器上,查询执行器会并行地在多台机器上同时执行,需要将hash节点所需要的数据重分布到相应节点上。
为了实现HashJoin,查询执行器会先扫描小表(即inner table,或者称为左表)建立hashtable,此阶段称为build阶段;然后遍历大表(即outer table,或者称为右表),计算每一条记录相应字段的hash值并根据join条件进行匹配,此阶段称为probe阶段。由于大表一般行数很多,表扫描、数据传输以及计算hash值、匹配过程都比较耗时。因此,本申请根据HashJoin的右表生成一个过滤器,并用于右表的过滤,由于这个过滤器会大幅减少数据量,从而大大加速join的执行,从而大幅提高数据查询性能。本申请提出的分布式场景下实现动态过滤的方法,可广泛应用于各种业务场景。
在具体实施时,所述在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,包括:
在HashJoin的右表中,递归的遍历,查找需要使用过滤器的第一节点并生成过滤器标识,所述第一节点为scan节点或append节点;
查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生成过滤器标识,所述第二节点包括所述左表的上游节点中包含的聚集节点、跨网络的通信节点或者右表的输出行数和join的结果行数的比值超过第一阈值的节点。
在本实施例中,通过对scan节点或append节点增加过滤器,可以有效减少数据量,从而大大加速Join的执行;进一步的,还增加了查找需要增加过滤器的节点,并对该类节点进行过滤器标识,可以进一步的对数据进行过滤,增加过滤效果,进而提高数据查询性能。
在具体实施时,在所述在HashJoin的右表中,递归的遍历,查找需要使用过滤器的第一节点并生成过滤器标识的步骤之前,还包括:
在生成一个记录识别过滤器信息的文本,并记录下HashJoin的左表(innertable)估计的数据行数,用于在聚集节点处判断是否需要增加过滤器标识。
在具体实施时,当所述左表的上游节点中包含聚集节点时,表明文本中记录的HashJoin的左表估计的数据行数可能存在较大误差,需要进行修正,因此对该节点生成过滤器标识时,也会标记该节点可能使用过滤器,并增加一个Intent标识,以便于在生成过滤器时,用于识别该节点并对该节点是否需要生成过滤器做进一步判断。
在具体实施时,所述在执行HashJoin的过程中根据所述左表中的记录生成过滤器,包括:
根据HashJoin的左表的过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤器;
若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该节点的记录行数,如果所述记录行数超过第二阈值,则将该节点的过滤器设置为空。
在具体实施时,对于聚集节点,如果节点上带有Intent标识,则边更新该节点的过滤器,边统计该节点记录的行数,如果记录的行数超过第二阈值,则将该节点的过滤器设置为空。需要说明的是,虽然PostgreSQL有着相当好的收集统计信息的能力,但对于聚集和多表join而言,估计数据仍然会存在不准确的情况(即所述记录行数超过第二阈值)。因此,在本实施例中,在遇到统计不准时选择取消过滤(即将该节点的过滤器设置为空),而非继续执行,从而使得即便过滤器不够有效,也不会显著增加查询的执行时间。
在具体实施时,在生成过滤器标识的过程中,若所述第二节点为跨网络的通信节点,则标记该节点的过滤器为全局过滤器。全局过滤器是指每个节点只能生成过滤器的一部分,需要将过滤器合并起来并投放到所有其他节点上来使用。
在具体实施时,所述将生成的过滤器沿着HashJoin的右表的节点逐级下推,包括:
当生成过滤器的节点为第一节点时,将过滤器信息存入该节点;
当生成过滤器的节点为跨网络的通信节点时,将过滤器发送至与该通信节点相关联的节点;
当生成过滤器的节点为除第一节点和跨网络的通信节点之外的其他节点时,将过滤器递归的传递至下一节点。
在具体实施时,当生成过滤器的节点为除第一节点和跨网络的通信节点之外的其他节点时,将过滤器递归的传递下去,并根据引用关系,解出用于关联操作的变量在Scan节点中的位置。变量相当于节点所表示的记录中的一个字段。同一个字段经过层层映射后,在不同节点上可能处于不同的位置。因此需要根据引用关系来递归的找出Scan节点上用于关联的变量所处的位置。
具体实施时,建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收,包括:
当过滤器发送端启动时建立和过滤器接收端的通信链路;
由过滤器发送端依次向所有过滤器接收端发送该过滤器发送端对应的过滤器;
每个过滤器接收端接收到所有过滤器发送端发送的过滤器后,组合为一个完整的过滤器;若所述过滤器接收端接收到空过滤器,则组合过滤器时将该空过滤器舍弃。
在本实施例中,为了实现反向通信,在原有的单向通信基础上增加了一组反向数据发送/接收buffer,以使得在链接信息建立过程中,过滤器发送进程在启动时就已经建立了和目标节点间(过滤器接收端)的通信链路;在UDP模式下,如果没有反向建立链路,则于数据的发送进程(过滤器的接收进程)先向过滤器的发送进程建立链接。在过滤器的发送过程,由过滤器发送进程依次向所有进程发送自有的过滤器部分,如果过滤器本身较大,可以拆成若干个小的分片来发送。在过滤器的接收过程,使用者(过滤器接收端)从收到的查询计划树中知道自身需要等待全局的过滤器,因此,它从各个发送者(过滤器发送端)收到过滤器后,组合成一个完整的过滤器。如果收到某一个或某几个过滤器进程发送的空过滤器,说明过滤器不够有效,视作无效过滤器,可舍弃该空过滤器。从而使得即便过滤器不够有效,也不会显著增加查询的执行时间。
具体实施时,在所述使用过滤器对分布式数据库进行过滤之前,所述方法还包括:当所述第一节点为append节点时,在该append节点之后将生成的过滤器沿着HashJoin的右表的节点进行二次下推。在本实施例中,如果目标节点是append节点,说明下面还会有具体的scan节点使用该过滤器,则采取类似步骤S5的下推。由于SQL具有复杂的递归模式,第一次下推只能到将过滤器推送到append节点,主要解决跨网络的全局下推。而append节点下面仍然可能是复杂的子查询,仍然需要进行一次下推,才能将过滤器推送到scan节点。
具体实施时,在使用过滤器对分布式数据库进行过滤的过程中,scan节点先采用动态生成的过滤器对数据进行初筛,然后再采取其他的条件对数据进行过滤。
具体实施时,过滤器包括但不限于bit-vector过滤器(如bloom filter)、min-max过滤器和IN过滤器。bit-vector过滤器是一种查询优化技术,在HashJoin分布式场景下能加快数据的查询,例如bloom filter(布隆过滤器),是一种二进制矢量数据结构,它具有空间和时间效率,被用来检测一个元素是不是集合中的一个成员。min-max过滤器是用于对一维或多维数据进行滤波的算法,滤波的结果为原数据中对应位置领域r内的最小(最大)值。IN过滤器,例如,select * from foo where key in (10, 100)。
本申请的动态过滤方法是针对PostgreSQL系列的分布式数据库,在分布式的模式下,一个数据库分散在多台机器上,查询执行器会并行地在多台机器上同时执行,需要将hash节点所需要的数据重分布到相应节点上。全局过滤器是指每个节点只能生成一部分的过滤器,需要将过滤器合并起来并投放到所有其他节点上来使用。本申请的这种跨节点的过滤器实现方式包括以下几个特点:
1)采用分布式中介节点,未采用集中式中介节点。集中式中介节点即所有节点将过滤器发送到某一节点,由该节点统一处理后投递到所有使用过滤器的节点,分布式中介节点即生成过滤器的进程和使用者直接通信,采用分布式中介节点减少了通信的环节,提高性能;也避免使用中心化进程,从而减少了系统的复杂度,提高了鲁棒性。
2)采用过滤器同步发送,未采用过滤器异步发送。同步发送指使用者要等到所有过滤器的生成者将所有消息发完后,再执行;异步发送即可以先执行,而异步接收过滤器。异步执行虽然可以稍早一点执行,但它需要在处理数据传送的同时,还要同时处理过滤器消息,这使得网络处理的复杂度比单边通信高很多。因此,本申请采用过滤器同步发送,既简单,又可靠。
3)采用估计数据统计不准时取消执行。虽然 PostgreSQL有着相当好的收集统计信息的能力,但对于聚集和多表join而言,估计数据仍然会存在很大误差,因此,当估计数据统计不准时取消执行,从而使得即便过滤器不够有效,也不会显著增加查询的执行时间。
在本实施例中,提供了一种计算机设备,如图2所示,包括存储器201、处理器202及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意的分布式数据库动态过滤方法。
具体的,该计算机设备可以是计算机终端、服务器或者类似的运算装置。
在本实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述任意的分布式数据库动态过滤方法的计算机程序。
具体的,计算机可读存储介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质的例子包括,但不限于相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪存储器或其他存储器技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读存储介质不包括暂存计算机可读媒体(transitory media),如调制的数据信号和载波。
基于同一发明构思,本发明实施例中还提供了一种分布式数据库动态过滤装置,如下面的实施例所述。由于分布式数据库动态过滤装置解决问题的原理与分布式数据库动态过滤方法相似,因此分布式数据库动态过滤装置的实施可以参见分布式数据库动态过滤方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是本发明实施例的分布式数据库动态过滤装置的一种结构框图,如图3所示,包括:查找模块301、过滤器标识模块302、查询计划树分发模块303、过滤器生成模块304、过滤器下推模块305、通信模块306和过滤模块307,下面对该结构进行说明。
查找模块301,用于分布式数据库的遍历查询计划树,找到HashJoin;
过滤器标识模块302,用于在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;
查询计划树分发模块303,用于将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
过滤器生成模块304,用于在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;
过滤器下推模块305,用于将生成的过滤器沿着HashJoin的右表的节点逐级下推;
通信模块306,用于建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
过滤模块307,用于使用过滤器对分布式数据库进行过滤。
具体实施时,过滤器标识模块302,还用于在HashJoin的右表中,递归的遍历各个节点,查找需要使用过滤器的第一节点并生成过滤器标识,所述第一节点为scan节点或append节点;
查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生成过滤器标识,所述第二节点为所述左表的上游节点中包含的聚集节点、跨网络的通信节点或者右表中具有过滤效果的节点,所述具有过滤效果的节点为右表的输出行数和join的结果行数的比值超过第一阈值的节点。
具体实施时,过滤器生成模块304,还用于根据所述过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤器;
若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该第二节点的记录行数,如果所述记录行数超过第二阈值,则将该第二节点的过滤器设置为空。
具体实施时,过滤器下推模块305,还用于针对生成过滤器的第一节点,将过滤器信息存入该第一节点;
当生成过滤器的第二节点为跨网络的通信节点时,将过滤器发送至与该通信节点相关联的节点;
当生成过滤器的第二节点为除跨网络的通信节点之外的其他节点时,将过滤器递归的传递至下一节点。
具体实施时,通信模块306,还用于当过滤器发送端启动时建立和过滤器接收端的通信链路;
由过滤器发送端依次向所有过滤器接收端发送该过滤器发送端对应的过滤器;
每个过滤器接收端接收到所有过滤器发送端发送的过滤器后,将接收的过滤器组合为一个完整的过滤器;若所述过滤器接收端接收到空过滤器,则组合过滤器时将该空过滤器舍弃。
具体实施时,所述装置还包括二次下推模块,用于当所述第一节点为append节点时,在该append节点之后将生成的过滤器沿着HashJoin的右表的节点进行二次下推。
具体实施时,过滤器标识模块302,还用于若所述第二节点为跨网络的通信节点,则标记该节点的过滤器为全局过滤器。
本发明实施例实现了如下技术效果:遍历查询计划树,找到HashJoin;在HashJoin的右表中识别需要生成过滤器的节点,并对节点生成过滤器标识,将过滤器标识记录在HashJoin的左表中;将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;执行HashJoin,并在执行HashJoin的过程中根据左表中的过滤器标识生成过滤器;将生成的过滤器沿着HashJoin的右表的节点逐级下推;建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;使用过滤器对分布式数据库进行过滤。本申请根据HashJoin的右表生成过滤器,并作用于右表的过滤,由于这个过滤器会大幅减少数据量,从而大大加速Join的执行,可以大幅提高数据查询性能,实现了应用于分布式场景下的动态过滤,兼顾了简捷、高效和可靠的优点。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种分布式数据库动态过滤方法,其特征在于,包括:
遍历分布式数据库的查询计划树,找到HashJoin;
在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;所述在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,包括:在HashJoin的右表中,递归的遍历各个节点,查找需要使用过滤器的第一节点并生成过滤器标识,所述第一节点为scan节点或append节点;查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生成过滤器标识,所述第二节点为所述左表的上游节点中包含的聚集节点、跨网络的通信节点或者右表中具有过滤效果的节点,所述具有过滤效果的节点为右表的输出行数和join的结果行数的比值超过第一阈值的节点;
将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;所述在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器,包括:根据所述过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤器;若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该第二节点的记录行数,如果所述记录行数超过第二阈值,则将该第二节点的过滤器设置为空;
将生成的过滤器沿着HashJoin的右表的节点逐级下推;
建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
使用过滤器对分布式数据库进行过滤。
2.如权利要求1所述分布式数据库动态过滤方法,其特征在于,所述将生成的过滤器沿着HashJoin的右表的节点逐级下推,包括:
针对生成过滤器的第一节点,将过滤器信息存入该第一节点;
当生成过滤器的第二节点为跨网络的通信节点时,将过滤器发送至与该通信节点相关联的节点;
当生成过滤器的第二节点为除跨网络的通信节点之外的其他节点时,将过滤器递归的传递至下一节点。
3.如权利要求1所述分布式数据库动态过滤方法,其特征在于,所述建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收,包括:
当过滤器发送端启动时建立和过滤器接收端的通信链路;
由过滤器发送端依次向所有过滤器接收端发送该过滤器发送端对应的过滤器;
每个过滤器接收端接收到所有过滤器发送端发送的过滤器后,将接收的过滤器组合为一个完整的过滤器;若所述过滤器接收端接收到空过滤器,则组合过滤器时将该空过滤器舍弃。
4.如权利要求1所述分布式数据库动态过滤方法,其特征在于,在所述使用过滤器对分布式数据库进行过滤之前,所述方法还包括:
当所述第一节点为append节点时,在该append节点之后将生成的过滤器沿着HashJoin的右表的节点进行二次下推。
5.如权利要求1所述分布式数据库动态过滤方法,其特征在于,若所述第二节点为跨网络的通信节点,则标记该节点的过滤器为全局过滤器。
6.一种分布式数据库动态过滤装置,其特征在于,包括:
查找模块,用于分布式数据库的遍历查询计划树,找到HashJoin;
过滤器标识模块,用于在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,将所述过滤器标识记录在所述HashJoin的左表中;所述在HashJoin的右表中识别需要生成过滤器的节点,并对所述节点生成过滤器标识,包括:在HashJoin的右表中,递归的遍历各个节点,查找需要使用过滤器的第一节点并生成过滤器标识,所述第一节点为scan节点或append节点;查找是否存在需要增加过滤器的第二节点,若存在所述第二节点则对所述第二节点生成过滤器标识,所述第二节点为所述左表的上游节点中包含的聚集节点、跨网络的通信节点或者右表中具有过滤效果的节点,所述具有过滤效果的节点为右表的输出行数和join的结果行数的比值超过第一阈值的节点;
查询计划树分发模块,用于将带有过滤器标识的查询计划树分发至分布式数据库的各服务器上;
过滤器生成模块,用于在各服务器上执行HashJoin,并在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器;所述在执行HashJoin的过程中根据所述左表中记录的所述过滤器标识生成过滤器,包括:根据所述过滤器标识,对每一条所述左表上的记录按照hash值生成过滤器或更新过滤器;若所述第二节点为所述左表的上游节点中包含的聚集节点,则根据所述过滤器标识,生成所述第二节点的过滤器;更新该第二节点的过滤器,同时统计该第二节点的记录行数,如果所述记录行数超过第二阈值,则将该第二节点的过滤器设置为空;
过滤器下推模块,用于将生成的过滤器沿着HashJoin的右表的节点逐级下推;
通信模块,用于建立过滤器发送端与过滤器接收端的通信链路,完成过滤器的发送和接收;
过滤模块,用于使用过滤器对分布式数据库进行过滤。
7.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一项所述的分布式数据库动态过滤方法。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至5中任一项所述的分布式数据库动态过滤方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310672531.4A CN116401266B (zh) | 2023-06-08 | 2023-06-08 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310672531.4A CN116401266B (zh) | 2023-06-08 | 2023-06-08 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116401266A CN116401266A (zh) | 2023-07-07 |
CN116401266B true CN116401266B (zh) | 2023-09-05 |
Family
ID=87020233
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310672531.4A Active CN116401266B (zh) | 2023-06-08 | 2023-06-08 | 分布式数据库动态过滤方法、装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116401266B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090962A (zh) * | 2014-07-14 | 2014-10-08 | 西北工业大学 | 面向海量分布式数据库的嵌套查询方法 |
CN111046066A (zh) * | 2019-12-09 | 2020-04-21 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN114969046A (zh) * | 2022-06-02 | 2022-08-30 | 北京人大金仓信息技术股份有限公司 | 一种哈希连接的处理方法、存储介质与设备 |
CN115455057A (zh) * | 2022-09-21 | 2022-12-09 | 北京人大金仓信息技术股份有限公司 | 数据库连接操作的执行方法、存储介质与计算机设备 |
CN116089455A (zh) * | 2023-01-05 | 2023-05-09 | 北京聚云位智信息科技有限公司 | 一种基于运行时的连接优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10120902B2 (en) * | 2014-02-20 | 2018-11-06 | Citus Data Bilgi Islemleri Ticaret A.S. | Apparatus and method for processing distributed relational algebra operators in a distributed database |
-
2023
- 2023-06-08 CN CN202310672531.4A patent/CN116401266B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090962A (zh) * | 2014-07-14 | 2014-10-08 | 西北工业大学 | 面向海量分布式数据库的嵌套查询方法 |
CN111046066A (zh) * | 2019-12-09 | 2020-04-21 | 上海达梦数据库有限公司 | 远程数据库对象的优化方法、装置、设备及存储介质 |
CN114969046A (zh) * | 2022-06-02 | 2022-08-30 | 北京人大金仓信息技术股份有限公司 | 一种哈希连接的处理方法、存储介质与设备 |
CN115455057A (zh) * | 2022-09-21 | 2022-12-09 | 北京人大金仓信息技术股份有限公司 | 数据库连接操作的执行方法、存储介质与计算机设备 |
CN116089455A (zh) * | 2023-01-05 | 2023-05-09 | 北京聚云位智信息科技有限公司 | 一种基于运行时的连接优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116401266A (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7627611B2 (en) | Conflict resolution in database replication through autonomous node qualified folding | |
CN110837585B (zh) | 多源异构的数据关联查询方法及系统 | |
US6732110B2 (en) | Estimation of column cardinality in a partitioned relational database | |
CN110471923B (zh) | 一种区块链交易记录的处理方法及装置 | |
CN104408159B (zh) | 一种数据关联、加载、查询方法及装置 | |
US8880511B2 (en) | Database query optimization and cost estimation | |
KR20040036201A (ko) | Xml 데이터 검색을 위한 질의 처리 방법 | |
CN105677683A (zh) | 批量数据查询方法和装置 | |
CN106815258A (zh) | 一种数据存储方法和协调节点 | |
US11379419B2 (en) | Autonomous intelligent data pipeline comparator | |
CN105335402A (zh) | 基于静态Cache的搜索方法、索引数据生成方法以及装置 | |
KR20090062011A (ko) | 액티브 노드와 유사한 특성을 가지는 이웃 노드의 관리방법, 장치 및 그 방법을 구현하기 위한 프로그램이 기록된기록매체 | |
CN113704252A (zh) | 规则引擎决策树实现方法、装置、计算机设备及计算机可读存储介质 | |
CN111125199B (zh) | 一种数据库访问方法、装置及电子设备 | |
Abdelaziz et al. | Query optimizations over decentralized RDF graphs | |
CN110543478A (zh) | 公共层宽表建设方法、装置及服务器 | |
CN116401266B (zh) | 分布式数据库动态过滤方法、装置、计算机设备及介质 | |
CN107465706B (zh) | 一种基于无线通信网络的分布式数据对象存储装置 | |
CN116501761A (zh) | 查询优化方法、设备及存储介质 | |
CN113297274B (zh) | 一种签收数据查询方法和系统 | |
CN105589969A (zh) | 一种数据处理方法及装置 | |
Shneidman et al. | A cost-space approach to distributed query optimization in stream based overlays | |
CN111858956B (zh) | 知识图谱构建方法、装置、网络设备及存储介质 | |
WO2021180728A1 (en) | Optimization of database sequence of joins for reachability and shortest path determination | |
Rosch et al. | Best effort query processing in dht-based p2p systems |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |