一种分布式连接方法及系统技术方案

技术编号:15690865 阅读:63 留言:0更新日期:2017-06-24 03:36
本发明专利技术实施例公开一种分布式连接方法及系统。所述方法包括:将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;以行为基本单位,对排序后的各个输入表进行分块,得到所述目标输入表集合对应的全部块组合;根据各个块的参考列的数值信息,从所述全部块组合中筛选出有效块组合;所述有效块组合是指包含的各个块的参考列的数值信息满足所述目标连接谓词的块组合;将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。本发明专利技术方案可降低网络传输代价。

Distributed connection method and system

The embodiment of the invention discloses a distributed connection method and system. The method includes: the target input table of each input table in the set of columns are sorted according to their respective reference; wherein, the input table reference column is the input table by the target connection predicate use column; on the basic unit of behavior, sorted each input table into blocks. Get the target input table corresponding to the set of all blocks; according to the numerical information of each block reference column, select effective blocks from the entire block in the block combination; effective combination refers to the numerical information contained in each block reference column blocks meet the target will join predicates; the effective combination of the selected block scheduling for each node in the distributed system, the connection procedure according to the target predicate connected to their corresponding effective blocks so that the nodes. The scheme of the invention can reduce the transmission cost of the network.

【技术实现步骤摘要】
一种分布式连接方法及系统
本专利技术涉及数据库
,尤其涉及一种分布式连接方法及系统。
技术介绍
连接(Join)操作是数据库系统中的一个基本操作,它将数据库中两个或多个表组合成一个结果表。连接操作的实现方法(即连接方法)直接影响了数据库系统的整体性能。目前,连接方法有多种分类方式,如下所述:(1)连接方法按照连接谓词可以分为通用连接方法和非通用连接方法,其中:通用连接方法:适用于各种Theta连接谓词(<、≤、=、≠、>、≥),常用的通用连接方法有嵌套循环连接(NestedLoopJoin)方法。非通用连接方法:只适用于等值(=)连接谓词,常用的非通用连接方法有排序合并连接(Sort-MergeJoin)方法和哈希连接(HashJoin)方法。(2)连接方法按照输入表的数量可以分为2路连接方法和多路连接方法,其中:2路连接方法:只支持两个表的连接,通常应用在在集中式运行环境中。多路连接方法:支持任意个数的表的连接,通常应用在分布式运行环境中。(3)连接方法按照运行环境可以分为分布式连接方法和集中式连接方法,其中:分布式连接方法:在分布式运行环境中使用的连接方法。集中式连接方法:在集中式运行环境中使用的连接方法。在上述介绍的多种连接方法中,通用的分布式多路连接方法的应用最为广泛,能够适应当今需要大数据处理的分布式计算需求。如图1所示,现有的通用的分布式多路连接方法可主要包括以下步骤:分块阶段:把每一个输入表Ri分成Si个大小近似的块,并且,所有输入表的块数目满足约束条件:S1*S2*...Sn=M,其中,M是分布式系统中的节点数量。一个块组合表示为:(K1,K2,...,Kn),其中,Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n。那么,按照排列组合原理,分块阶段总共可产生S1*S2*...Sn个块组合,即M个块组合。可以理解的,通过引入块组合,原始n个输入表的连接计算就转化成M个块组合内的连接计算。传输和计算阶段:由于块组合数量和节点数量相同,因此,每个节点可用于计算一个块组合内的连接。在这个阶段,系统需要将每一个节点对应的块组合传输到该节点进行计算。可以理解的,系统传输总代价可表示为:(|Ri|表示Ri的大小,i、n是正整数)。现有技术中,分块阶段需要为每一个输入表Ri选择合适的分块数Si以优化系统传输代价,其中,各个输入表的分块数满足前述约束条件:S1*S2*...Sn=M。但是,系统传输代价的优化问题通常得不到最优解,实际应用中通常使用启发式算法求解,但是系统传输代价会增大。
技术实现思路
本专利技术实施例提供了一种分布式连接方法及系统,通过对输入表按照参考列进行排序后再对输入表进行分块,并根据连接谓词筛选出有效的块组合,最后将筛选出的所述有效的块组合均衡的分配到各个节点。上述方案可实现降低分布式系统中的块组合的传输代价。第一方面,提供了一种分布式连接方法,包括:将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合;其中,一个块组合表示为:(K1,K2,…,Kn),Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n;根据各个块的参考列的数值信息,从所述全部块组合中筛选出有效块组合;所述有效块组合是指各个块的参考列的数值信息满足所述目标连接谓词的块组合;将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。本专利技术实施例中,把一个输入表按照该输入表的参考列进行排序是指:以所述参考列为参考,将所述输入表的行按照所述输入表的参考列的数值大小进行升序或降序排序。通过实施第一方面描述的分布式连接方法,通过对各个输入表进行排序和分块,并根据所述目标连接谓词对分块得到块组合进行筛选,可实现只将有效块组合(满足所述目标连接谓词的块组合)传输至分布式系统中的各个节点进行连接操作,避免将无效块组合传输至所述各个节点,降低了系统的网络传输代价。结合第一方面,对排序后的输入表进行分块处理的方式可包括下述2种:1.根据预先设定的块大小B(如64MB)对排序后的输入表进行分块,排序后的输入表R分块后得到的(|R|是表R的大小,是取上限整数符号);2.根据预设行数(如2行)对排序后的输入表进行分块处理,即输入表中每2行划分为1块。结合第一方面,所述有效块组合的调度过程可主要包括以下步骤:确定所述各个节点的负载(即所述各个节点需要运行的块组合的个数);从所述有效块组合中选取出每一个节点对应的块组合集合,所述集合包含的块组合的个数与所述节点的负载一致。在一种可能的实现方式中,为了保证所述各个节点的负载均衡(即每个节点运行的块组合个数相近),特别是在所述各个节点的计算能力相近的场景下,可以采用下述策略确定出各个节点的负载:假设,分布式系统中的节点个数是M,有效块组合的个数是N。那么,在M个节点中,N%M(%是取余符号)个节点的负载是:(是取下限整数符号),(M-N%M)个节点的负载是:在另一种可能的实现方式中,也可以根据各个节点的计算能力确定所述各个节点的负载,即计算能强的节点的负载大,计算能力弱的节点的负载小。可以理解的,计算能力越强的节点可以支持运行的块组合越多。在一些可能的实现方式中,可以通过下述步骤从所述有效块组合中选取出每一个节点对应的块组合集合,使得每一个节点对应的块组合集合中的多个块组合尽量相似(以任意节点A为例):步骤一:确定当前剩余的有效块组合,从当前剩余的有效块组合中选取出一个有效块组合作为节点A对应的初始的块组合集合;步骤二:确定当前剩余的有效块组合,从当前剩余的有效块组合中,将与节点A对应的块组合集合的相似度最高的有效块组合添加到节点A对应的块组合集合中;重复执行所述步骤二直到节点A对应的块组合集合中的块组合个数与节点A的负载一致;其中,所述当前剩余的有效块组合是指所述有效块组合中当前还未被调度的块组合。可以理解的,节点A对应的块组合集合中的多个块组合之间的相似度越高,所述多个块组合包含的相同块的个数越多,那么,在将所述多个块组合传输给节点A时,可不必重复传输所述相同块,进一步的降低了网络的传输代价。在一些可能的实现方式中,所述目标输入表集合中,每一个输入表的参考列可以是所述输入表中被所述目标连接谓词使用次数最多的列。在一些可能的实现方式中,对输入表的排序方式可包括:按照参考列的数值大小对各个行进行升序排序的方式,或者,按照参考列的数值大小对各个行进行降序排序。第二方面,提供了一种分布式连接系统,所述分布式连接系统包括用于执行第一方面所述方法的模块。第三方面,提供了一种服务器,用于执行第一方面描述的分布式连接方法。所述服务器包括:收发装置、存储器以及与所述存储器耦合的处理器,其中,所述收发装置用于与分布式系统中的节点进行数据通信,所述存储器用于存储第一方面描述的分布式连接方法的实现代码,所述处理器用于执行所述存储器中的程序代码,即执行第一方面描述的分布式连接方法。第四方面,提供了一种计算机可读存储介质,所述可读存储介质上本文档来自技高网
...
一种分布式连接方法及系统

