论文浅尝 | Efficient RDF graph storage based on RL

news2025/7/5 22:30:41

143874ab84c9be7ff43a85a110af09f6.png

笔记整理:郑国鹏,天津大学硕士

链接:https://link.springer.com/article/10.1007/s11280-021-00919-x

动机

知识是人工智能的基石,它通常以RDF图的形式表示。各个领域的大规模RDF图对图数据管理提出了新的挑战。关系型数据库因其成熟稳定的特性,是存储图数据库的热门方案。然而,在关系型数据库中管理结构复杂的RDF图需要复杂的存储结构设计。为了解决这个问题,本文采用了强化学习(RL)来优化RDF图的存储分区方法。这是第一个采用RL来解决这个问题的工作。此外,本文提出了RDF表的特征化方法,保证了状态表示的充分性,并提出了查询重写策略,保证了存储结构变化时查询结果的正确性。在各种RDF基准上进行的大量实验表明,本文所提出的方法明显优于最先进的存储策略。

亮点

GSBRL的亮点主要包括:

(1)本文是第一个采用强化学习(RL)解决RDF图存储问题的工作

(2)本文为图的存储问题设计了有效的RL模型。并且提出了查询重写策略,以确保在存储结构发生变化时查询结果正确。

概念及模型

下图显示了GSBRL的结构概况。图中的虚线表示输入、输出和用户加载训练好的模型之间的过程边界。GSBRL将数据集和工作负载作为关系数据库的输入。而训练好的模型将被输出给用户使用。实线所包含的部分是GSBRL的核心,其中代理不断进行交互,以获得最佳的存储结构,目的是使查询时间最小化。

系统的架构如下:

(1)输入模块:为了获取数据集和查询工作负荷。数据集以三元组的形式存储在一张表中。查询工作负载的输入是一组由SPARQL语句改写的SQL语句。

(2)矢量化模块:提取并将数据存储特征转换为矢量。这个模块将在第4.3节介绍

(3)DDQN模块:通过RL做出存储决策。它为数据库选择要执行的动作。数据库返回工作量的查询时间以计算奖励。在这个过程中,需要对查询进行重写。DDQN不断与数据库环境互动,以更新Q值。DDQN的输出是一个固定长度的向量,它包含了当前状态下不同行动的Q值。这个模块将在第4.4节中介绍。

(4)查询重写模块:负责重写查询,以便在当前存储结构下尽量减少查询执行时间。当存储结构发生变化时,查询重写策略通过调整查询执行策略以适应变化后的存储,确保高性能。这个模块将在第5节介绍。

(5)在模型训练完成后,用户可以执行该模型来建立数据存储结构。

ead33fe9f42b00774c709fae77986f1c.png

存储特征矢量化

由于图数据的规模可能非常大,不可能将所有的数据作为神经网络的输入。因此,有必要提取图数据的有用特征并将其映射为固定长度的矢量。

RDF图中的一个重要特征是其边上的谓词。因此,本文将图中的谓词矢量化,以代表当前表的存储状态,并将该矢量作为神经网络的输入。映射方法如下:

首先,按照表的顺序得到各表(除初始表t0外)的所有谓词,进行向量映射。在表中,有3个谓词,分别编码为1、2、3。在对表的谓词进行映射后,在不同的表之间增加一个间隔位,形成的向量为< 1, 2, 4, 3 >。如果该向量没有达到输入向量的维度,则用零填充,直到达到最终向量显示的固定输入维度。

2bcf44a72461f823e04e09760a386705.png

DDQN模块

本文采用 Deep Q-Network(DDQN)来训练模型。模型训练算法如下所示:

65a9689f7eccbf3104f93bffc979a019.png

给定一个特定的数据集D和工作量N。一开始,环境Env被初始化为一个三元组表t0,并设置了空行动列表L。接下来,深度强化学习神经网络RL被建立。RL在第3-14行中执行迭代多个episode。在训练过程中,RL的参数被不断调整,以适应环境,从而达到更好的性能。最后,我们可以得到一个可以加载的训练模型。

强化学习模型的训练完成后,可以得到训练好的模型,其中包含每个动作对应的值。本文最终的需要获取RDF最佳存储结构。存储结构的生成过程如下。

算法2描述了基于RL模型的存储结构生成过程。给定一个特定的数据集D和工作负载N,一开始,将环境Env初始化为一个三元组表t0,并设置一个初始结构G。接下来,载入深度强化学习神经网络RL。最优存储结构及其相应的最大累积奖励在第3行被初始化。模型在第4-17行中迭代多个episode。最后,可以得到一个最佳存储结构Goptimal。

