当前位置: 首页 > 专利查询>河海大学专利>正文

基于混合存储模式的分布式SPARQL查询优化方法技术

技术编号:28558722 阅读:21 留言:0更新日期:2021-05-25 17:53
本发明专利技术公开了基于混合存储模式的分布式SPARQL查询优化方法,属于知识图谱的应用,包括如下步骤:1)构建RDF数据存储模块,包括数据特征集的生成、前缀树索引的构建以及RDF数据的存储;2)构建SPARQL查询模块,包括查询解析、查询优化、查询执行。本发明专利技术实现了基于混合存储模式的分布式SPARQL查询优化方法,根据RDF原始数据,通过逻辑划分,以不同的关系形式对RDF数据进行存储,然后基于存储的模式构建了前缀树索引和数据特征集,在执行SPARQL查询的过程中基于索引和数据特征集对查询匹配进行优化,从而更有效的获取查询结果。

【技术实现步骤摘要】
基于混合存储模式的分布式SPARQL查询优化方法
本专利技术属于知识图谱的应用,具体的涉及基于混合存储模式的分布式SPARQL查询优化方法。
技术介绍
近年来,随着知识图谱相关技术的发展,知识图谱数据呈现爆炸式增长,由此也引发了诸多问题。如何有效的管理大规模的知识图谱数据,对于基于知识图谱的智能问答、搜索、推荐等上层应用具有重要的影响。在语义网中主要以RDF(ResourceDescriptionFramework)数据模型来表示知识图谱数据,其主要形式为一个三元组<主语,谓语,宾语>,其中主语和宾语表示客观世界的实体,谓语描述实体之间的关系。SPARQL是由W3C推荐的标准RDF数据查询语言。通常情况下,SPARQL选择语句主要包含两部分:select子句和where子句,其中select部分包含待选择的数据,where子句部分包含用于过滤和匹配数据的条件。对于SPARQL查询而言,其本质是在知识图谱中进行子图匹配。传统的RDF数据管理方式主要是集中式管理,也就是往往以单节点的形式来存储RDF数据,当遇到问题的时采用纵向扩展的方式,通过增大节点的内存容量等来提升节点对数据的处理能力。但随着RDF数据的激增,集中式管理的方式往往不能满足真实场景的需求,存在管理效率低、扩展性能差等问题。随着大数据技术的发展,出现了众多优秀的数据处理框架和模型,近些年兴起的Spark是一款内存型引擎,其克服了传统的MapReduce模型存在过多数据I/O导致效率低下的问题。在Spark基础上存在很多优秀的模块,其中包括SparkSQL可以通过简单的编程模型,对数据进行交互式分析。针对传统RDF数据管理的性能瓶颈问题,越来越多的方法借助现有的大数据技术和框架,通过分布式的方式对RDF数据进行管理,通过在分布式环境下处理SPARQL查询,提升数据管理效率和查询性能,从而为基于知识图谱的应用提供更好的支撑。
技术实现思路
专利技术目的:为克服传统RDF数据管理中的不足,本专利技术目的是提供基于混合存储模式的分布式SPARQL查询优化方法,通过基于关系模式的数据模型并借助大数据技术,在分布式环境下更有效的管理RDF数据,并在前缀树索引查询优化策略的基础上,提升分布式环境下SPARQL查询的效率。技术方案:为实现上述专利技术目的,本专利技术采用如下技术方案:基于混合存储模式的分布式SPARQL查询优化方法,包括以下步骤:1)构建RDF数据存储模块,包括数据特征集的生成、前缀树索引的构建以及RDF数据的存储;2)构建SPARQL查询模块,包括查询解析、查询优化、查询执行。进一步地,所述的步骤1)中,构建RDF数据存储模块包括以下步骤:1.1)基于原始三元组表数据生成数据集的基本特征信息,包括三元组的数量、不同主语的数量、不同宾语的数量、不同谓语的数量;1.2)构建前缀树索引;1.3)基于三元组表构建垂直划分表和宽属性表。进一步地,所述的步骤1.2)中,前缀树索引的构建是基于前缀树的变种进行构建的,用于SPARQL查询匹配过程中符合一定条件三元组的快速检索,避免不必要的磁盘读取操作。进一步地,所述的步骤1.2)中,包括构建以主语为根的前缀树索引和以宾语为根的前缀树索引;构建两个不同的前缀树索引,利用三元组中已知的主语和谓语来快速检索到宾语,或者是通过已知的宾语和谓语快速检索到对应的主语。进一步地,所述的步骤1.3)中,所述的垂直划分表的构建是基于三元组表中不同谓语来构建的,即含有共同谓语的三元组被划分到同一个表中,该表只有两列,分别为主语列和宾语列,表的名称对应一个谓语;所述的宽属性表的构建,是基于三元组的主语进行划分,将相同主语的元组划分为一行,三元组的宾语可以通过主语,谓语进行定位;对于主语和宾语中一对多的情形,使用一个集合容器,存储不同的宾语;最终使用ORC列式存储,并结合SNAPPY压缩算法,将数据存储在磁盘上。进一步地,所述的步骤2)中,构建SPARQL查询模块包括以下步骤:2.1)查询解析;在执行SPARQL查询时,首先使用JenaARQ对SPARQL查询进行解析,分解成若干个待匹配的三元组;2.2)查询优化;SPARQL查询的本质是子图匹配,在基于关系模式查找对应数据的过程中主要涉及的操作就是连接操作,连接操作涉及磁盘读写和数据的传输,代价昂贵;2.3)查询执行;依据上一步骤中优化后的查询连接顺序,构造连接树,并采用自底向上的方式处理书中的节点;连接树中的节点代表SPARQL查询的子查询,在处理完树中所有的节点后,树的根节点即代表最终的查询结果。进一步地,步骤2.2)中查询的优化首先依据分解后的三元组的变量的个数进行非递减排序,变量个数相同的依据元组的数据特征集和选择性进行非递减排序,然后依据排序后的元组构建连接树;连接树中的每一个节点代表SPARQL查询的一个子查询,在执行子查询的过程中,具有共享主语变量或者宾语变量的元组被划分到同一个节点中。进一步地,步骤2.3)中查询的执行涉及到查询的转换操作,即将相应的SPARQL子查询转换为等价的SparkSQL查询;SparkSQL查询根据RDF数据加载过程中生成并存储在MySQL中的元数据,关联存储在磁盘中的物理数据,通过Spark算子操作,计算得到相应的子查询结果;对于子查询中的三元组匹配操作,主要包括下述几种情形:3.1)索引匹配;若当前元组只包含一个变量,且该变量对应位置为主语或者宾语所在位置,则根据构建好的前缀树索引快速匹配变量位置对应的可能的映射常量;3.2)查询垂直划分表;若节点中只有一个三元组且谓语所在位置为常量,则通过谓语匹配到对应的垂直划分表,在垂直划分表中进行数据的匹配;3.3)查询宽属性表;若节点中包含若干个三元组,且这些三元组的主语是其共享变量,则通过查询宽属性表,找到对应的主语,即可一次获取相应的变量应当映射到的常量。进一步地,步骤3.2)中对于垂直划分表的查询操作,数据采用ORC列式存储格式将列式文件分成若干组,并在每一组列式文件中应用布隆过滤器的原理,在表中查询目标值时,不必按照顺序进行依次查询,可以利用布隆过滤器跳过不包含目标值的组,提升查找效率;同时在构建垂直划分表时,会根据所有表的大小以及频繁谓词的相关数据,设置一个合理的阈值,在垂直划分表之间执行连接操作的时候,将小于阈值的表广播到其他节点,即使用BroadcastJoin算法,从而将Reduce-Side连接操作,转换为Map-Side连接操作,避免数据的Shuffle操作,提升连接操作的效率。进一步地,步骤3.3)中对于宽属性表的查询操作,对于含有公共主语的三元组,只需要扫描依次表,即可获取对应的宾语,对表的扫描同样利用布隆过滤器的原理对于数据进行过滤,提升数据查找的效率;对于宽属性表中主语和宾语一对多的情形,利用Hive操作中的lateralviewexplode(列名)操作,将某一个单元的一行数据转化为多行,即转换为二元表格的形式,用本文档来自技高网
...

