本文由学者Peng Peng, Lei Zou, M. Tamer Özsu, Lei Chen & Dongyan Zhao于2016/01/04在《The VLDB Journal 》联合发表
原文下载链接文末自取
装配
每个站点都找到所有局部匹配片段,然后组装局部匹配对交叉匹配和最终结果进行计算。两种装配策略:集中式和分布式。集中式:所有局部部分匹配在单个站点上组装。分布式:局部部分匹配并行地合并到多个站点。
基于联接的装配
定义两个部分匹配可合并的条件,交叉匹配通过组合来自不同片段的部分匹配形成。若组装来自同一片段的局部部分匹配,则在同一片段中产生更大的局部部分匹配。
第一个条件是在可连接部分匹配中,相同的查询顶点不能被不同的内部顶点匹配。第二个条件是两个局部部分匹配共享至少一个与相同查询边对应的公共交叉边。
两个可连接的局部匹配的连接结果定义如下:
集中装配
所有局部匹配都发送到最终装配现场,使用迭代联接算法2发现所有交叉匹配:
基于分区的联接处理
为了减小联接空间而做进行优化,将所有局部匹配划分为多个分区,使同一集合中的两个局部匹配无法连接:
每个局部匹配都有一个内部顶点与查询图中的v1匹配:
找最佳分区
给定局部匹配项Ω,可能存在多个可行的局部匹配项分区,每个分区导致不同的联接性能。在Ω上找到“最佳”局部匹配分区,最大程度地减少连接时间。首先需要合并成本,然后寻求最合适的成本函数,再得出最佳分区。找到最佳划分是NP-complete,处理算法基于最佳划分的特征:
分区算法的工作原理:令Ω表示所有内部局部匹配,这些局部匹配具有与顶点匹配的内部顶点。如果Ω给出顶点顺序,则将该顶点固定。在第二次迭代中,从删除中的所有局部匹配项,设置为所有内部局部匹配,这些匹配具有与顶点匹配的内部顶点。
连接顺序
确定局部匹配的最优分区时,也要确定连接顺序。首先,更改连接顺序可能不会删除任何中间结果。连接顺序的任何更改都不会删除中间结果。其次,在某些特殊情况下,连接顺序可能会影响性能。
集中装配的替代是利用分布式装配局部匹配,采用体同步并行模型设计了分布式的异步算法。BSP计算=一系列全局超级步骤=本地计算+通信+障碍同步。
-
本地计算:每个处理器基于存储在本地内存的数据执行计算。不同处理器并行执行计算,不同处理器上的计算相互独立。考虑第m个超步。对于每个片段,让表示在第m个超步中某些碎片收到所有中间结果,在第一个(m-1)个超步中生成的中间结果。在超步中,通过算法5将不同的的局部部分匹配相结合。算法5:
-
通信:处理器间交换数据。第m个超级步骤。如果中间结果PM与其他碎片共享边,则PM会被从一个站点送到另一个站点,这样可能会产生重复结果。所以使用“分而治之”避免重复计算结果,在部分评估时得到片段Fi中局部部分匹配数。
分而治之的具体思想自行阅读原文,“分而治之”可避免重复结果,因为每个交叉匹配只根据“划分的搜索空间”在一个站点生成。要启用“分而治之”,需要引入一些限制数据通信。 只有当Fi≺Fj时,才允许从碎片站点Si到Sj的传输。 -
屏障同步:进入第(m + 1)超步前,应完成所有与通信有关的超步m。在第0超步的初始状态中,每个片段仅具有局部匹配项,由于不可能在同片段中组合局部匹配,因此第0超步无需局部计算,直接进入通信阶段。
-
系统终止条件:BSP算法的关键是终止系统的超步数,使用碎片图拓扑图进行分析操作,定义如下:
得出结论:BSP中的超步数基于DIA(T)的算法。
处理一般SPARQL
基于BGP查询以递归定义一般SPARQL查询和SPARQL查询结果
将每个SPARQL查询解析成一个解析树,其中根是一个模式组。 模式组指定一个SPARQL语句,由一个带有UNION、Optional和FILTER状态的BGP查询组成。递归算法8找到处理UNION、OPTION和FILTER的结果:
余下部分是实验评估内容,不再赘述。