05b0d75d54eeaa4757d75c26dabc1a0b.png

实验

作者采用了3个公开数据集进行实验,分别是:LUBM、WatDiv、DBpedia。前两个为合成数据集,后一个为真实数据集。与Jena、DB2RDF、RDF-3x、Virtuoso四个模型进行比较。评价指标为查询执行时间。

如图显示,对于LUBM。GSBRL在所有10个查询中都明显快于Jena和DB2RDF。

在最坏的情况下,GSBRL比Jena快50%,在最好的情况下是Jena的四分之一。GSBRL在最差情况下是DB2RDF的三分之一,在最好情况下是DB2RDF的八分之一。然而,在LUBM基准上,RDF-3X的性能要比GSBRL好。这可能是得益于六元组的索引。当GSBRL和Virtuoso在10个查询中进行比较时,GSBRL在两个查询中比Virtuoso快,即LQ2和LQ4。由于数据规模小,查询时间短,Virtuoso在大多数工作负载上比GSBRL表现更好。

f64c9bf0df4ac52572451e0f27be68c0.png

图中显示了GSBRL和其他四个系统在不同规模的数据集上对所有20个WatDiv查询的运行时间。GSBRL在大多数情况下都优于其他系统。随着数据规模的增加,GSBRL查询时间没有明显增加,但DB2RDF和Jena的表现很差。除了W4和W7,GSBRL的运行速度比RDF-3X快。除了W2、W4、W9和W10之外,GSBRL在大多数数据集上的运行速度也比Virtuoso快。对于四个子数据集,这两个系统的性能几乎相同,Virtuoso比GSBRL快大约0.5秒。

67e450a7dad7aaf2e65994687350200a.png

在DBpedia数据集上。无论是long-running query, 还是 medium-running query,GSBRL查询时间均少于对比模型。

4002b8ab03b636ee4d44de6371647b4b.png

6c748817acf172764df41954794790ce.png

总结

为了解决图数据的自动关系存储结构设计问题,本文提出了基于强化学习的GSBRL。该方法综合利用了数据和工作负载的特点。并具有较强的普适性,即对不同的图数据集都有一个有效的存储方案。高普适性可以极大地提高大数据集下的数据存储效率。实验结果表明,GSBRL的性能优于现有的最好的模型。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

8e65196d2e644c45cfade839d0bd937c.png

点击阅读原文,进入 OpenKG 网站。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39679.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java8 Collectors.toMap() 的使用

目录一、简单介绍用法1&#xff1a;根据某一属性&#xff0c;对对象的实例或属性做映射用法2&#xff1a;根据某一属性&#xff0c;对对象集合进行去重二、Duplicate key 异常1&#xff09;异常重现&#xff1a;2&#xff09;异常截图&#xff1a;3&#xff09;异常说明&#x…

点云梯度下采样

点云下采样又称点云精简。 均匀网格下采样 均匀网格下采样法是建立在空间包围盒精简算法之上对散乱点云快速简化的一种算法&#xff0c;其基本思想为&#xff1a;根据点云数据的密度确定最小三维网格&#xff08;体素&#xff09;的边长为a∗b∗ca*b*ca∗b∗c&#xff0c;计算…

含电热联合系统的微电网运行优化matlab程序(yalmip+cplex)(yalmip+gurobi)

含电热联合系统的微电网运行优化matlab程序&#xff08;yalmipcplex&#xff09;&#xff08;yalmipgurobi&#xff09; 参考文献&#xff1a;含电热联合系统的微电网运行优化 在当前能源互联网迅速发展及电热联系日渐紧密的环境下&#xff0c;提出基于电热联合调度的区域并网…

个人电影网站web网页设计制作—— 影视公司5页 DIV+CSS制作 浮动布局

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 精彩专栏推荐&#x1f4…

【Vim】更改Vim编辑器的字体大小、改变字号;永久改变字号;改变字体颜色、字体显示样式

一、问题背景 初次使用Vim&#xff0c;由于电脑分辨率较高&#xff0c;在编辑器上显示的文本字号较小&#xff0c;不甚看清。 我使用的是Gvim for Windows。 二、网上的已有方法小结 2.1 快捷键ctrl 和ctrl - 标题中提到的号&#xff0c;需要按下shift才能输入&#xff0c…

用DIV+CSS技术设计的公益主题网站——防止电信诈骗(web前端网页制作课作业)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

狂神说MybatisPlus学习笔记

MyBatis-Plus 学习MyBatis-Plus之前要先学MyBatis–>Spring—>SpringMVC 为什么要学它?MyBatisPlus可以节省我们大量的时间,所有CRUD代码都可以自动完成 JPA, tk-mapper ,MyBatisPlus 偷懒用的! 1.简介 是什么? 2.特性 无侵入&#xff1a;只做增强不做改变&am…

