《Scaling Queries over Big RDF Graphs with Semantic Hash Partitioning》——笔记

ABSTRACT

首先,我们提出的语义哈希分割方法通过基于方向的三元组和基于方向的triple replications来扩展简单的哈希分区方法。后者通过数据访问位置的智能利用通过受控数据复制来增强前者,使得可以以零或非常少量的机器间通信成本处理对大RDF图的查询。
第二,通过有效地最小化查询处理的机器间通信成本,我们生成比流行的多节点RDF数据管理系统更有效的本地优化的查询执行计划。
第三,我们提供一套局部感知优化技术,以进一步减少分区大小,并降低分布式查询处理期间的机器间通信成本。

1. INTRODUCTION

RDF data is escalating because of semantic web community and Linked Open Data initiatives.
一方面,为大数据和语义Web计划的创新打开门槛。
另一方面,使服务器的内存和计算资源捉襟见肘,RDF存储库遇到瓶颈。不能实时的回答查询。
现分布式RDF系统采用Hadoop MapReduce作为其查询执行层进行协调查询,但研究表明,服务器节点需要少量协调和不需要之间查询性能差异明显。中间结果较大时,服务器节点间的通信成本非常高。因此,可扩展的RDF数据分区方法应该能够将大型RDF数据分解成性能优化的分区,也就是使击中分区边界的查询数量最小化,并消除或显著的减少在服务器节点集群间传送多轮数据的成本。

本文提出一种语义哈希分区方法,它将局部性优化的RDF图划分与成本感知查询分区相结合。在数据分区阶段,我们开发了一种语义哈希分割方法,利用访问局部性通过最大化分区内处理能力和最小化分区间通信成本来跨越多个计算节点对大RDF图分区。
1、Our semantic hash partitioning approach introduces direction-based triple groups and direction-based triple replications to enhance the baseline hash partitioning algorithm by controlled data replication through intelligent utilization of data access locality.
2、We also provide a suite of semantic optimization techniques to further reduce the partition size and increase the opportunities for intra-partition processing.
3、At the cost-aware query partitioning phase, we generate locality-optimized query execution plans that can effectively minimize the inter-partition communication cost for distributed query processing and are more efficient than those produced by popular multi-node RDF data management systems.
为验证提出的语义哈希分区结构,开发了Shape。另外虽然着重于RDF数据和SPARQL查询,但应该对一般的查询和子图匹配都应该适用。

2. PRELIMINARY

2.1 RDF and SPARQL

这里写图片描述
RDF——三元组。
SPARQL——W3C推荐适用的类似于SQL的用于RDF的查询语言。有星型查询,链式查询和复杂查询。

数据分区是许多领域应用的重要问题,哈希分区是主要方法之一。
根据RDF数据集的分区方式和如何存储和访问分区,将现有的分布式RDF系统分为两类。
1、使用水平(随机)分区划分RDF数据集,使用分布式文件系统存储分区,使用分布式编程模型,并行访问服务器集群来处理查询。举例SHARD。该类方法问题在于处理查询的节点间通信成本过高。
2、通过对subject,object,predicate或者他们的组合进行哈希分区。但是分区被存储在本地的数据库中,通过本地查询接口访问。与第一种相比,只适用于诸如Hadoop,MapReduce之类的分布式计算框架,以执行分布式查询所需的跨服务器协调和数据传输。(没有人关注这点,导致长的查询延迟。)Concretely, Virtuoso Cluster , YARS2 , Clustered TDB and CumulusRDF are distributed RDF systems which use simple hashing as their triple partitioning strategy, but differ from one another in terms of their index structures.

图划分已得到广泛的研究,典型的图形分割将图形划分为较小的分区,他们之间具有最小的连接。为了各个分区的服务器平衡,很多人努力将图形分割成大小类似的分区。实验表明,min-cut based graph partitioners outperforms the simple hash partitioning approach。目前的图形分割器问题在加载RDF数据的高开销以及对大型数据集的可扩展性差。所以一些以顶点为中心的编程模型被提出,用于在商品服务器集群上进行高效图形处理,或者最大限度地减少内存中图形计算所需要的磁盘IO。

3. OVERVIEW

系统架构图

数据分区

语义哈希分割器位于主服务器执行三个主要任务:
1、预分区优化器准备用于哈希分区的输入RDF数据集,旨在增加下一步中生成的每个基准分区的访问位置
2、基准散列分区生成器使用简单的哈希分割器创建一组基线散列分区。在第一个原型实现中,我们将分区数设置为可用的从属服务器的数量。
3、语义哈希分区生成器利用triple replication策略来确定如何扩展每个基准分区以生成具有高访问局部性的语义哈希分区。
在从属服务器上,可以安装RDF特定的存储系统或关系DBMS来存储数据分区算法生成的分区。

分布式查询处理

主服务器作为SPARQL查询的接口。

分区内处理

意味着可以在每个服务器上通过本地搜索与Q的三重模式匹配的子图来完全执行查询Q。处理Q的服务器间的通信只是主服务器想从属服务器发送Q和接受部分结果。

分区间处理

