一种分布式连接方法及系统与流程

文档序号:12719619阅读:345来源:国知局
一种分布式连接方法及系统与流程
本发明涉及数据库
技术领域
,尤其涉及一种分布式连接方法及系统。
背景技术
:连接(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时,可不必重复传输所述相同块,进一步的降低了网络的传输代价。在一些可能的实现方式中,所述目标输入表集合中,每一个输入表的参考列可以是所述输入表中被所述目标连接谓词使用次数最多的列。在一些可能的实现方式中,对输入表的排序方式可包括:按照参考列的数值大小对各个行进行升序排序的方式,或者,按照参考列的数值大小对各个行进行降序排序。第二方面,提供了一种分布式连接系统,所述分布式连接系统包括用于执行第一方面所述方法的模块。第三方面,提供了一种服务器,用于执行第一方面描述的分布式连接方法。所述服务器包括:收发装置、存储器以及与所述存储器耦合的处理器,其中,所述收发装置用于与分布式系统中的节点进行数据通信,所述存储器用于存储第一方面描述的分布式连接方法的实现代码,所述处理器用于执行所述存储器中的程序代码,即执行第一方面描述的分布式连接方法。第四方面,提供了一种计算机可读存储介质,所述可读存储介质上存储有实现第一方面描述的分布式连接方法的程序代码,该程序代码包含运行第一方面描述的分布式连接方法的执行指令。实施本发明实施例,所述存储资源分配系统在接收存储资源分配请求(携带业务类型和业务特征数据)之后,根据所述目标业务的业务类型从预设资源分配算法中选取出针对所述目标业务的资源分配算法,并以所述目标业务的业务特征数据为输入,利用选取出的所述资源分配算法计算得到所述目标业务的存储资源配置数据,然后指令存储系统将符合所述存储资源配置数据的存储资源分配给所述目标业务。本发明方案可实现根据业务特征自动为业务系统中的各个业务分配存储资源,提高了资源分配的效率。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。图1是本发明实施例涉及的现有的分布式多路连接方法的示意图;图2是本发明实施例涉及的2个表的连接过程的示意图;图3是本发明实施例提供的分布式连接方法的流程示意图;图4A-4C是本发明实施例涉及的3个输入表的排序及分块方法的示意图;图4D是图4A-4C所示的3个输入表的分块结果示意图;图5是本发明实施例提供的一种有效块组合调度方法的示意图;图6是本发明实施例提供的一种分布式连接系统的结构示意图;图7是本发明实施例提供的一种服务器的结构示意图。具体实施方式本发明的实施方式部分使用的术语仅用于对本发明的具体实施例进行解释,而非旨在限定本发明。下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚地描述。本发明方案研究通用的分布式多路连接方法,该方法在分布式环境中运行,支持任意个数的表的连接,适用于各种Theta连接谓词。本发明实施例涉及的节点是指分布式系统中用于执行表的连接等操作的计算设备,既可以是运行在云端的虚拟计算机,也可以是运行在大容量硬盘上的物理计算机。为了便于理解本发明实施例,下面先结合图2介绍本发明实施例涉及的表的连接的基本理论知识。参见图2,表R和表S是2个输入表,连接谓词:R.b=S.c用于描述表R的b列和表S的c列之间的关系。在执行连接操作时,首先将表R的每一行分别与表S的每一行进行比较,找出满足所述连接谓词的行组合,即:表R的第1行与表S的第1行、表R的第1行与表S的第2行这两个行组合。最后,将满足所述连接谓词的两个行组合(一个行组合中的行并排连接)形成结果表(如图2所示)。需要说明的,图2示出的连接谓词仅仅是Theta连接谓词的一种,实际应用中,表R与表S之间还可以通过其他连接谓词进行连接。为了解决现有技术中存在的问题,本发明实施例提供了一种分布式连接方法。在所述方法中,首先对目标输入表集合中的每一个输入表按照所述输入表的参考列进行排序,并对排序后的各个输入表进行分块,之后筛选出满足目标连接谓词的有效块组合,最后将筛选出的有效块组合分配给各个节点。上述方案可实现降低分布式系统的网络传输代价。下面将结合附图进行详细说明。参见图3,图3示出了本发明实施例提供的分布式连接方法的流程示意图。所述方法包括:S101,将目标输入表集合中的每一个输入表按照各自的参考列进行排序。本发明实施例中,所述目标输入表集合是目标连接谓词针对的多个(至少2个)输入表构成的集合,所述目标连接谓词用于对所述多个输入表进行连接操作。其中,一个输入表的参考列是所述输入表中被所述目标连接谓词所使用的列。本发明实施例中,把一个输入表按照该输入表的参考列进行排序是指:以所述参考列为参考,将所述输入表的行按照所述输入表的参考列的数值大小进行升序或降序排序。以图4A所示的表R1为例,假定表R1的参考列为C(i),以C(i)为参考对表R1的行进行排序,也即是按照C(i)的数值大小对各个行进行排序,排序后的表R1的各个行的顺序进行了调整。S103,以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合。其中,任意一个块组合可表示为:(K1,K2,…,Kn),其中,Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n。本发明实施例中,一个输入表可以被分成多个(2个或2个以上)块,其中,一个块可包括整数行(1行,或2行,或2行以上)。S105,根据各个块的参考列的数值信息,从S103得到的所述全部块组合中筛选出有效块组合。具体的,有效块组合是指各个块的参考列的数值信息满足所述目标连接谓词的块组合。S107,将S105筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。下面以图4A-4C所示的表R1、表R2和表R3为例,详细说明本发明实施例的排序过程和分块过程,其中,假设针对表R1、表R2和表R3的目标连接谓词是:R1.C(i)+R2.C(j)<R3.C(k),i、j、k均是正整数。首先,根据所述目标连接谓词确定出表R1、表R2和表R3的参考列分别是:C(i)、C(j)和C(k)。然后,可按照各个表的参考列分别对表R1、表R2和表R3进行排序。具体的,按照C(i)列的数值大小对表R1进行排序,排序后的表R1如图4A所示;按照C(j)列的数值大小对表R2进行排序,排序后的表R2如图4B所示;按照C(k)列的数值大小对表R3进行排序,排序后的表R3如图4C所示。需要说明的,对输入表的排序方式不限于附图中示出的按照参考列的数值大小对各个行进行升序排序的方式,实际应用中,还可以按照参考列的数值大小对各个行进行降序排序,本发明实施例不作限制。在对表R1、表R2和表R3进行排序之后,可以对排序后的表R1、表R2和表R3进行分块处理。本发明实施例中,可以根据预先设定的块大小B(如64MB)对排序后的输入表进行分块,排序后的输入表R分块后得到的(|R|是表R的大小,是取上限整数符号)。假设,表R1、表R2和表R3的大小分别是:250MB、250MB和350MB,预先设定的用于分块的块大小B是128MB。那么,表R1可以如图4A所示分成K[1,4]和K[5,8]两块。同样的,表R2可如图4B所示分成K[2,3]和K[4,6]两块;表R3可如图4C所示分成:K[1,2]、K[3,6]和K[7,10]三块。最终,表R1、表R2和表R3的分块结果可表示成图4D所示。由于表R1、表R2和表R3分别被分成了:2块、2块和3块。因此,按照排列组合原理,分块后共有12个块组合,如下表1所示:块组合是否有效块组合是否有效(1,1,1)否(2,1,1)否(1,1,2)是(2,1,2)否(1,1,3)是(2,1,3)是(1,2,1)否(2,2,1)否(1,2,2)是(2,2,2)否(1,2,3)是(2,2,3)是表1其中,块组合(a,b,c)(a,b,c均是正整数)中的a、b、c分别表示表R1的第a块、表R2的第b块和表R3的第c块;“是否有效”一栏有效表示块组合满足所述目标连接谓词,“是否有效”一栏无效表示块组合不满足所述目标连接谓词。以块组合(1,1,1)为例进行分析,由于表R1的第1块的C(i)列的数值范围是[1,4],表R2的第1块的C(j)列的数值范围是[2,3],因此,块组合(1,1,1)中R1.C(i)+R2.C(j)的数值范围是[3,7],与表R3的第1块的C(k)列的数值范围[1,2]没有交集,不满足所述目标连接谓词,即块组合(1,1,1)是无效块组合,不必传输至节点进行连接操作,可减少网络需要传输的块组合的数量。如表1所示,其他块组合可同样分析出是否满足所述目标连接谓词。可以看出,本发明实施例通过对表R1、表R2和表R3进行排序和分块,并根据所述目标连接谓词对分块得到块组合进行筛选,可实现只将有效块组合(满足所述目标连接谓词的块组合)传输至分布式系统中的各个节点进行连接操作,避免将无效块组合传输至所述各个节点,降低了系统的网络传输代价。本发明实施例中,在筛选出有效块组合之后,可以通过调度过程(S107)将筛选出的所述有效块组合调度给分布式系统中的各个节点。具体的,有效块组合的调度过程可主要包括以下步骤:(1)确定所述各个节点的负载(即所述各个节点需要运行的块组合的个数);(2)从所述有效块组合中选取出每一个节点对应的块组合集合,所述集合包含的块组合的个数与所述节点的负载一致。在一种实现方式中,为了保证所述各个节点的负载均衡(即每个节点运行的块组合个数相近),特别是在所述各个节点的计算能力相近的场景下,可以采用下述策略确定出各个节点的负载:假设,分布式系统中的节点个数是M,有效块组合的个数是N。那么,在M个节点中,N%M(%是取余符号)个节点的负载是:(是取下限整数符号),(M-N%M)个节点的负载是:例如,分布式系统中有10个节点,有效块组合有55个。那么,该10个节点中有5个节点的负载是6,剩余的5个节点的负载是5。示例仅仅用于解释本发明实施例的实现方式,不应构成限定。需要说明的,实际应用中还可以采用其他策略来实现所述各个节点的负载均衡,这里不作限制。在另一种实现方式中,也可以根据各个节点的计算能力确定所述各个节点的负载,即计算能强的节点的负载大,计算能力弱的节点的负载小。可以理解的,计算能力越强的节点可以支持运行的块组合越多。本发明实施例中,可以通过随机调度的方式为各个节点分配块组合。即:在选择一个节点对应的块组合集合时,可以从所述有效块组合中随机的选择多个块组合构成该节点对应的块组合集合,所述多个块组合的数量与该节点的负载一致。本发明实施例中,不同于前述随机调度的方式,为了进一步的降低网络传输代价,在选择一个节点对应的块组合集合时,应该使该节点对应的块组合集合中的块组合尽量相似。可以理解的,该节点对应的块组合集合中的多个块组合包含的相同块的个数越多,所述多个块组合之间的相似度越高。在一些可能的实现方式中,在先后传输多个(2个或以上)块组合给同一个节点时,如果在前传输的块组合已经包含有所述相同块,那么,在后传输的块组合只需包含所述相同块的标识信息即可,用以告知所述节点所述在后传输的块组合中包含所述相同块。这样可避免重复传输相同块给同一个节点,大大降低了网络传输代价。例如,节点A对应的块组合集合包含表1中的块组合:(1,1,2)和(1,1,3)。那么,在将块组合(1,1,2)传输给节点A之后,在传输块组合(1,1,3)时,可以只将相同块(表R1的K[1,4]和表R2的K[2,3])的标识信息(如表ID-块ID)传输给节点A,使得节点A可根据所述相同块标识信息恢复出块组合(1,1,3)。示例仅仅是本发明实施例的一种实现方式,实际应用中还可以不同,不应构成限定。本发明实施例中,可以通过下述步骤从所述有效块组合中选取出每一个节点对应的块组合集合,使得每一个节点对应的块组合集合中的多个块组合尽量相似(下面以节点A为例进行说明,节点A是分布式系统中的任意一个节点):步骤一:确定当前剩余的有效块组合,从当前剩余的有效块组合中选取出一个有效块组合作为节点A对应的初始的块组合集合;步骤二:确定当前剩余的有效块组合,从当前剩余的有效块组合中,将与节点A对应的块组合集合的相似度最高的有效块组合添加到节点A对应的块组合集合中;重复执行所述步骤二直到节点A对应的块组合集合中的块组合个数与节点A的负载一致;其中,所述当前剩余的有效块组合是指所述有效块组合中当前还未被调度的块组合。举例说明,假设分布式系统如图5所示有3个节点(节点1、节点2和节点3),并且,筛选出的所述有效块组合如表1所示(6个有效块组合)。那么,根据负载均衡的原则,每一个节点的负载是2个有效块组合。具体的,3个节点的有效块组合的调度情况可如图5所示。对于节点1,当前剩余的有效块组合是6个,在选择块组合(1,1,2)作为初始的块组合集合之后,当前剩余5个块组合,由于这5个块组合中块组合(1,1,3)与初始的块组合集合{(1,1,2)}的相似度最高(包括两个相同的块),因此,将块组合(1,1,3)添加到节点1对应的块组合集合中,得到节点1对应的块组合集合:{(1,1,2),(1,1,3)},满足了节点1的负载需求。类似于节点1,可对节点2和节点3进行有效块组合调度。需要说明的,块组合集合与块组合均是块的集合,因此,块组合集合与块组合的相似度实质上是指两个块的集合的相似度。集合与集合之间的相似度的计算方法有很多,通常可包括:集合交集,Jaccard系数,Ochiai系数等。在本发明实施例的一种可能的应用场景中,所述目标输入表集合中存在有输入表的多个(2个或2个以上)列被所述目标连接谓词使用。在这种情况下,对于所述目标输入表集合中的每一个输入表,可以优选被所述目标连接谓词使用次数最多的列作为所述输入表的参考列。例如,所述目标输入表集合包括:表R1,表R2和表R3;所述目标连接谓词是:R1.a=R2.bandR2.c>R3.dandR1.a+R2.b<R3.d。可以看出,表R2的2个列(b和c)被所述目标连接谓词使用,其中,b列被使用的次数较多(b列被两个连接谓词使用,c列被一个连接谓词使用)。因此,优选b作为表R2的参考列。可以理解的,一个输入表的参考列被所述目标连接谓词使用的次数越多,该输入表中满足所述目标连接谓词的块数量越少,即通过S105筛选出的有效块组合越少,最终需要传输到分布式系统中的各个节点处进行连接操作的有效块组合越少,可实现进一步降低网络传输代价。本发明实施例中,在对输入表进行分块处理时,除了上述提及的根据预先设定的块大小B对各个排序后的输入表进行分块处理外,还可采用其他的分块处理方式,例如,根据固定行数(如2行)对各个排序后的输入表进行分块处理,即输入表中每2行划分为1块。对于排序后的输入表的分块方式,本发明实施例不作限制。需要说明的,为了进一步保证分布式系统的负载均衡,在对输入表进行分块处理时,应尽量保证每一个块组合对应的连接计算量相近。由于在对一个块组合执行连接操作时,需要将其中一个块的每一行分别与其他块的各个行进行排列组合来判断是否满足所述目标连接谓词,因此,一个块组合对应的连接计算量可以由这个块组合包含的各个块的行数来衡量。具体的,块组合(K1,K2,…,Kn)对应的连接计算量可表示为:K1的行数*K2的行数*…*Kn的行数。例如,表1中的块组合(1,1,1)包含的3个块分别是:图4A的K[1,4](包括3行)、图4B的K[2,3](包括3行),以及图4C的K[1,2](包括3行)。那么,块组合(1,1,1)对应的连接计算量可表示为:3*3*3=27。示例仅仅用于对本发明实施例进行解释,不应构成限定。实施本发明实施例,通过对所述各个输入表进行排序和分块,并根据所述目标连接谓词对分块得到块组合进行筛选,可实现只将有效块组合(满足所述目标连接谓词的块组合)传输至分布式系统中的各个节点进行连接操作,避免将无效块组合传输至所述各个节点,降低了系统的网络传输代价。为了配合实施本发明实施例提供的分布式连接方法,本发明实施例提供了一种分布式连接系统,用于实现图3方法实施例中的具体步骤。如图6所示,所述分布式连接系统可包括:排序模块601、分块模块603、筛选模块605和调度模块607。其中:排序模块601,用于将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;分块模块603,用于以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合;其中,一个块组合表示为:(K1,K2,…,Kn),Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n;筛选模块605,用于根据各个块的参考列的数值信息,从所述全部块组合中筛选出有效块组合;所述有效块组合是指各个块的参考列的数值信息满足所述目标连接谓词的块组合;调度模块607,用于将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。本发明实施例中,排序模块601把一个输入表按照该输入表的参考列进行排序是指:以所述参考列为参考,按照所述参考列的数值大小对各个行进行排序。需要说明的,排序模块601可以按照参考列的数值大小对各个行进行升序排序,也可以按照参考列的数值大小对各个行进行降序排序,本发明实施例不作限制。本发明实施例中,分块模块603可具体用于:根据预先设定的块大小B(如64MB)对排序后的输入表进行分块,排序后的输入表R分块后得到的(|R|是表R的大小,是取上限整数符号)。实际应用中,分块模块603还可用于通过其他的分块处理方式对输入表进行分块,例如,根据固定行数(如2行)对各个排序后的输入表进行分块处理,即输入表中每2行划分为1块。对于分块模块603的分块方式,本发明实施例不作限制。本发明实施例中,在筛选模块605筛选出所述有效块组合之后,调度模块607可以通过调度过程将筛选出的所述有效块组合调度给分布式系统中的各个节点。具体的,如图6所示,调度模块607可进一步包括:负载确定模块6071和选取模块6073,其中:负载确定模块6071,用于确定出所述各个节点的负载;一个节点的负载是指所述节点需要运行的块组合个数;选取模块6073,用于从所述有效块组合中选取出所述各个节点各自对应的块组合集合;一个节点对应的块组合集合中的块组合个数与所述节点的负载一致。在一种实现方式中,为了保证所述各个节点的负载均衡(即每个节点运行的块组合个数相近),特别是在所述各个节点的计算能力相近的场景下,负载确定模块6071可具体用于(假设分布式系统中的节点个数是M,有效块组合的个数是N):在M个节点中,将N%M(%是取余符号)个节点的负载确定为:(是取下限整数符号),将(M-N%M)个节点的负载确定为:需要说明的,负载确定模块6071还可以采用其他策略来实现所述各个节点的负载均衡,这里不作限制。在另一种实现方式中,负载确定模块6071也可以用于:根据各个节点的计算能力确定所述各个节点的负载,即计算能强的节点的负载大,计算能力弱的节点的负载小。可以理解的,计算能力越强的节点可以支持运行的块组合越多。本发明实施例中,为了进一步的降低网络传输代价,选取模块6073在选择一个节点对应的块组合集合时,可以使该节点对应的块组合集合中的块组合尽量相似。对于传输给同一个节点的相似块组合能够降低网络传输代价的解释请参考图3方法实施例中的相关内容,这里不再赘述。具体的,选取模块6073可用于通过下述步骤得到节点A对应的块组合集合(节点A是分布式系统中的任意一个节点)::步骤一:确定当前剩余的有效块组合,从当前剩余的有效块组合中选取出一个有效块组合作为节点A对应的初始的块组合集合;步骤二:确定当前剩余的有效块组合,从当前剩余的有效块组合中,将与节点A对应的块组合集合的相似度最高的有效块组合添加到节点A对应的块组合集合中;重复执行所述步骤二直到节点A对应的块组合集合中的块组合个数与节点A的负载一致;其中,所述当前剩余的有效块组合是指所述有效块组合中当前还未被调度的块组合。在本发明实施例的一种可能的应用场景中,所述目标输入表集合中存在有输入表的多个(2个或2个以上)列被所述目标连接谓词使用。在这种情况下,对于所述目标输入表集合中的每一个输入表,可以优选被所述目标连接谓词使用次数最多的列作为所述输入表的参考列。需要说明的,上述内容描述的各个功能模块的具体实现方式可以参考图3方法实施例中的内容,这里不再赘述。为了便于实施本发明实施例,本发明提供了一种服务器,用于实现图3方法实施例所述的分布式连接方法。参见图7,服务器70可包括:输入装置703、输出装置704、收发装置705、存储器702和与存储器702耦合的处理器701(服务器70中的处理器701的数量可以是一个或多个,图7中以一个处理器为例)。在本发明的一些实施例中,输入装置703、输出装置704、收发装置705、存储器702和处理器701可通过总线或者其它方式连接,其中,图7中以通过总线连接为例。其中,输入装置703,用于接收外部的输入数据。具体实现中,输入装置101可包括键盘、鼠标、光电输入装置、声音输入装置、触摸式输入装置、扫描仪等。输出装置704,用于对外输出数据。具体实现中,输出装置704可包括显示器、扬声器、打印机等。收发装置705,用于向分布式系统中的节点发送数据或者从分布式系统中的节点接收数据。具体实现中,收发装置705可包括无线收发模块、有线收发模块等收发器件。存储器702用于存储程序代码,具体实现中,存储器702可以采用只读存储器(ReadOnlyMemory,ROM),可用于存储实现前述图3方法实施例的程序代码。处理器701,例如CPU,用于调用存储于存储器702中程序代码执行如下步骤:将目标输入表集合中的每一个输入表按照各自的参考列进行排序;其中,所述输入表的参考列是所述输入表中被目标连接谓词使用的列;以行为基本单位,对排序后的每一个输入表进行分块,得到所述目标输入表集合对应的全部块组合;其中,一个块组合表示为:(K1,K2,…,Kn),Km代表所述目标输入表集合中的输入表Rm中的任意一个块,m是正整数,m小于等于n;根据各个块的参考列的数值信息,从所述全部块组合中筛选出有效块组合;所述有效块组合是指各个块的参考列的数值信息满足所述目标连接谓词的块组合;将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据所述目标连接谓词对各自对应的有效块组合执行连接操作。本发明实施例中,处理器701把一个输入表按照该输入表的参考列进行排序是指:处理器701以所述参考列为参考,按照所述参考列的数值大小对各个行进行排序。需要说明的,在对一个输入表按照该输入表的参考列进行排序时,处理器701可以参考列的数值大小对各个行进行升序排序,也可以按照参考列的数值大小对各个行进行降序排序,本发明实施例不作限制。本发明实施例中,在对排序后的输入表进行分块处理时,处理器701可以根据预先设定的块大小B(如64MB)对排序后的输入表进行分块,排序后的输入表R分块后得到的(|R|是表R的大小,是取上限整数符号)。实际应用中,处理器701还可通过其他的分块处理方式对输入表进行分块,例如,根据固定行数(如2行)对各个排序后的输入表进行分块处理,即输入表中每2行划分为1块。对于输入表的分块方式,本发明实施例不作限制。本发明实施例中,在筛选出有效块组合之后,处理器701可以通过调度过程将筛选出的所述有效块组合调度给分布式系统中的各个节点。具体的,处理器701可以执行以下步骤:(1)确定所述各个节点的负载(即所述各个节点需要运行的块组合的个数);(2)从所述有效块组合中选取出每一个节点对应的块组合集合,所述集合包含的块组合的个数与所述节点的负载一致。在一种实现方式中,为了保证所述各个节点的负载均衡(即每个节点运行的块组合个数相近),特别是在所述各个节点的计算能力相近的场景下,处理器701可以采用下述策略确定出各个节点的负载:假设,分布式系统中的节点个数是M,筛选出的所述有效块组合的个数是N。那么,在M个节点中,N%M(%是取余符号)个节点的负载是:(是取下限整数符号),(M-N%M)个节点的负载是:需要说明的,实际应用中还可以采用其他策略来实现所述各个节点的负载均衡,这里不作限制。在另一种实现方式中,处理器701也可以根据各个节点的计算能力确定所述各个节点的负载,即计算能强的节点的负载大,计算能力弱的节点的负载小。可以理解的,计算能力越强的节点可以支持运行的块组合越多。为了进一步的降低网络传输代价,处理器701在选择一个节点对应的块组合集合时,应使该节点对应的块组合集合中的块组合尽量相似。具体的,处理器701可以通过下述步骤从所述有效块组合中选取出每一个节点对应的块组合集合,使得每一个节点对应的块组合集合中的多个块组合尽量相似(下面以节点A为例进行说明,节点A是分布式系统中的任意一个节点):步骤一:确定当前剩余的有效块组合,从当前剩余的有效块组合中选取出一个有效块组合作为节点A对应的初始的块组合集合;步骤二:确定当前剩余的有效块组合,从当前剩余的有效块组合中,将与节点A对应的块组合集合的相似度最高的有效块组合添加到节点A对应的块组合集合中;重复执行所述步骤二直到节点A对应的块组合集合中的块组合个数与节点A的负载一致;其中,所述当前剩余的有效块组合是指所述有效块组合中当前还未被调度的块组合。在本发明实施例的一种可能的应用场景中,所述目标输入表集合中存在有输入表的多个(2个或2个以上)列被所述目标连接谓词使用。在这种情况下,对于所述目标输入表集合中的每一个输入表,处理器701可以优选被所述目标连接谓词使用次数最多的列作为所述输入表的参考列,可实现进一步降低网络传输代价。本发明实施例中,在对输入表进行分块处理时,除了上述提及的根据预先设定的块大小B对各个排序后的输入表进行分块处理外,处理器701还可采用其他的分块处理方式,例如,根据固定行数(如2行)对各个排序后的输入表进行分块处理,即输入表中每2行划分为1块。对于排序后的输入表的分块方式,本发明实施例不作限制。可理解的,处理器701执行的详细步骤还可参照图3方法实施例中的具体内容,这里不再赘述。综上所述,实施本发明实施例,通过对目标输入表集合中的各个输入表按照各自的参考列进行排序,并对排序后的各个输入表进行分块得到所述目标输入表集合对应的全部块组合,之后从所述全部块组合中筛选出满足目标连接谓词的有效块组合,最后将筛选出的有效块组合调度给分布式系统中的各个节点,使得所述各个节点根据目标连接谓词对各自对应的有效块组合执行连接操作。上述方案可实现降低分布式系统中的网络传输代价。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1