Adaptive Distributed RDF Graph Fragmentation and Allocation based on Query Workload

本文主要是介绍Adaptive Distributed RDF Graph Fragmentation and Allocation based on Query Workload,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文由学者Peng Peng,Lei Zou,Lei Chen和Dongyan Zhao于2019.4在《IEEE Transactions on Knowledge and Data Engineering》联合发表
原文下载链接文末自取

在《Query Workload-based RDF Graph Fragmentation and Allocation》中研究了分段和分配策略,本文自适应地维护频繁访问模式(FAP)反映工作负载的特征,同时确保数据完整性和近似比。由于评估SPARQL查询有较强局部性的子图(同态)匹配,提出了基于局部模式的碎片化策略,首先,在查询工作负载中挖掘和选择频繁子图模式(频繁访问模式FAPs),然后提出三种分段策略:垂直,水平和混合分段,满足不同类型的查询处理目标的同时划分RDF图。分段后,再在平衡碎片的同时将碎片分配到各个站点。

分段和分配
工作重点是RDF存储库的“数据碎片和分配”,而提议的碎片是基于挖掘的频繁模式。通过利用分布式关系数据库设计的经验,分开分布式设计,更好处理问题。
分段
在这里插入图片描述
分配:给定碎片F,然后在不同的站点间分配碎片。 在这里插入图片描述
给定RDF图G,查询工作负载Q和由站点S组成的分布式系统,目标是首先将G分解为碎片F,然后找到F到S的分配A。大多数SPARQL查询都使用一些频繁的RDF属性,所有属性分为以下两类:
在这里插入图片描述
在不同站点之间划分具有频繁属性的边,可提高查询性能。收集RDF图中所有不频繁边形成冷图。任何现有方法均用于冷图,但此研究仅在评估SPARQL查询时才使用冷图,如图为系统架构:
在这里插入图片描述
离线阶段:在工作负载中挖掘和选择一些FAP。 还要维护和更新选定的FAP集,适应工作量的变化。 然后,基于选择FAP,提出三种碎片策略:VF、HF和MF。片段分布在不同的站点间,同时在分段和分配过程中维护元数据。
在线阶段:将查询分解为不同片段上的几个子查询,并生成有效的执行计划。 为了有效地评估子查询,提出了推动交叉碎片连接优化方法和用于生成有效执行计划的成本模型。最后,执行计划并返回结果。

频率访问模式定义、方法和访问频率值以及FAP集早前已经说明,不重复阐述。

FAP选择:考虑频繁模式p。如果从由模式p匹配引起的图生成的一个片段,则通过使用该片段可以加快对包含该模式所有查询的评估。 FAP命中的查询越多,在查询处理过程中收益越大。定义一个函数是选择模式p时p命中的查询数量。据实验观察结果表明,较大FAP更好被选为构建碎片。

将系统的存储容量标准化为值SC,SC=Disk_Space/Avg_Triple_Size,其中“Disk_Space”是系统存储的磁盘空间,“Avg_Triple_Size”是一个三元组的平均字节数。 所以约束为:
在这里插入图片描述
优化目标:在存储约束下最大化利益
由于在受存储约束下,找到一组具有最大效益的FAP是NP-hard,具体处理算法阅读原文。

