基于增量重划分的分布式RDF系统及其查询优化方法与流程

    专利2022-07-08  74


    本发明属于知识图谱数据存储技术领域,具体涉及基于增量重划分的分布式rdf系统及其查询优化方法。



    背景技术:

    rdf作为一个展示、共享和连接网络上的数据模型,已经被广泛地用在各种应用中。随着rdf数据规模的日益增长,rdf数据的存储和sparql查询处理已经超出了单机的处理能力,人们需要设计出高性能的分布式rdf数据管理系统,以实现对大规模的rdf数据进行管理和重用。

    现有的分布式rdf数据管理系统通过一个无共享的集群实现高效处理大规模rdf数据。依据分布式rdf系统的执行模型可以将现有的系统分为:基于hadoop的系统和基于内存(ram)的系统。这些系统为提高分布式sparql查询评估的性能和伸缩性,对rdf数据的储存模式和sparql到sql的查询转化进行了研究与优化。

    但现有的分布式rdf数据管理系统仍存在以下问题:

    (1)仅针对特定的查询类型进行优化,查询效率低;

    (2)需要昂贵的预处理开销和数据加载时间;

    (3)数据冗余度高;

    (4)不能动态适应工作负载的变化。



    技术实现要素:

    发明目的:本发明的目的在于提供基于增量重划分的分布式rdf系统;本发明的另一目的在于提供基于增量重划分的分布式rdf系统的查询优化方法。

    技术方案:为实现上述目的,本发明提供如下技术方案:

    基于增量重划分的分布式rdf系统,包括rdf数据划分模块、rdf数据增量重划分模块和分布式查询模块,其中:

    所述的rdf数据划分模块,包括关系存储模式选择器和存储执行器;存储模式选择器,从所构建的关系存储模式库中选择所需的混合存储方案;存储执行器,根据选择的混合存储方案,使用相应的存储模式对rdf数据进行存储;

    所述的rdf数据增量重划分模块,包括频繁模式挖掘器和增量重划分执行器;其中频繁模式挖掘器,通过查询监控器监控查询工作负载,利用sparql查询中谓词的共现关系挖掘出频繁模式;增量重划分执行器,依据频繁模式构建频繁谓词扩展垂直划分表,实现rdf数据的增量重划分;

    所述的分布式查询模块,包括查询监控器、查询规划器和查询执行器;其中查询监控器用于监控查询工作负载,将查询工作负载定期分发给频繁模式挖掘器;查询规划器用于设计分布式查询计划,对sparql查询应用代数优化和连接顺序优化后,生成逻辑查询计划;查询执行器,通过sparksql生成相应的物理查询计划,进行查询计算。

    进一步地,所述的关系存储模式库包括哈希划分、垂直划分(vp)、扩展垂直划分(extvp)、属性表。

    所述的基于增量重划分的分布式rdf系统的查询优化方法,包括如下步骤:

    (1)清洗rdf数据集;

    (2)基于混合关系模式存储rdf数据;

    (3)设计分布式查询计划;

    (4)执行分布式查询计划;

    (5)对rdf数据进行增量重划分。

    进一步地,所述的步骤(1)具体包括如下步骤:

    (11)对待转化格式的数据集进行格式转换,将数据集批量转化为n-triples格式;

    (12)将格式转化后的数据集输入正则语法分析器,过滤空行、冗余数据、本体描述信息无用信息后,将rdf数据转化为前缀格式。

    进一步地,所述的步骤(2)具体包括如下步骤:

    (21)通过存储模式选择器,选择基于哈希划分和垂直划分的混合存储模式;

    (22)通过存储执行器,将存储模式选择器筛选出的存储方案,按相应的存储模式依次执行rdf数据加载,实现对rdf数据的初始划分;

    其中,步骤(22)的具体过程如下:

    1)基于rdf三元组主语对初始数据进行哈希划分,形成哈希分片;

    2)在各个哈希分片上使用垂直划分的方式完成rdf数据的初始划分。

    进一步地,所述的步骤(3)具体包括以下步骤:

    (31)通过查询规划器进行查询转换,使用jenaarq组件将sparql查询解析到相应的代数树上,应用基本的代数优化后,生成等效的sparksql表达式,即将一个基本图模式bgpbgp={tp1,tp2,...tpn}转化为一组等效的子查询具体转化步骤:

    1)查询候选表选择,对于给定的基本图模式bgp,选择任意的两个三元组模式tpi和限据tpi和tpj的谓词分别匹配相应的垂直划分表(vp);

    ①首先判断两个三元组模式间是否存在相关性,若tpi和tpj之间不存在相关性,进入②;若tpi和tpj之间存在相关性,进入③;

    ②选择tpi和tpj的谓词所对应的垂直划分表vpi和vpj分别加入tpi和tpj的查询候选表;

    ③判断tpi和tpj中的谓词是否都为频繁谓词,若都为频繁谓词,则转到⑤;反之,转到②;

    ④对于tpi,先比较其所对应的垂直划分表vpi和相应关系的fp-extvp表的统计信息,选择其中较小的表,将其放入tpi查询候选表升序队列中;对于tpj,比较过程同tpi;

    ⑤分别取出tpi和tpj查询候选表升序队列中的队头元素,作为最终查询表,即选择大小最小的表作为最终查询表;

    2)将sparql转化为sql,使用关系代数符号,将三元组模式映射到相应的代数树上,生成sql查询语句;

    3)优化查询连接顺序:对于具有n个三元模式的基本图模式bgp,在生成的sql查询中需要进行n-1个连接操作来计算查询结果;通过连接代价评估模型,对三元组模式的连接顺序进行排序,减少中间结果数量,从而优化查询性能;具体步骤如下:

    ①基于三元组模式的相关性构建无向连接图(joingraph),如果任意的两个三元组模式间存在相关性,则在两个节点间设置一条连接边;

    ②计算无向连接图中顶点的选择度,选择选择度最低的顶点,作为图遍历的起点;选择度的计算公式如下所示:

    其中表示三元组模式在整个rdf图中的选择度,|c|表示三元组模式中常量的个数;|e|表示连接图中顶点的度;

    ③以深度优先方式遍历无向连接图;根据代价评估模型,计算连接代价,选择代价最小的遍历序列作为连接序列;代价评估模型的计算公式如下所示:

    其中ti/o表示磁盘进行一次i/o操作所需的时间,disk(tpi)表示查询tpi包括的三元组所需的磁盘页面数,net(tpi)表示传输tpi包含的三元组所需的网络传输次数,tnet表示进行一次网络传输所需要的时间;

    ④将优化查询连接顺序后的sql查询语句写入查询文件;

    (32)优化sparksql逻辑执行计划,具体步骤如下:

    1)自顶向下遍历频繁谓词树(p-tree),对查询表和树节点的哈希编码进行“and”运算,定位查询表所在的集群节点;

    2)将sparql查询仅分发到含有相应表的节点上进行查询处理,减少搜索空间。

    进一步地,所述的步骤(4)具体包括以下步骤:

    将生成的sparksql逻辑执行计划交给内存计算框架spark,sparksql根据相应的逻辑计划生成相应的物理查询计划,进行查询评估计算,返回相应的查询结果。

    进一步地,所述的步骤(5)具体包括以下步骤:

    (51)通过查询监控器,监控查询工作负载,利用sparql查询中谓词的共现关系挖掘频繁模式;

    (52)通过频繁模式挖掘器,权衡平均查询响应时间和空间复制比率,选择最优的频繁阈值筛选频繁模式;

    (53)通过增量重划分执行器,根据频繁模式构建频繁谓词扩展垂直划分表,预先对具有相关性的两个三元组模式进行半连接计算,然后对频繁模式所对应的扩展垂直划分表进行物化,实现对数据进行增量重划分;

    步骤(53)中基于频繁模式构建频繁谓词扩展垂直划分表,具体过程如下:

    1)输入(52)中筛选出的频繁模式集;

    2)寻找三元组模式间的相关性;对于任意的三元组模式tpi和假设tpi=<x,fp1,y>,tpj=<x,fp1,z>,如果两个三元组模式之间存在一个相同的变量,则称tpi和tpj存在相关性,表示为correlations(tpi,tpj);对于tpi和tpj,因为变量x同时在在两个三元组模式的主语中出现,所以这两个三元组模式之间存在主语-主语相关(ss);此外,基于相同变量在两个不同三元组模式之间的相对位置,两个三元组模式之间还存在主语-宾语相关(so),宾语-主语相关和宾语-宾语相关(oo);由于宾语-宾语相关很少在典型的sparql查询中使用,所以不对oo关系进行搜寻;

    3)根据三元组模式之间的相关性获取连接列位置,在垂直分区表(vp)的相应列上对两张vp上进行左半连接计算;若correlations(tpi,tpj)=ss,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=so,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=os,将左半连接计算视图物化到表中;

    (54)构建频繁谓词索引树(p-tree)索引集群上的垂直划分表和频繁谓词扩展垂直划分表,减少查询执行期间的搜索空间。

    有益效果:与现有技术相比,本发明提供的基于增量重划分的分布式rdf系统,有效地减少了系统数据加载时间、系统存储开销和降低了数据冗余度。它使用基于主语的哈希划分和垂直划分的混合存储模式,监控查询工作负载挖掘频繁模式指导rdf数据进行增量重划分,结合查询连接图(joingraph)和代价评估模型优化查询转化,实现rdf数据的智能化存储与查询优化。

    附图说明

    图1为基于增量重划分的分布式rdf系统的示意图;

    图2为查询优化方法的系统技术架构图;

    图3为查询优化方法实现的分布式查询计划附图;

    图4为查询优化方法设计的频繁谓词扩展垂直划分数据模型结构图;

    图5为查询优化方法设计的谓词树结构附图。

    具体实施方式

    下面结合附图和具体实施例对本发明作更进一步的说明。

    基于增量重划分的分布式rdf系统,包括rdf数据划分模块、rdf数据增量重划分模块和分布式查询模块,其中:

    rdf数据划分模块,包括关系存储模式选择器和存储执行器;存储模式选择器,从所构建的关系存储模式库中选择所需的混合存储方案;存储执行器,根据选择的混合存储方案,使用相应的存储模式对rdf数据进行存储;其中,关系存储模式库包括哈希划分、垂直划分(vp)、扩展垂直划分(extvp)、属性表;

    rdf数据增量重划分模块,包括频繁模式挖掘器和增量重划分执行器;其中频繁模式挖掘器,通过查询监控器监控查询工作负载,利用sparql查询中谓词的共现关系挖掘出频繁模式;增量重划分执行器,依据频繁模式构建频繁谓词扩展垂直划分表,实现rdf数据的增量重划分;

    分布式查询模块,包括查询监控器、查询规划器和查询执行器;其中查询监控器用于监控查询工作负载,将查询工作负载定期分发给频繁模式挖掘器;查询规划器用于设计分布式查询计划,对sparql查询应用代数优化和连接顺序优化后,生成逻辑查询计划;查询执行器,通过sparksql生成相应的物理查询计划,进行查询计算。

    基于增量重划分的分布式rdf系统的查询优化方法,包括如下步骤:

    (1)清洗rdf数据集;

    (2)基于混合关系模式存储rdf数据;

    (3)设计分布式查询计划;

    (4)执行分布式查询计划;

    (5)对rdf数据进行增量重划分;

    步骤(1)清洗rdf数据集包括如下步骤:

    (11)对待转化格式的数据集进行格式转换,将数据集批量转化为n-triples格式;

    (12)将格式转化后的数据集输入正则语法分析器,过滤空行、冗余数据、本体描述信息等无用信息后,将rdf数据转化为前缀格式;

    步骤(2)基于混合关系模式存储rdf数据包括如下步骤:

    (21)通过存储模式选择器,选择基于哈希划分和垂直划分的混合存储模式;

    (22)通过存储执行器,将存储模式选择器筛选出的存储方案,按相应的存储模式依次执行rdf数据加载,实现对rdf数据的初始划分。

    步骤(22)的具体过程如下:

    3)基于rdf三元组主语对初始数据进行哈希划分,形成哈希分片;

    4)在各个哈希分片上使用垂直划分的方式完成rdf数据的初始划分;

    步骤(3)所述设计分布式查询计划,所述方法包括以下步骤:

    (31)通过查询规划器进行查询转换,使用jenaarq组件将sparql查询解析到相应的代数树上,应用基本的代数优化后,生成等效的sparksql表达式,即将一个基本图模式bgpbgp={tp1,tp2,...tpn}转化为一组等效的子查询具体转化步骤:

    4)查询候选表选择,对于给定的基本图模式bgp,选择任意的两个三元组模式tpi和根据tpi和tpj的谓词分别匹配相应的垂直划分表(vp)。

    ①首先判断两个三元组模式间是否存在相关性,若tpi和tpj之间不存在相关性,进入②;若tpi和tpj之间存在相关性,进入③。

    ②选择tpi和tpj的谓词所对应的垂直划分表vpi和vpj分别加入tpi和tpj的查询候选表。

    ③判断tpi和tpj中的谓词是否都为频繁谓词,若都为频繁谓词,则转到⑤;反之,转到②。

    ④对于tpi,先比较其所对应的垂直划分表vpi和相应关系的fp-extvp表的统计信息,选择其中较小的表,将其放入tpi查询候选表升序队列中;对于tpj,比较过程同tpi。

    ⑤分别取出tpi和tpj查询候选表升序队列中的队头元素,作为最终查询表,即选择大小最小的表作为最终查询表。

    5)将sparql转化为sql,使用关系代数符号,将三元组模式映射到相应的代数树上,生成sql查询语句。

    6)优化查询连接顺序:对于具有n个三元模式的基本图模式bgp,在生成的sql查询中需要进行n-1个连接操作来计算查询结果。通过连接代价评估模型,对三元组模式的连接顺序进行排序,减少中间结果数量,从而优化查询性能。具体步骤如下:

    ①基于三元组模式的相关性构建无向连接图(joingraph),如果任意的两个三元组模式间存在相关性,则在两个节点间设置一条连接边。

    ②计算无向连接图中顶点的选择度,选择选择度最低的顶点,作为图遍历的起点。选择度的计算公式如下所示:

    其中表示三元组模式在整个rdf图中的选择度,|c|表示三元组模式中常量的个数。|e|表示连接图中顶点的度。

    ③以深度优先方式遍历无向连接图。根据代价评估模型,计算连接代价,选择代价最小的遍历序列作为连接序列。代价评估模型的计算公式如下所示:

    其中ti/o表示磁盘进行一次i/o操作所需的时间,disk(tpi)表示查询tpi包括的三元组所需的磁盘页面数,net(tpi)表示传输tpi包含的三元组所需的网络传输次数,tnet表示进行一次网络传输所需要的时间。

    ④将优化查询连接顺序后的sql查询语句写入查询文件。

    (32)优化sparksql逻辑执行计划,具体步骤如下:

    1)自顶向下遍历频繁谓词树(p-tree),对查询表和树节点的哈希编码进行“and”运算,定位查询表所在的集群节点;

    2)将sparql查询仅分发到含有相应表的节点上进行查询处理,减少搜索空间;

    步骤(4)所述分布式查询计划执行方法包括以下步骤:

    (41)将生成的sparksql逻辑执行计划交给内存计算框架spark,sparksql根据相应的逻辑计划生成相应的物理查询计划,进行查询评估计算,返回相应的查询结果;

    步骤(5)对rdf数据进行增量重划分,所述方法步骤如下:

    (51)通过查询监控器,监控查询工作负载,利用sparql查询中谓词的共现关系挖掘频繁模式;

    (52)通过频繁模式挖掘器,权衡平均查询响应时间和空间复制比率,选择最优的频繁阈值筛选频繁模式;

    (53)通过增量重划分执行器,根据频繁模式构建频繁谓词扩展垂直划分表,预先对具有相关性的两个三元组模式进行半连接计算,然后对频繁模式所对应的扩展垂直划分表进行物化,实现对数据进行增量重划分;

    步骤(53)中基于频繁模式构建频繁谓词扩展垂直划分表,具体过程如下:

    1)输入(52)中筛选出的频繁模式集;

    2)寻找三元组模式间的相关性。对于任意的三元组模式tpi和假设tpi=<x,fp1,y>,tpj=<x,fp1,z>,如果两个三元组模式之间存在一个相同的变量,则称tpi和tpj存在相关性,表示为correlations(tpi,tpj)。对于tpi和tpj,因为变量x同时在在两个三元组模式的主语中出现,所以这两个三元组模式之间存在主语-主语相关(ss)。此外,基于相同变量在两个不同三元组模式之间的相对位置,两个三元组模式之间还存在主语-宾语相关(so),宾语-主语相关和宾语-宾语相关(oo)。由于宾语-宾语相关很少在典型的sparql查询中使用,所以不对oo关系进行搜寻。

    3)根据三元组模式之间的相关性获取连接列位置,在垂直分区表(vp)的相应列上对两张vp上进行左半连接计算。若correlations(tpi,tpj)=ss,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=so,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=os,将左半连接计算视图物化到表中。

    (54)构建频繁谓词索引树(p-tree)索引集群上的垂直划分表和频繁谓词扩展垂直划分表,减少查询执行期间的搜索空间。

    实施例

    如图1所示,本发明公开的是一种基于增量重划分的分布式rdf查询优化方法及系统架构,本方法所提供的技术以及架构可以具体应用在分布式rdf数据的存储和sparql查询上。其整体技术架构如图2所示,本实施例以合成数据集watdiv的存储和查询为例,具体步骤如下:

    步骤一:清洗rdf数据集,完成数据格式的转化,包含以下步骤:

    (11)将生成的watdiv数据集文件输入到rdf数据格式转换器,将rdf数据格式转化为n-triples;

    (12)将转化后的数据文件输入构建的正则语法分析器,提取分析rdf数据、过滤空行、重复数据等无用信息,将rdf数据转化为前缀格式;

    步骤二:基于混合关系模式存储rdf数据,包含以下步骤:

    (21)选择基于主语的哈希划分和垂直划分的存储数据划分方案;

    (22)基于rdf三元组主语对初始数据进行哈希划分,形成哈希分片;

    (23)在各个哈希分片上使用垂直划分的方式完成rdf数据的初始划分,形成如图4中verticalpartitioning区域中所示的vpoffers,vpincludes,vpsubscribes三张垂直划分表;

    步骤三:通过查询规划器设计分布式查询计划,包含以下步骤:

    (31)将一个sparql基本查询子图,使用jenaarq组件将sparql查询解析到相应的代数树上,应用基本的代数优化后生成sql表达式;

    (32)根据sparql基本图模式bgp,以每个三元组模式为顶点,基于三元组模式的相关性构建无向连接图。三元组模式tp1和tp4之间存在宾语-宾语相关(oo),则在两个节点间设置一条连接边e1。同理,设置连接边e2,e3,e4,最终形成图3中所示的连接图结构;

    (33)计算无向连接图中顶点的选择度选择选择度最低的顶点tp3,作为图遍历的起点;

    (34)以深度优先方式遍历无向连接图,获取所有的遍历序列;

    (35)将所有的遍历序列输入代价评估模型,计算连接代价,选择代价最小的遍历序列,即tp3,tp4,tp2,tp1作为连接序列;

    (36)生成等效的sparksql表达式;

    (37)自顶向下遍历频繁谓词树(p-tree),对查询表和树节点的哈希编码进行“and”运算,定位查询表所在的集群节点;

    (38)生成sparksql逻辑执行计划,将sparql查询仅分发到含有相应表的节点上进行查询处理,减少搜索空间。

    步骤四:通过查询执行器执行分布式查询计划;

    (41)sparksql根据生成的逻辑执行计划生成相应的物理查询计划,进行查询评估计算,返回相应的查询结果;

    步骤五:挖掘查询工作负载中的频繁模式,指导数据进行增量重划分,包含以下步骤:

    (51)通过监控查询工作负载,利用sparql查询中谓词的共现关系挖掘候选频繁模式;

    (52)权衡平均查询响应时间和空间复制比率,选择最优的频繁阈值筛选频繁模式;

    (53)如图4所示,根据频繁模式构建频繁谓词扩展垂直划分表(fp-extvp),预先对具有相关性的两个三元组模式进行半连接计算。因为vpoffers,vpincludes对应的三元组模式都为频繁模式,vpoffers中两个三元组模式间存在存在宾语-主语相关,将左半连接计算视图物化到表中。vpoffers和vpincludes之间存在主语-主语相关,将左半连接计算视图物化到表中。同理,生成其它的频繁谓词扩展垂直划分表

    (54)如图5所示,自底向上构建频繁谓词索引树(p-tree)。每个叶节点的数据元素存储对应集群节点中的垂直划分表(vp)或频繁谓词扩展表(fp-extvp)的哈希编码,的哈希编码由的哈希编码进行逐位“and”运算获得,每个非叶节点的哈希编码为对应的所有子节点的哈希编码进行逐位“or”运算后的取值,其指针元素存储指向所有的子节点的指针,其中叶节点的每个父节点对应一个集群节点。


    技术特征:

    1.基于增量重划分的分布式rdf系统,其特征在于:包括rdf数据划分模块、rdf数据增量重划分模块和分布式查询模块,其中:

    所述的rdf数据划分模块,包括关系存储模式选择器和存储执行器;存储模式选择器,从所构建的关系存储模式库中选择所需的混合存储方案;存储执行器,根据选择的混合存储方案,使用相应的存储模式对rdf数据进行存储;

    所述的rdf数据增量重划分模块,包括频繁模式挖掘器和增量重划分执行器;其中频繁模式挖掘器,通过查询监控器监控查询工作负载,利用sparql查询中谓词的共现关系挖掘出频繁模式;增量重划分执行器,依据频繁模式构建频繁谓词扩展垂直划分表,实现rdf数据的增量重划分;

    所述的分布式查询模块,包括查询监控器、查询规划器和查询执行器;其中查询监控器用于监控查询工作负载,将查询工作负载定期分发给频繁模式挖掘器;查询规划器用于设计分布式查询计划,对sparql查询应用代数优化和连接顺序优化后,生成逻辑查询计划;查询执行器,通过sparksql生成相应的物理查询计划,进行查询计算。

    2.根据权利要求1所述的基于增量重划分的分布式rdf系统,其特征在于:所述的关系存储模式库包括哈希划分、垂直划分、扩展垂直划分、属性表。

    3.根据权利要求1或2中所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:包括如下步骤:

    (1)清洗rdf数据集;

    (2)基于混合关系模式存储rdf数据;

    (3)设计分布式查询计划;

    (4)执行分布式查询计划;

    (5)对rdf数据进行增量重划分。

    4.根据权利要求3所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:所述的步骤(1)具体包括如下步骤:

    (11)对待转化格式的数据集进行格式转换,将数据集批量转化为n-triples格式;

    (12)将格式转化后的数据集输入正则语法分析器,过滤空行、冗余数据、本体描述信息无用信息后,将rdf数据转化为前缀格式。

    5.根据权利要求3所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:所述的步骤(2)具体包括如下步骤:

    (21)通过存储模式选择器,选择基于哈希划分和垂直划分的混合存储模式;

    (22)通过存储执行器,将存储模式选择器筛选出的存储方案,按相应的存储模式依次执行rdf数据加载,实现对rdf数据的初始划分;

    其中,步骤(22)的具体过程如下:

    1)基于rdf三元组主语对初始数据进行哈希划分,形成哈希分片;

    2)在各个哈希分片上使用垂直划分的方式完成rdf数据的初始划分。

    6.根据权利要求3所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:所述的步骤(3)具体包括以下步骤:

    (31)通过查询规划器进行查询转换,使用jenaarq组件将sparql查询解析到相应的代数树上,应用基本的代数优化后,生成等效的sparksql表达式,即将一个基本图模式bgpbgp={tp1,tp2,...tpn}转化为一组等效的子查询具体转化步骤:

    1)查询候选表选择,对于给定的基本图模式bgp,选择任意的两个三元组模式tpi和根据tpi和tpj的谓词分别匹配相应的垂直划分表;

    ①首先判断两个三元组模式间是否存在相关性,若tpi和tpj之间不存在相关性,进入②;若tpi和tpj之间存在相关性,进入③;

    ②选择tpi和tpj的谓词所对应的垂直划分表vpi和vpj分别加入tpi和tpj的查询候选表;

    ③判断tpi和tpj中的谓词是否都为频繁谓词,若都为频繁谓词,则转到⑤;反之,转到②;

    ④对于tpi,先比较其所对应的垂直划分表vpi和相应关系的fp-extvp表的统计信息,选择其中较小的表,将其放入tpi查询候选表升序队列中;对于tpj,比较过程同tpi;

    ⑤分别取出tpi和tpj查询候选表升序队列中的队头元素,作为最终查询表,即选择大小最小的表作为最终查询表;

    2)将sparql转化为sql,使用关系代数符号,将三元组模式映射到相应的代数树上,生成sql查询语句;

    3)优化查询连接顺序:对于具有n个三元模式的基本图模式bgp,在生成的sql查询中需要进行n-1个连接操作来计算查询结果;通过连接代价评估模型,对三元组模式的连接顺序进行排序,减少中间结果数量,从而优化查询性能;具体步骤如下:

    ①基于三元组模式的相关性构建无向连接图,如果任意的两个三元组模式间存在相关性,则在两个节点间设置一条连接边;

    ②计算无向连接图中顶点的选择度,选择选择度最低的顶点,作为图遍历的起点;选择度的计算公式如下所示:

    其中表示三元组模式在整个rdf图中的选择度,|c|表示三元组模式中常量的个数;|e|表示连接图中顶点的度;

    ③以深度优先方式遍历无向连接图;根据代价评估模型,计算连接代价,选择代价最小的遍历序列作为连接序列;代价评估模型的计算公式如下所示:

    其中ti/o表示磁盘进行一次i/o操作所需的时间,disk(tpi)表示查询tpi包括的三元组所需的磁盘页面数,net(tpi)表示传输tpi包含的三元组所需的网络传输次数,tnet表示进行一次网络传输所需要的时间;

    ④将优化查询连接顺序后的sql查询语句写入查询文件;

    (32)优化sparksql逻辑执行计划,具体步骤如下:

    1)自顶向下遍历频繁谓词树,对查询表和树节点的哈希编码进行and运算,定位查询表所在的集群节点;

    2)将sparql查询仅分发到含有相应表的节点上进行查询处理,减少搜索空间。

    7.根据权利要求3所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:所述的步骤(4)具体包括以下步骤:

    将生成的sparksql逻辑执行计划交给内存计算框架spark,sparksql根据相应的逻辑计划生成相应的物理查询计划,进行查询评估计算,返回相应的查询结果。

    8.根据权利要求3所述的基于增量重划分的分布式rdf系统的查询优化方法,其特征在于:所述的步骤(5)具体包括以下步骤:

    (51)通过查询监控器,监控查询工作负载,利用sparql查询中谓词的共现关系挖掘频繁模式;

    (52)通过频繁模式挖掘器,权衡平均查询响应时间和空间复制比率,选择最优的频繁阈值筛选频繁模式;

    (53)通过增量重划分执行器,根据频繁模式构建频繁谓词扩展垂直划分表,预先对具有相关性的两个三元组模式进行半连接计算,然后对频繁模式所对应的扩展垂直划分表进行物化,实现对数据进行增量重划分;

    步骤(53)中基于频繁模式构建频繁谓词扩展垂直划分表,具体过程如下:

    1)输入(52)中筛选出的频繁模式集;

    2)寻找三元组模式间的相关性;对于任意的三元组模式tpi和假设tpi=<x,fp1,y>,tpj=<x,fp1,z>,如果两个三元组模式之间存在一个相同的变量,则称tpi和tpj存在相关性,表示为correlations(tpi,tpj);对于tpi和tpj,因为变量x同时在在两个三元组模式的主语中出现,所以这两个三元组模式之间存在主语-主语相关;此外,基于相同变量在两个不同三元组模式之间的相对位置,两个三元组模式之间还存在主语-宾语相关,宾语-主语相关和宾语-宾语相关;

    3)根据三元组模式之间的相关性获取连接列位置,在垂直分区表(vp)的相应列上对两张vp上进行左半连接计算;若correlations(tpi,tpj)=ss,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=so,将左半连接计算视图物化到表中,若correlations(tpi,tpj)=os,将左半连接计算视图物化到表中;

    (54)构建频繁谓词索引树索引集群上的垂直划分表和频繁谓词扩展垂直划分表,减少查询执行期间的搜索空间。

    技术总结
    本发明公开了基于增量重划分的分布式RDF系统及其查询优化方法,属于知识图谱数据存储技术领域,本发明的系统架构包括RDF数据清洗模块、RDF数据划分模块、增量重划分模块和分布式查询模块。本发明提出了一种混合关系模式存储RDF数据的存储框架,减少了数据预处理时间和系统存储开销;通过采用哈希划分和垂直划分相结合的混合存储模式,优化了各种类型的查询模式,显著提高了分布式SPARQL查询性能;设计基于频繁模式的增量重划分模型,实现了动态适应查询工作负载变化。

    技术研发人员:冯钧;王秉发;陆佳民;杨程
    受保护的技术使用者:河海大学
    技术研发日:2020.11.30
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-22074.html

    最新回复(0)