【技术保护点】
一种分布式连接方法,其特征在于,包括:将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合;其中,一个块组合表示为:(K

【技术特征摘要】
1.一种分布式连接方法,其特征在于,包括:将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合;其中,一个块组合表示为:(K1,K2,…,Kn),Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n;根据各个块的参考列的数值信息,从所述全部块组合中筛选出有效块组合;所述有效块组合是指各个块的参考列的数值信息满足所述目标连接谓词的块组合;将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。2.如权利要求1所述的方法,其特征在于,所述将目标输入表集合中的每一个输入表按照各自的参考列进行排序,包括:对于每一个输入表,将所述输入表的行按照所述输入表的参考列的数值大小进行升序或降序排序。3.如权利要求1所述的方法,其特征在于,所述对排序后的每一个输入表进行分块,包括:根据预先设定的块大小B对排序后的每一个输入表进行分块,其中,|R|是输入表R的大小,是取上限整数符号。4.如权利要求1所述的方法,其特征在于,所述将筛选出的有效块组合调度给分布式系统中的各个节点,包括:确定出所述各个节点的负载;一个节点的负载是指所述节点需要运行的块组合个数;从所述有效块组合中选取出所述各个节点各自对应的块组合集合;一个节点对应的块组合集合中的块组合个数与所述节点的负载一致。5.如权利要求4所述的方法,其特征在于,所述分布式系统中的节点个数是M,筛选出的所述有效块组合的个数是N;所述确定出所述各个节点的负载,包括:在M个节点中,将N%M个节点的负载确定为将(M-N%M)个节点的负载确定为是取下限整数符号。6.如权利要求4所述的方法,其特征在于,所述从所述有效块组合中选取出所述各个节点各自对应的块组合集合,包括:对于所述分布式系统中的任意一个节点A,通过下述步骤得到节点A对应的块组合集合:步骤一:确定当前剩余的有效块组合,从当前剩余的有效块组合中选取出一个有效块组合作为节点A对应的初始的块组合集合;步骤二:确定当前剩余的有效块组合,从当前剩余的有效块组合中,将与节点A对应的块组合集合的相似度最高的有效块组合添加到节点A对应的块组合集合中;重复执行所述步骤二直到节点A对应的块组合集合中的块组合个数与节点A的负载一致;其中,所述当前剩余的有效块组合是指所述有效块组合中当前还未被调度的块组合。7.如权利要求1-6中任一项所述的方法,其特征在于,所述目标输入表集合中,每一个输入表的参考列是所述输入表中被所述目标连接谓词使用次数最...

【专利技术属性】
技术研发人员:王国平朱俊华
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

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

1