频率访问模式的存储和维护
选择FAP后,基于DFS提出了基于树的结构,维护它们并处理新输入的查询。

  • DFS编码:DFS通过执行DFS将图转换为唯一的边序列。 在DFS搜索中,顶点按发现时间下标。 前边是DFS树的边,后边是其余的边。 按如下顺序排列后边。 顶点v的所有后边出现在指向v的前边后。有Vi,其带有两条后边Vk和Vj,如果k>j,则ViVj在ViVk之前,然后形成完整的边序列,即DFS代码。

  • FAP树:使用DFS代码,建立FAP树,记录所有FAP,如图为FAP树,其中每个节点代表工作负载中的模式:
    在这里插入图片描述在FAP树,每个FAP映射到一个节点,并且当且仅当n映射到的FAP的DFS代码是n’映射到的DFS代码的前缀时,节点n才是节点n’的先辈。根据DFS代码的属性,n映射到的FAP是n’映射到模式的超图。给定映射到模式p和p的变量集var§的节点, 与FAP树中的节点相关联的信息如下:
    在这里插入图片描述
    基于FAP树和统计信息,分解输入查询并优化查询评估。FAP树记录了只比FAPs多一条频繁属性边的不频繁模式。将这些频繁的模式插入到FAP树中作为叶节点,用于检测查询工作负载变化时的频繁模式更新。由于FAP满足先验规则,并且不频繁模式的超图不频繁,所以叶节点映射到的模式是最小不频繁模式。当工作负载变化时,必须从叶节点映射到的模式中生成新的频繁模式。由于输入新的查询,找到新的FAP,所选FAP的好处也相应变化。通过输入新查询时改变模式的数量衡量FAP树的有效性。 通过实验研究,发现少量的更新操作不会明显改变工作负载数量的分布,因此只需为每个插入或删除更新相关FAP的ID列表。当存在许多FAP改变时,则FAP树质量降低,有两种类型的更改:

  • 更改一:首先,FAP树中的某些FAP很少出现。其次,新的时间窗口中有一些新的FAP。因为我们总是在FAP树中维护包含FAP的查询的ID,所以很容易检测到第一个类型。如果列表中的查询数量小于阈值minSup,则相应的模式变得不常见。

  • 更改二:为了检测第二种类型的更改,执行以下方法。由于每个新时间窗口内挖掘所有FAP检测新模式损耗过大。所以在新时间窗口,如果有新FAPp,则p必须映射到FAP树中的叶节点l或者p是叶子节点l的超图。根据FAP的先验属性,通过检查l的查询图列表来检测到叶节点l更改为FAP。后续内容有兴趣请自行阅读。

本论文中介绍了三种碎片策略,在《Query Workload-based RDF Graph Fragmentation and Allocation》中已经对垂直和水平策略有所了解,所以这两种碎片策略阐述省略,结合两者优势设计出MF策略:
给定SPARQL查询工作负载中的一组频繁模式,VF基于每个选定的频繁模式p,HF基于结构性最小谓词mp。HF提供了细粒度的分区,设P表示所有选择的频繁模式。在MF中,为垂直分区保留部分频繁模式(Pv),而为HF设计其他模式(Ph)。然后,需要确定模式p属于Pv或Ph:给定频繁的模式p,M§表示从模式p派生的所有结构最小谓词。分类策略基于FAP的访问频率和相应的结构minterm谓词。M(p)分为两个子集:一组访问频率大于minSup的结构minterm谓词;一组结构minterm谓词的访问频率小于minSup,定义如下:
在这里插入图片描述
如果M’’(p)的总访问频率大于minSup,则可从p生成的垂直片段评估的许多查询,这种情况下,基于模式p执行VF。 如果M’’§的总访问频率小于minSup,则根据结构谓词M’(p)水平划分RDF图。 依据频繁结构最小谓词M’(p)操作HF,混合碎片策略如下:
在这里插入图片描述
分配
对RDF图分段后,然后将所有分段分配在几个站点上。 由于分段会一起访问某些FAP或结构最小谓词,所以将其相应的片段放在一个站点中,避免分布式连接。此外,还产生了评估片段间的紧密相关性的定义:在这里插入图片描述
根据亲和度大小可以判别片段间的紧密关系。如果两个片段的关联度较大,说明同一查询涉及两个片段,如此相关的片段应将它们放在一起减少跨站点连接的数量。分配的目的是尽可能频繁地在同一站点的片段中进行相同的查询。 同一站点的每两个片段应一起访问。本研究将PNN扩展为将所有片段聚类为分配A={A1,A2,… ,An},同一群集的所有片段都放置在一个站点。首先,如下构建分配图:在这里插入图片描述
分配将所有片段聚集在m个群集中,并且群集中所有片段都在AG中连接,扩展AG密度的定义,如下所示:
在这里插入图片描述
其中分子是Ai中所有边的权重之和,而分母是Ai中连接任意两个顶点的边数。
分配算法的目的是在确保平衡的同时搜索具有最高密度的m个AG子图,提出了PNN变体的分配算法,并且在每个步骤中选择合并AG中两个顶点的局部最优选择,该算法会贪婪选择局部最优选择。