【技术保护点】
1.基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,包括以下步骤:/n1)构建RDF数据存储模块,包括数据特征集的生成、前缀树索引的构建以及RDF数据的存储;/n2)构建SPARQL查询模块,包括查询解析、查询优化、查询执行。/n

【技术特征摘要】
1.基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,包括以下步骤:
1)构建RDF数据存储模块,包括数据特征集的生成、前缀树索引的构建以及RDF数据的存储;
2)构建SPARQL查询模块,包括查询解析、查询优化、查询执行。


2.根据权利要求1所述的基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,所述的步骤1)中,构建RDF数据存储模块包括以下步骤:
1.1)基于原始三元组表数据生成数据集的基本特征信息,包括三元组的数量、不同主语的数量、不同宾语的数量、不同谓语的数量;
1.2)构建前缀树索引;
1.3)基于三元组表构建垂直划分表和宽属性表。


3.根据权利要求2所述的基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,所述的步骤1.2)中,前缀树索引的构建是基于前缀树的变种进行构建的,用于SPARQL查询匹配过程中符合一定条件三元组的快速检索,避免不必要的磁盘读取操作。


4.根据权利要求2所述的基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,所述的步骤1.2)中,包括构建以主语为根的前缀树索引和以宾语为根的前缀树索引;构建两个不同的前缀树索引,利用三元组中已知的主语和谓语来快速检索到宾语,或者是通过已知的宾语和谓语快速检索到对应的主语。


5.根据权利要求2所述的基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,所述的步骤1.3)中,所述的垂直划分表的构建是基于三元组表中不同谓语来构建的,即含有共同谓语的三元组被划分到同一个表中,该表只有两列,分别为主语列和宾语列,表的名称对应一个谓语;所述的宽属性表的构建,是基于三元组的主语进行划分,将相同主语的元组划分为一行,三元组的宾语通过主语,谓语进行定位;对于主语和宾语中一对多的情形,使用一个集合容器,存储不同的宾语;最终使用ORC列式存储,并结合SNAPPY压缩算法,将数据存储在磁盘上。


6.根据权利要求1所述的基于混合存储模式的分布式SPARQL查询优化方法,其特征在于,所述的步骤2)中,构建SPARQL查询模块包括以下步骤:
2.1)查询解析
在执行SPARQL查询时,首先使用JenaARQ对SPARQL查询进行解析,分解成若干个待匹配的三元组;
2.2)查询优化
SPARQL查询的本质是子图匹配,在基于关系模式查找对应数据的过程中主要涉及的操作就是连接操作,连接操作涉及磁盘读写和数据的传输,代价昂贵;
2.3)查询执行
依据上一步骤中优化后的查询连接顺序,构造连接树,并采用自底向上的方式处理书中的节点;连接树中的节点代表SPARQL查询的子查询,在处理完树中所有...

【专利技术属性】
技术研发人员:冯钧邓治国陆佳民
申请(专利权)人:河海大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1