整个查询Q不在任何分区服务器上执行,并且需要将其分解为一组子查询,以便可以通过分区内处理来评估每个子查询。分区间处理的通信成本可能非常高。

4. SEMANTIC HASH PARTITIONING

语义哈希分割算法在三个主要步骤中执行数据分区:
(i) Building a set of triple groups which are baseline building blocks for semantic hash partitioning. 构建一组三元组
(ii) Grouping the baseline building blocks to generate baseline hash partitions. 分组基准构建模块以生成基线散列分区。
(iii) Generating k-hop semantic hash partitions, which expands each baseline hash partition via controlled triple replication. 生成k-hop语义哈希分区,它通过受控triple replication 来扩展每个基线哈希分区。

4.1 Buiding Triple Groups

直观的划分方法是将有同样subject或object的三元组分到一起形成triple group。triple group作为基准构建块。这样在每个服务器上可以并行高校地处理星型查询。

DEFINITION 1. (RDF Graph) An RDF graph is a directed, labeled multigraph, denoted as G=(V,E,ΣE,lE) where V is a set of vertices and E is a multiset of directed edges (i.e., ordered pairs of vertices). (u,v)E denotes a directed edge from u to v. ΣE is a set of available labels (i.e., predicates) for edges and lE is a map from an edge to its label (EΣE)

在RDF数据集中,两个点之间可能有多个边。对于RDF图中的每个点v,我们基于v在triple groups中的角色,定义三种triple group。(i) subject-based triple group (s-TG) of v. (ii) object-based triple group (o-TG) of v (iii) subject-object-based triples in which their subject or object is v.

DEFINITION 2. (Triple Group) Given an RDF graph G=(V,E,ΣE,lE) , s-TG of vertex vV is a set of triples in which their subject is v, denoted by sTG(v)={(u,w)|(u,w)E,u=v}. We call v the anchor vertex of s-TG(v). Similarly, o-TG and so-TG of v are defined as oTG(v)={(u,w)|(u,w)E,w=v} and soTG(v)={(u,w)|(u,w)E,v{u,w}} respectively.

我们为RDF图中的每个定点生成一个triple group,并使用一组triple group作为基准构建块来生成k-hop语义散列分区。

4.2 Constructing Baseline Hash Partitions

采用第一步生成的triple groups, 并在每个triple group的锚点定点应用散列函数,并将具有相同散列值的triple group放在同一个分区中。三种类型的triple group也有三种类型的分区。

DEFINITION 3. (Baseline hash partitions) Let G=(V,E,ΣE,lE) denote an RDF graph and TG(v) denote the triple group anchored at vertex vV . The baseline hash partition P of graph G results in a set of n partitions, denoted by {P1,P2,...,Pn} such that Pi=(Vi,Ei,ΣEi,lEi) , iVi=V,iEi=E . If Vi={v|hash(v)=i,vV}{w|(v,w)TG(v),hash(v)=i,vV} and Ei={(v,w)|v,wVi,(v,w)E} , we call the baseline partitioning P the s-TG hash partitioning. If Vi={v|hash(v)=i,vV}{u|(u,v)TG(v),hash(v)=i,vV} and Ei={(u,v)|u,vVi,(u,v)E} , we call the baseline partitioning P the o-TG hash partitioning. In the above two cases, EiEj= for 1i,jn,ij . If Vi={v|hash(v)=i,vV}{w|(v,w)TG(v)(w,v)TG(v),hash(v)=i,vV} and Ei={(v,w)|v,wVi,(v,w)E} , we call the baseline partitioning P the so-TG hash partitioning

可以通过检查基准分区的完全覆盖以及subject-based和object-based的基准分区的不相交属性来判断基准分区的正确性。另外,通过对度较高的锚点定点进行微调可以进一步提高服务器集群的分区平衡。

4.3 Generating Semantic Hash Partition

前两步使用散列函数得到基线分区有两个优点:(i)简单(ii)生成平衡良好的分区。但缺点在于复杂的非星型查询的性能不佳。
我们通过基于跳跃的受控triple replication 来开发局部感知语义哈希分区算法。

4.3.1 Hop-based Triple Replication

目标是创建一组语义哈希分区,使得可以通过分区内处理来评估的查询数量增加并最大化。下图说明语义哈希分区的概念和优点。
这里写图片描述

DEFINITION 4. (Path) Given an RDF graph G=(V,E,ΣE,lE) , a path from vertex uV to another vertex wV is a sequence of vertives, denoted by v0,v1,...,vk , such that v0=u,vk=w,m[0,k1]:(vm+1,vm)E . A bidirection path from vertex u to vertex w is a sequence of vertices, denoted by v0,v1,...,vk , such that v0=u,vk=w,m[0,k1]:(vm+1,vm)E . The length of the apth v0,v1,...,vk is k.
DEFINITION 5. (Hop count) Given an RDF graph G=(V,E,ΣE,lE) , we define the hop count from vertex uV to vertex vV , denoted by hop(u,v), as the minimum length of all possible forward direction paths from u to v. We also define the hop count from vertex u to edge (v,w)E , denoted by hop(u,vw), as “1+hop(u,v)”. The reverse hop count from vertex u to vertex v, reverse_hop(u,v), is the minimum length of all possible reverse direction paths from u to v. The bidirection hop count from vertex u to vertex v, bidirection_hop(u,v), is the minimum length of all possible bidirection paths between u to v. The hop count hop(u,v) is zero if u=v and if there is no forward direction path from u to v. Similar exceptions exist for reverse_hop(u,v) and bidirection_hop(u,v).

