《Evaluating SPARQL Queries on Massive RDF Datasets》——笔记

Abstract

现在的系统大部分生成静态分区,对于一些不适合现有分区的查询并不友好。本文提出AdHash。

  1. 初始时,采用哈希分区。快捷且可并行。
  2. 监视数据访问模式并通过逐步重新分发和复制经常访问的数据来动态地适应查询负载。

Introduction

RDF不需要预定义模式,可以方便的表示不同来源的数据,因此被社交网络,搜索引擎等广泛使用。传统的集中式RDF系统,如:RDF-3X和TripleBit不能应对这过大的数据量。但是分布式系统在组合中间成果时,可能会产生较大成本。
分布式系统采取精准分区和复制部分三元组,来减少分区间查询,但是问题仍然存在。
挑战
现在的分布式系统有两个问题,一,分区成本,如果启发式简单,则在查询期间会有过多的通信。复杂的启发式可能会带来巨大的预处理成本和复制率。但是经常访问到的数据只占总体的一小部分,应根据查询来进行分区。二、适应性,静态的分区并不能适应各种各样的查询。
本文提出了自适应哈希的方法(AdHash):
**Lightweight Initial Partitioning: **hash triples’subjects. low cost & do not incur replication.
Hash-based Locality Awareness: 最大化可并行处理的join的数量。
Adapting by Incremental Redistribution: 对于频繁查询的数据进行重分配或者复制。

AdHash Architecture

这里写图片描述

2.1 Master

首先划分数据到每个worker上,并收集特征。然后从用户得到查询请求,生成查询计划,收集查询中间结果,输出最终结果给用户。
String Dictionary: 将RDF字符串编码成ID。
Data Partitioner: 对subject进行分区,因为连接subject的链接较多。
Statistics Manager: 维护关于图的统计信息,在全局查询计划或对图进行调整时使用。
Redistribution Controller: 以热量图的形式进行监测,对于一些热点pattern采用自适应增量重分配过程。
Locality-Aware Query Planner: 利用统计信息判断是否查询是否能在一个分区内执行。如果不能则找出沟通和连接最少的分解方式。
Failure Recovery: 存储了字典,统计信息,模式索引,可以用来故障恢复。

2.2 Worker

Storage Module: 首先对谓词进行哈希,简历谓词索引,可直接对谓词进行搜索。然后对于每个谓词的三元组堆分别对主语和宾语进行哈希,可以支持利用s,p以及o,p的搜索。
Replica Index: 用于存储和索引复制数据作为自适应的结果,起初不包含数据,由增量重分布(IPD)进程动态更新。
Query Processor: 两种模式,需要通信的分布式模型,无需通信的并行模型。
Local Query Planner: 对于上一条的并行模型,需要本地生成查询计划。

2.3 System overview

在对数据进行编码和分区后,每个worker装载三元组并收集统计信息,并汇集到主节点。Redistribution Controller利用全局统计信息将Q 转换成Q ,如果Q 出现在模式索引(PI)中或者是一个在subject上的星型查询那么可以并行查询,否则分布式查询。随着查询的不断送入,Redistribution Controller不断更新热量图,识别出热点模式,触发增量重分布(IRD)过程,越来越多的查询在并行查询的模式下进行。

Demonstration Details

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