查询分解
给定查询Q,基于FAP树的统计信息,将查询Q分解为几个子查询,子查询映射到不同的片段。 由于基于FAP划分RDF图,所以将查询图Q分解为与FAP同构的子查询。 如果查询涉及不频繁的属性,则查询中每个仅包含不频繁属性的子图对应一个子查询,查询分解定义如下:
在这里插入图片描述
给定查询Q,可能存在多个查询分解。为了找到优化的查询计划,提出一种成本模型查询分解方法找到成本最小的有效查询分解方法。分解成本是连接D和每个子查询所有匹配的成本,并且每对子查询的匹配可联合。查询分解后,qi映射到片段Fi,所以通过查找FAP树,得到Fi中的匹配数,而一个SPARQL查询包含的边缘不超过10个。使用查询分解算法,首先初始化单个边的所有子查询的分解。然后,枚举所有子查询,直到FAP的最大为止,并将它们放在FAP树中。我们将每个子查询q转换为DFS代码,并使用DFS代码对FAP树自顶向下搜索。如果q的DFS代码等于FAP树中选定FAP的DFS代码,则递归查找的所有有效分解并将q插入这些分解中。遍历所有Q子查询的步骤之后,可确定Q的所有有效分解。最后计算所有有效分解的成本并选择最佳分解。对于扩展的System-R算法已经了解,不再叙述。

推送跨片段联接:
给定SPARQL查询Q,最终分解通常包含具有高选择性的子查询和具有低选择性的子查询。 提出推动跨片段连接的策略仅生成用于选择子查询的中间结果。推动跨片段连接限制了无法与其他站点中其他子查询的任何匹配连接的中间结果,但以不同方式减少了中间结果的数量。半联接技术需要在半联接后进行额外的内部联接操作,而推动跨片段连接通过删除片段的不相关部分降低查询评估的成本。推动交叉片段联接可避免为非选择子查询生成许多不必要的中间匹配,原因是使用从预测结果开始的图遍历找最终结果。

成本评估
提供成本模型评估优化技术的成本,优化重点是总执行时间。依靠成本模型来进行集中的RDF查询评估,查询查询的总时间=本地处理时间(I / O + CPU时间)+通信时间。具体方法须阅读原文理解。

查询执行
查询优化后,在不同的联接运算符的情况下确定了分布式执行计划。 然后,我们执行分布式执行以得出最终结果。 加入策略,当考虑不同的联接运算符的情况下确定分布式执行计划时,需要会同时考虑自然联接,半联接和推动跨片段联接。使用成本模型来估算三种类型的联接的成本,并选择成本最小的联接技术。子查询处理,每个子查询在相应的站点中执行,每个子查询的优化都使用现有的集中式RDF数据库系统。

余下部分是实验内容,不再赘述。

原文下载链接

这篇关于Adaptive Distributed RDF Graph Fragmentation and Allocation based on Query Workload的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/349942

相关文章

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

构建现代API:FastAPI中Query与Body参数的最佳搭配

在FastAPI中,Query 和 Body 是两种不同的依赖注入器,它们的应用场景取决于你的具体需求。以下是它们各自常见的使用场景: Query 参数 使用场景: 当你需要从URL中获取一些简单的参数时,例如过滤、排序、分页等。 当数据量不大,且可以作为URL的一部分安全传输时。当数据不需要复杂的结构时。 Body 参数 使用场景: 当你需要发送较为复杂的数据结构时,例如包含多个字段

终止distributed tensorflow的ps进程

1.直接终止: $ ps -ef | grep python | grep 文件名 | awk {'print $2'} | xargs kill文件名为当前运行的程序,名称如:distribute.py 2.查找pid,后kill: $ ps -ef | grep python | grep 文件名 | awk {'print $2'}$ kill -9 <pid>

MACS bdgdiff: Differential peak detection based on paired four bedGraph files.

参考原文地址:[http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html](http://manpages.ubuntu.com/manpages/xenial/man1/macs2_bdgdiff.1.html) 文章目录 一、MACS bdgdiff 简介DESCRIPTION 二、用法

Neighborhood Homophily-based Graph Convolutional Network

#paper/ccfB 推荐指数: #paper/⭐ #pp/图结构学习 流程 重定义同配性指标: N H i k = ∣ N ( i , k , c m a x ) ∣ ∣ N ( i , k ) ∣ with c m a x = arg ⁡ max ⁡ c ∈ [ 1 , C ] ∣ N ( i , k , c ) ∣ NH_i^k=\frac{|\mathcal{N}(i,k,c_{

Android Studio打开Modem模块出现:The project ‘***‘ is not a Gradle-based project

花了挺长时间处理该问题,特记录如下:1.背景: 在Android studio 下导入一个新增的modem模块,如MPSS.DE.3.1.1\modem_proc\AAA, 目的是看代码方便一些,可以自由搜索各种关键字。但导入该项目时出现了如下错误: The project '***' is not a Gradle-based project.造成的问题: (1) project 下没有代码,而

【硬刚ES】ES基础(二十) 单字符串多字段查询:Dis Max Query

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。