使用k-hop扩展来控制triple replication的级别,以及查询性能和存储成本之间的平衡。优化k值的方法:利用有代表性的历史查询。生成k跳语义哈希分区的三种方法:前向,反向,双向。

4.3.3 Selective k-hop Expansion

通过使用一些上下文感知过滤器来促进进一步控制k-hop扩展,而不是通过扩展k跳来复制三元组。举例rdf:type关系。

4.3.4 URI Hierarchy-based Optimization

We conjecture that if such URI references (vertices) are placed in the same partition, we may reduce the number of replicated triples.
We measure the percentage of RDF triples whose subject vertex and object vertex share the same ancestor for different levels of the hierarchy. If, at any level of the hierarchy, the percentage of such triples is larger than a system-supplied threshold (empirically defined) and the number of distinct URLs sharing this common hierarchical structure is greater than or equal to the number of partition servers, we can use the selected portion of the hierarchy from the top to the chosen level, instead of full URI references, to participate in the baseline hash partitioning process.

4.3.5 Algorithm and Implementation

这里写图片描述

5 DISTRIBUTED QUERY PROCESSING

5.1 Query Analysis

这里写图片描述
利用Theorem 1,找查询的半径和语义哈希分区的k作对比。

5.2 Query Decomposition

尽量少的分解子查询。
具体的说,通过将Q的查询图中的所有顶点放入待检查的候选顶点集合中来开始查询分解。如果数量最少的有多个,找数量标准偏差最小的。

5.3 Distributed Query Execution

Intra-partition processing steps: 把查询发送到各个从属服务器进行处理。
Inter-partition processing steps: 把所有子查询的中间结果加载到HDFS中并使用hadoop MapReduce进行连接。

6 EXPERIMENTAL EVALUATION

6.1 Experimental Setup and Datasets

这里写图片描述

6.2 Data Loading Time

The random partitioning (rand) and the simple hash partitioning on subjects (hash-s) have the fastest loading time because they just need to read each triple and assign the triple to a partition randomly (rand) or based on the hash value of the triple’s subject (hash-s). Our forward direction-based approaches have fast loading time.
这里写图片描述

6.3 Redundancy and Triple Distribution

这里写图片描述
随机分区rand和对于subject的简单哈希分区的比例为1。前向方法可以在保持跳数的同时减少复制的三元组的数量。但是使用双向去扩展基线分区时辅助的开销很大。
这里写图片描述
语义哈希分区方法具有几乎完美的均匀分布。

6.4 Query Processing

这里写图片描述
用于查询评价的查询。 The forward radii of SP2B Complex1 and Complex2 are ∞ and 2 respectively. The bidirection radii of SP2B Complex1 and Complex2 are 3 and 2 respectively.
这里写图片描述
除了需要进行区间处理的Q7之外,前向分区方法(2f,3f和4f)的查询处理时间比其他所有的分析技术又快。双跳双向方法(2b)也具有良好的性能。
对于Q7,基于方向的分区方法中间结果较大所以慢,但是和简单的哈希分区方法相比要快。
这里写图片描述
表六显示在其他数据集上的查询处理时间。

6.5 Scalability

这里写图片描述
我们通过改变数据集大小和集群大小来评估分区方法的可扩展性。图8示出了星型查询Q6,Q13和Q14的查询处理时间的增加几乎与数据集大小成比例。对于Q7,在2跳双向(2b)扩展下,查询处理时间只会稍微增加,因为其结果不会随数据集大小而变化。另一方面,在2跳(2f)扩展中,查询处理时间大大增加,因为中间结果根据数据集大小增加,即使最终结果是相同的,无论数据集大小如何。
图9显示了在LUBM267M数据集上从5到20个不同数量的从服务器的可扩展性实验的结果。对于选择性高(Q1,Q3,Q4,Q5和Q10)的星形查询,由于分区大小减少,处理时间随着服务器数量的增加而略有下降。对于低选择性的星形查询(Q6,Q13和Q14),查询处理时间的减少几乎与从属服务器的数量成正比。

6.6 Effects of optimizations

这里写图片描述
使用rdf:type-like 三元组优化,和URI层次结构优化大大减少了分区大小。

7 CONCLUSION

在本文中,我们已经表明,当数据需要跨多个服务器节点进行分区时,数据分区算法的选择可以在服务器网络上的数据传输成本方面产生很大的不同。我们提出了一种新颖的语义散列分区方法,从简单的哈希分区开始,通过仅复制必需的三元组来扩展每个分区,以增加访问局部性并促进SPARQL查询的分区内处理。我们还开发了一个分区感知分布式查询处理工具来生成位置优化查询执行计划。此外,我们提供一套局部感知优化技术,以进一步降低分区大小,并降低分布式查询处理期间的分区间通信成本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章