C语言第十二课(上):操作符详解【算数、移位、位、赋值操作符】

目录 前言&#xff1a; 一、操作符分类&#xff1a; 二、操作符详解&#xff1a; 1.算术操作符、-、*、/、%&#xff1a; 2.移位操作符>>、<<&#xff1a; 1.原码、反码与补码&#xff1a; 2.左移操作符&#xff1a; 3.右移操作符&#xff1a; 4.警告⚠&#xf…

Qt5开发从入门到精通——第十二篇三节(Qt5 事件处理及实例——多线程应用、服务器端编程、客户端编程)

提示&#xff1a;欢迎小伙伴的点评✨✨&#xff0c;相互学习c/c应用开发。&#x1f373;&#x1f373;&#x1f373; 博主&#x1f9d1;&#x1f9d1; 本着开源的精神交流Qt开发的经验、将持续更新续章&#xff0c;为社区贡献博主自身的开源精神&#x1f469;‍&#x1f680; 文…

用DIV+CSS技术设计的抗击疫情网页与实现制作(web前端网页制作课作业)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

基于C++实现的游客信息管理系统

目 录 一、 项目技术路线说明 1 二、 项目需求分析 2 2.1 项目介绍 2 2.2 功能需求 2 三、 系统分析与设计 3 3.1 本程序需解决的关键技术问题 3 3.2 程序流程 3 3.2.1 注册或登陆流程图 3 3.2.2 信息日期判断流程图 4 3.2.3 操作功能选择模块 5 3.3 功能模块 6 3.3.1 增删改查…

让Unity打包AssetBundle更轻松

AssetBundle作用1、AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景&#xff0c;可以在游戏运行的时候被加载&#xff1b; 2、AssetBundle自身保存着互相的依赖关系&#xff1b; 3、压缩包可以使用LZMA和LZ4压缩算法&#xff0c;减少包大小&#xff0c;更快…

HTML小游戏13 —— 仿《神庙逃亡》3D风格跑酷游戏《墓地逃亡》(附完整源码)

&#x1f482; 网站推荐:【神级源码资源网】【摸鱼小游戏】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且实用的计…

BGP服务器

BGP服务器被称为“边界网关协议”(BGP)&#xff0c;是一种用于在不同主机网关、 Internet或自治系统之间传输数据和信息的路由协议。 BGP是一种路径矢量协议(PVP)&#xff0c;它维护不同主机、网络和网关的路由器的路径&#xff0c;并根据 BGP做出路由决定。把电信、联通、联通…

算法day32|122,55,45

122.买卖股票的最佳时机II class Solution:def maxProfit(self, prices: List[int]) -> int:profit 0for i in range(len(prices)-1):diff prices[i1]-prices[i]if diff > 0:profit diffelse:profit 0return profit 简单到我不敢相信。 本题解法很巧妙&#xff0c;大…

Redis实战——缓存

目录 1 前言 1.1什么是缓存&#xff1f; 1.2 缓存的作用及成本 1.3 Redis缓存模型 2 给商户信息添加缓存 3 缓存更新策略 3.1 更新策略介绍 3.2 主动更新策略 3.3 主动更新策略练习 4 缓存穿透及其解决方案 4.1 缓存穿透的概念 4.2 解决方案及实现 5 缓存雪崩的…

C++:STL::String模拟实现

前言&#xff1a; 浅拷贝和深拷贝 实现string需要知道深浅拷贝问题。观察如下自命名空间中实现的string&#xff0c;不自写string的string类型参数的构造函数&#xff0c;编译器会默认生成&#xff0c;做浅拷贝。对于自定义类型使用自定义类型的构造函数&#xff0c;如果是默认…

基于遗传算法的PID控制器增益的实现(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

【信息量判别块:语义监督:GAN:IVIF】

Semantic-supervised Infrared and Visible Image Fusion via a Dual-discriminator Generative Adversarial Network &#xff08;通过双重鉴别器生成对抗网络进行语义监督的红外和可见光图像融合&#xff09; 我们提出了一种新的端到端模型&#xff0c;以在红外和可见光图像…

java序列化,看这篇就够了

面试官&#xff1a;兄弟&#xff0c;说说你对transient的理解和感悟 哪吒&#xff1a;what&#xff1f;还有感悟&#xff1f; 先说结论&#xff0c;在序列化、反序列化时&#xff0c;被transient关键字修饰的成员属性变量不会被序列化。 面试官&#xff1a;这就完了&#xf…