一种分布式层次化的RDF数据的存储方法.pdf

上传人:r7 文档编号:6186645 上传时间:2019-05-18 格式:PDF 页数:8 大小:540.85KB
返回 下载 相关 举报
摘要
申请专利号:

CN201310658588.5

申请日:

2013.12.09

公开号:

CN103617276A

公开日:

2014.03.05

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20140305|||实质审查的生效IPC(主分类):G06F 17/30申请日:20131209|||公开

IPC分类号:

G06F17/30

主分类号:

G06F17/30

申请人:

南京大学

发明人:

黄宜华; 顾荣; 胡伟

地址:

210093 江苏省南京市汉口路22号

优先权:

专利代理机构:

苏州威世朋知识产权代理事务所(普通合伙) 32235

代理人:

杨林洁

PDF下载: PDF下载
内容摘要

本发明公开了一种分布式层次化的RDF数据的存储方法,包括以下步骤:对所有RDF数据进行索引;采用两个存储层以存储索引后的RDF数据,从底层到上层依次为:持久化存储层和分布式内存存储层;所有RDF数据首先存储到持久化存储层,然后,将常用的RDF数据存储到分布式内存存储层;将所有存储在持久化存储层的RDF数据自动保持多个备份;当检测到分布式内存存储层的节点发生数据失效时,在下次查询到该节点中的RDF数据时,从持久化存储层去获取相应的数据。本发明解决了现有的分布式存储方法计算延时大、性能低、应对动态变化的能力不足的问题。

权利要求书

权利要求书
1.  一种分布式层次化的RDF数据的存储方法,包括以下步骤:
(1)对所有RDF数据进行索引;
(2)采用两个存储层以存储索引后的RDF数据,从底层到上层依次为:持久化存储层和分布式内存存储层;所有RDF数据首先存储到持久化存储层,然后,将常用的RDF数据存储到分布式内存存储层;
(3)将所有存储在持久化存储层的RDF数据自动保持多个备份;当检测到分布式内存存储层的节点发生数据失效后,在下次查询到该节点中的RDF数据时,从持久化存储层去获取相应的数据,然后根据一致性哈希算法将获取到的数据加载到分布式内存存储层的其他节点以供后面快速查询。

2.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:采用冷热数据混合索引的方法对所有RDF数据进行索引。

3.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:采用基于哈希的索引方法对所有RDF数据进行索引。

4.  根据权利要求3所述一种分布式层次化的RDF数据的存储方法,其特征在于:所述步骤(1)中,采用基于标准MD5哈希和闭散列的方法存储发生碰撞的RDF数据。

5.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:所述步骤(2)中,将“主语谓语*”和“*谓语宾语”这两种查询模式的RDF数据存储到分布式内存存储层,其中*为一个通配符,表示相应的部分可取任意值。

6.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:所述步骤(2)中,当分布式内存存储层的容量不足时,用新的RDF数据替换过时的RDF数据。

7.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:所述步骤(3)中,分布式内存存储层的节点上运行守护进程,用于监控本节点的状态,并将该状态注册到全局监管服务中;一旦有节点发生数据失效,全局监管服务感知到,当下次需要到该节点查询数据时,跳向持久化存储层进行查询,并将使用到的相关数据重新载入到分布式内存存储层的其他节点中,以供后面快速查询。

8.  根据权利要求1所述一种分布式层次化的RDF数据的存储方法,其特征在于:还包括步骤(4):提供位于最上层的RDF数据存储和查询接口层,用于导入数据和向用户提供查询服务。

9.  根据权利要求8所述一种分布式层次化的RDF数据的存储方法,其特征在于:所述步骤(4)中,RDF数据存储和查询接口包括SPARQL引擎模块、数据库选择模块和数据库连接模块;所述SPARQL引擎模块用于解析用户提交的查询请求并生成相应的查询计划,所述数据库选择模块用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层上完成,所述数据库连接模块用于管理和保持常用的数据库连接,同时还负责监管关于数据库状态的信息。

说明书

说明书一种分布式层次化的RDF数据的存储方法
技术领域
本发明涉及通信技术领域,尤其涉及一种分布式层次化的RDF(Resource Description Framework,资源描述框架)数据的存储方法。
背景技术
语义网(Semantic Web)是万维网的一个重要发展方向,为万维网上的知识表示、推理、交换和复用提供了基础。由于任何机构和个人都允许自由发布语义网数据,尤其是现有商用搜索引擎倡导网站显式地提供语义数据、社交网络开始使用语义数据,这都使得语义网的数据量爆炸性增长。目前,以DBpedia和Bio2RDF为例的语义网数据已经达到了数以十亿计的规模。这些海量语义网数据一方面促进了语义网内容和知识的繁荣,同时也对现有语义网数据管理系统的性能提出了挑战。
语义网数据是采用RDF模型来表示的。RDF是一种数据模型,它是一个W3C推荐标准,用于Web上的数据交换。RDF定义了一个简单的有向图模型来表示资源以及资源间的联系,每个联系表示为一个RDF三元组,包括主语、谓语和宾语三个部分。一个RDF三元组声明了该三元组中的主语和宾语存在的谓语联系是成立的。RDF可以很灵活地对任何资源进行定义或声明。为了能够方便地对RDF数据进行查询和管理,W3C推荐了一种RDF查询的语言SPARQL(Simple Protocol and RDF Query Language),它的语法格式和SQL很类似。绝大部分的SPARQL查询语句的形式都是由一系列三元组模式(triple pattern)组成,其中每个三元组模式在格式上和一个RDF三元组类似,只是其中的主语、谓语或宾语可能是变量。另外,SPARQL也可以通过连接(join)、交/并、选择、投影等操作来构造更加复杂的查询。
传统的RDF数据管理软件,如Sesame、3store等,均在单机上运行。随着RDF数据量的不断增长,单台计算机存在规模上限,已经难以有效地存储和管理海量RDF数据。因此近些年来,人们开始通过将大规模RDF数据集划分存储到分布式系统中的多个机器上进行管理和查询操作。这些分布式的RDF数据管理系统可以宽泛地划分为两类:一类是将RDF数据集看成由多条三元组记录组成,构建针对这些三元组记录的分布式存储系统,这类系统一般都是直接建立在现在广为使用的大数据的基础处理引擎Apache Hadoop、HBase、Pig等之上,例如Jena-HBase、SHARD和PigSPARQL等。这类方法存在的一个严重的问题就是性能较低,其原因是它们将查询转换为一系列MapReduce任务执行,而MapReduce的设计定位侧重处理高延时的离线处理分析等应用;另外一种方法将RDF数据集看成一张图,采用图划分的优化技术来提高查询时模式匹配的效率,这类方法被称为基于图划分的方法。在实际应用中基于图划分的方法有一个重要缺陷,当有新的批量数据或机器加入到系统中,为了重新使整个系统负载均衡,整个新的RDF图需要重新划分。该过程非常耗时甚至需要中止对外提供的查询服务。当图很大时,对均匀地划分图将越来越难实现。从这个意义上看,基于图划分的方法并不具备动态性,对于现实中流式或增量式输入RDF数据的应用场景不适用。
发明内容
发明目的:针对上述现有技术存在的问题和不足,本发明的目的是提供一种分布式层次化的RDF数据的存储方法,解决了现有的分布式存储方法计算延时大、性能低、应对动态变化的能力不足的问题。
技术方案:为实现上述发明目的,本发明采用的技术方案为一种分布式层次化的RDF数据的存储方法,包括以下步骤:
(1)对所有RDF数据进行索引;
(2)采用两个存储层以存储索引后的RDF数据,从底层到上层依次为:持久化存储层和分布式内存存储层;所有RDF数据首先存储到持久化存储层,然后,将常用的RDF数据存储到分布式内存存储层;
(3)将所有存储在持久化存储层的RDF数据自动保持多个备份;当检测到分布式内存存储层的节点发生数据失效时,在下次查询到该节点中的RDF数据时,从持久化存储层去获取相应的数据,然后根据一致性哈希算法将获取到的数据加载到分布式内存存储层的其他节点以供后面快速查询。
进一步地,采用冷热数据混合索引的方法对所有RDF数据进行索引。更进一步的,采用基于哈希的索引方法索引冷热数据,支持快速查询并节省RDF数据存储空间,哈希索引后的RDF数据可以支持快速的查询定位,避免查询时进行全表扫描;同时,索引后RDF数据量大幅压缩,有利于存放在内存数据库中进行快速查询。更进一步的,为了解决哈希索引后的碰撞问题,采用基于MD5哈希和闭散列的方法存储发生碰撞的RDF数据。
进一步地,所述步骤(2)中,将“主语谓语*”和“*谓语宾语”这两种查询模式的RDF数据存储到分布式内存存储层,其中*为一个通配符,表示相应的部分可取任意值。
进一步地,所述步骤(2)中,当分布式内存存储层的容量不足时,用新的RDF数据替换过时的RDF数据。
进一步地,所述步骤(3)中,为了解决RDF数据的存储的可靠性以及容错问题,分布式内存存储层的节点上运行守护进程,用于监控本节点的状态,并将该状态注册到全局监管服务中;一旦有节点发生数据失效,全局监管服务感知到,当下次需要到该节点查询数据时,跳向持久化存储层进行查询,并将使用到的相关数据重新载入到分布式内存存储层的其他节点中,以供后面快速查询。
进一步地,还包括步骤(4):提供位于最上层的RDF数据存储和查询接口层,用于导入数据和向用户提供查询服务。更进一步的,所述步骤(4)中,RDF数据存储和查询接口包括SPARQL引擎模块、数据库选择模块和数据库连接模块;所述SPARQL引擎模块用于解析用户提交的查询请求并生成相应的查询计划,所述数据库选择模块用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层上完成,所述数据库连接模块用于管理和保持常用的数据库连接,同时还负责监管关于数据库状态的信息。
有益效果:本发明能够高效地对大规模RDF数据进行存储:第一,设计一个分布式层次化存储架构来高效地存储大规模RDF数据。所有的RDF数据都通过一个基于硬盘的分布式数据存储引擎进行持久化存储。为解决RDF数据的查询缺乏本地化的特点,提高对磁盘的随机访问性能,本发明在持久化存储层之上还设计了一个分布式内存存储层来存储那些经常被查询的RDF数据及其索引;第二,通过对百万条真实用户的查询日志和很多基准测试中查询实例的分析,本发明在上述层次化存储架构的基础之上,设计了一个冷热数据混合索引机制,以更好地利用系统架构并提高性能;第三,为了提升系统应对动态变化的能力,本发明对存储在分布式内存中的RDF数据采用一致性哈希算法来对进行划分。当系统需要增加或删减存储资源时,无需对原有RDF数据全部重新划分即可在线完成调整,整个调整过程中对外服务无需中止;第四,由于在现实应用中,分布式系统中独立的节点可能会发生故障。为保障在节点发生故障时整个分布式系统的高可用性,本发明还设计了一套容错机制。
附图说明
图1为本发明的方法总体示意图;
图2为本发明中节点状态监测示意图(变化的节点指新增或故障节点);
图3为本发明中节点数据划分示意图(变化的节点指新增或故障节点);
图4为本发明中RDF三元组的混合索引机制和数据存放策略示意图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明采用两个存储层以存储数据,从底层到上层依次为:持久化存储层和分布式内存存储层;还包括位于最上层的RDF数据存储和查询接口层;将常用的RDF数据存储到分布式内存存储层,将不常用的RDF数据存储到持久化存储层;当分布式内存存储层的容量不足时,用最新查询的RDF数据替换过时的RDF数据;RDF数据存储和查询接口层用于导入数据和向用户提供查询服务。进一步地,本发明还提供了一种节点的容错和动态扩展机制。
将一个RDF三元组(记为“主语谓语宾语”)导入存储中的流程包括以下步骤:
(1)将该三元组按照key=“主语谓语”,value=“宾语”格式添加到位于分布式内存存储层的“主语谓语”RDF数据表中;
(2)将该三元组按照key=“谓语宾语”,value=“主语”格式添加到位于分布式内存存储层的“谓语宾语”RDF数据表中;
(3)将该三元组按照key=“主语谓语宾语”的格式添加到位于持久化存储层的“主语谓语宾语”RDF数据表中;
(4)将该三元组按照key=“谓语宾语主语”的格式添加到位于持久化存储层的“谓语宾语主语”RDF数据表中;
(5)将该三元组按照key=“宾语主语谓语”的格式添加到位于持久化存储层的“宾语主语谓语”RDF数据表中。
进一步地,所述RDF数据存储和查询接口层包括SPARQL(Simple Protocol and RDF Query Language)引擎模块、数据库选择模块和数据库连接模块;所述SPARQL引擎模块用于解析用户提交的查询请求并生成相应的查询计划,所述数据库选择模块用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层上完成,所述数据库连接模块用于管理和保持常用的数据库连接,同时还负责监管关于数据库状态的信息。对于一个给定的RDF查询模式请求,其处理流程包括以下步骤:
(1)如果该查询模式是“主语谓语*” (*表示一个通配符,表示相应的部分可以取任意值)或“主语谓语宾语”,则以“主语谓语”为key直接到位于分布式内存存储层的“主语谓语”表中查询,如果查询结果不为空则返回结果,查询结束。如果不为空,则按步骤(3)中的查询方式进行。
(2)如果该查询模式是“谓语宾语*”,则以“谓语宾语”为key直接到位于分布式内存存储层的“谓语宾语”表中查询,如果查询结果不为空则返回结果,查询结束。如果不为空,则按步骤(4)中的查询方式进行。
(3)如果该查询模式是“主语*”或“主语宾语*”,则以“主语*”为key到位于持久化存储层的“主语谓语宾语”表中进行通配查询,将查询的结果返回,同时将结果以对应的格式插入到分布式存储层的“主语谓语”和“谓语宾语”RDF数据表中。
(4)如果该查询模式是“谓语*”,则以“谓语*”为key到位于持久化存储层的“谓语宾语主语”表中进行通配查询,将查询的结果返回,同时将结果以对应的格式插入到分布式存储层的“主语谓语”和“谓语宾语”RDF数据表中。
(5)如果该查询模式是“宾语*”,则以“宾语*”为key到位于持久化存储层的“宾语主语谓语”表中进行通配查询,将查询的结果返回,同时将结果以对应的格式插入到分布式存储层的“主语谓语”和“谓语宾语”RDF数据表中。
(6)如果该查询模式是“*”,则对位于持久化存储层“主语谓语宾语”表的全表扫描,并将结果返回。
本发明中容错机制的工作流程是:所述分布式内存存储层的节点上运行守护进程,用于监控本节点内存数据库的状态,并将该状态注册到全局监管服务中;一旦有节点内存数据库发生故障,全局监管服务感知到,当下次需要到该节点查询内存数据库时,跳向持久化存储层进行查询,并将使用到的相关RDF数据重新载入到其他节点的内存数据库中。
如图1所示,本发明所涉及到的分布式层次化的RDF数据的存储方法的实施方式为:构建一个包括主要包括3个层面的系统,其中持久化存储层在最底层,并通过多个副本的方式对该层的数据进行容错。持久化存储层是基于磁盘的,有很大的数据容量,但是对随机存储效率不高,因此本发明还采用多个Key-Value类型的内存数据库(一个Key-Value类型的内存数据库对应一个节点)构建了一个分布式内存存储层。存储在分布式内存存储层的数据具有很快的访问速度,但是数据总体的容量不大。为此,本发明设计了一套混合式的RDF数据存储机制,将常用的RDF数据存到分布式内存存储层的内存数据库中,而不常用的RDF数据存储到持久化存储层中。随着查询的进行,将新的常用的RDF数据导入到分布式内存存储层中,当分布式内存存储层容量不够的时候,会启动LRU(Least Recently Used,近期最少使用)替换机制,优先清除很久没被使用过的内存中的RDF数据。最后,本发明还在最上层构建了一个RDF数据存储和查询接口层,这一层主要负责数据的导入和向终端用户(简称“用户”)提供查询服务。它由3个子模块构成,第一个子模块是SPARQL引擎模块。用户提交的查询请求的解析和优化的查询计划将在这里生成;第二个子模块是数据库选择模块,主要是用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层上完成;第三个子模块是数据库连接模块,主要工作是管理和保持一些经常使用的数据库连接,同时还负责监管一些关于数据库状态的信息。通过第三个子模块,可以在实际查询的时候避免或减少连接数据的额外开销,同时还能在系统运行过程中及时发现数据故障,以做容错处理。
本发明中针对分布式的RDF数据库提出的容错和支持动态变化的实施方式为:针对中间层分布式内存存储的容错和可扩展问题设计了一系列方法,如图2和图3所示。分布式内存存储是由多个Key-Value类型的内存数据库(一个Key-Value类型的内存数据库对应一个节点)构建而成的。本发明首先在这些节点上运行一个守护进程负责监控本节点内存数据库的状态,然后观测到的状态注册到全局监管服务中。对于一个给定Key的数据,其所在的Key-Value类型的内存数据库地址是通过一致性哈希算法决定的。接着,一旦有Key-Value类型的内存数据库对应的节点发生故障时,全局监管服务会及时感知到,当有查询通过Key算出需要到该节点查询内存数据库时,程序自动跳向底层持久化存储层进行查询,并将使用到的相关RDF数据重新载入到其他节点的内存数据库中。同理,本发明也是通过类似的机制实现节点的动态扩展技术,当有新的节点添加到分布式内存存储层之后,该新的节点将会注册到全局监管服务上。通过一致性哈希算法,新加入的节点会分担掉集群中其他Key-Value类型的内存数据库中的一些数据,从而达到负载均衡的目的。
SPARQL查询通常都是由一组RDF三元组查询模式(简称“三元组模式”)匹配组成的。在RDF三元组数据库中,为了能够提高这些模式匹配的速度,通常会建立这些模式的索引。和现有的方法不同,本发明所提出的建立索引的方式是从信息检索角度,而不是数据的角度。为了提供更快的查询速度,本发明还采用了一种混合式的索引技术。其实施方式为:首先,为了分析这些三元组查询模式的分布情况,本发明基于含有两千万查询记录的真实的DBpedia查询日志以及一些广为使用的LUBM、SP2Bench等基准测试实例上做了统计。接着,根据统计结果发现,“主语谓语*”、“*谓语宾语”和“*谓语*”(*表示一个通配符,表示相应的部分可以取任意值)这三种模式经常被用到,其占了所有三元组模式匹配查询条数的90%以上,而“*谓语*”通常又可以扩展成“主语谓语*”、“*谓语宾语”。最后,基于这个分析结果,为了更好地利用本发明提出的层次化存储架构,本发明提出了一个混合式的存储模式(如图4所示):将“主语谓语*”、“*谓语宾语”这两种查询模式的RDF数据存放到分布式内存存储层中,而将通用查询模式的RDF数据存储到持久化存储层。
本发明基于已有的一些开源软件实现了一个原型系统。其中持久化数据存储采用HBase、全局监管服务采用ZooKeeper,这两个软件不属于本发明的内容。通过使用国际工具评测中的LUBM基准测试(http://swat.cse.lehigh.edu/projects/lubm/)对本发明实现的原型系统和现有方法进行测试,评测中使用查询耗时作为度量指标。通过与Jena-Hbase、SHARD这2个现有方法的对比,本发明实现的原型系统在绝大多数测试例子上的查询效率一致优于现有方法(参见表1),证明了本发明的分布式层次化的RDF数据的存储方法的有效性。
表1:本发明与现有两种方法的在LUBM-10数据集查询性能对比(单位:毫秒)

一种分布式层次化的RDF数据的存储方法.pdf_第1页
第1页 / 共8页
一种分布式层次化的RDF数据的存储方法.pdf_第2页
第2页 / 共8页
一种分布式层次化的RDF数据的存储方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《一种分布式层次化的RDF数据的存储方法.pdf》由会员分享,可在线阅读,更多相关《一种分布式层次化的RDF数据的存储方法.pdf(8页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103617276 A (43)申请公布日 2014.03.05 CN 103617276 A (21)申请号 201310658588.5 (22)申请日 2013.12.09 G06F 17/30(2006.01) (71)申请人 南京大学 地址 210093 江苏省南京市汉口路 22 号 (72)发明人 黄宜华 顾荣 胡伟 (74)专利代理机构 苏州威世朋知识产权代理事 务所 ( 普通合伙 ) 32235 代理人 杨林洁 (54) 发明名称 一种分布式层次化的 RDF 数据的存储方法 (57) 摘要 本发明公开了一种分布式层次化的 RDF 数据 的存储方法, 包。

2、括以下步骤 : 对所有 RDF 数据进行 索引 ; 采用两个存储层以存储索引后的 RDF 数据, 从底层到上层依次为 : 持久化存储层和分布式内 存存储层 ; 所有 RDF 数据首先存储到持久化存储 层, 然后, 将常用的 RDF 数据存储到分布式内存存 储层 ; 将所有存储在持久化存储层的 RDF 数据自 动保持多个备份 ; 当检测到分布式内存存储层的 节点发生数据失效时, 在下次查询到该节点中的 RDF 数据时, 从持久化存储层去获取相应的数据。 本发明解决了现有的分布式存储方法计算延时 大、 性能低、 应对动态变化的能力不足的问题。 (51)Int.Cl. 权利要求书 1 页 说明书 5。

3、 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书5页 附图1页 (10)申请公布号 CN 103617276 A CN 103617276 A 1/1 页 2 1. 一种分布式层次化的 RDF 数据的存储方法, 包括以下步骤 : (1) 对所有 RDF 数据进行索引 ; (2) 采用两个存储层以存储索引后的 RDF 数据, 从底层到上层依次为 : 持久化存储层和 分布式内存存储层 ; 所有 RDF 数据首先存储到持久化存储层, 然后, 将常用的 RDF 数据存储 到分布式内存存储层 ; (3) 将所有存储在持久化存储层的 RDF 数据自动保。

4、持多个备份 ; 当检测到分布式内存 存储层的节点发生数据失效后, 在下次查询到该节点中的 RDF 数据时, 从持久化存储层去 获取相应的数据, 然后根据一致性哈希算法将获取到的数据加载到分布式内存存储层的其 他节点以供后面快速查询。 2. 根据权利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 采用 冷热数据混合索引的方法对所有 RDF 数据进行索引。 3. 根据权利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 采用 基于哈希的索引方法对所有 RDF 数据进行索引。 4. 根据权利要求 3 所述一种分布式层次化的 RDF 数据的存储方法。

5、, 其特征在于 : 所述 步骤 (1) 中, 采用基于标准 MD5 哈希和闭散列的方法存储发生碰撞的 RDF 数据。 5. 根据权利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 所述 步骤 (2) 中, 将 “主语谓语 *” 和 “* 谓语宾语” 这两种查询模式的 RDF 数据存储到分布式内 存存储层, 其中 * 为一个通配符, 表示相应的部分可取任意值。 6. 根据权利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 所述 步骤 (2) 中, 当分布式内存存储层的容量不足时, 用新的 RDF 数据替换过时的 RDF 数据。 7. 根据权。

6、利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 所述 步骤 (3) 中, 分布式内存存储层的节点上运行守护进程, 用于监控本节点的状态, 并将该状 态注册到全局监管服务中 ; 一旦有节点发生数据失效, 全局监管服务感知到, 当下次需要到 该节点查询数据时, 跳向持久化存储层进行查询, 并将使用到的相关数据重新载入到分布 式内存存储层的其他节点中, 以供后面快速查询。 8. 根据权利要求 1 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 还包 括步骤 (4) : 提供位于最上层的 RDF 数据存储和查询接口层, 用于导入数据和向用户提供查 询服务。

7、。 9. 根据权利要求 8 所述一种分布式层次化的 RDF 数据的存储方法, 其特征在于 : 所述 步骤 (4) 中, RDF 数据存储和查询接口包括 SPARQL 引擎模块、 数据库选择模块和数据库连接 模块 ; 所述 SPARQL 引擎模块用于解析用户提交的查询请求并生成相应的查询计划, 所述数 据库选择模块用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层 上完成, 所述数据库连接模块用于管理和保持常用的数据库连接, 同时还负责监管关于数 据库状态的信息。 权 利 要 求 书 CN 103617276 A 2 1/5 页 3 一种分布式层次化的 RDF 数据的存储方法 技术。

8、领域 0001 本发明涉及通信技术领域, 尤其涉及一种分布式层次化的 RDF(Resource Description Framework, 资源描述框架) 数据的存储方法。 背景技术 0002 语义网 (Semantic Web) 是万维网的一个重要发展方向, 为万维网上的知识表示、 推理、 交换和复用提供了基础。 由于任何机构和个人都允许自由发布语义网数据, 尤其是现 有商用搜索引擎倡导网站显式地提供语义数据、 社交网络开始使用语义数据, 这都使得语 义网的数据量爆炸性增长。目前, 以 DBpedia 和 Bio2RDF 为例的语义网数据已经达到了数 以十亿计的规模。这些海量语义网数据一方。

9、面促进了语义网内容和知识的繁荣, 同时也对 现有语义网数据管理系统的性能提出了挑战。 0003 语义网数据是采用RDF模型来表示的。 RDF是一种数据模型, 它是一个W3C推荐标 准, 用于Web上的数据交换。 RDF定义了一个简单的有向图模型来表示资源以及资源间的联 系, 每个联系表示为一个RDF三元组, 包括主语、 谓语和宾语三个部分。 一个RDF三元组声明 了该三元组中的主语和宾语存在的谓语联系是成立的。RDF 可以很灵活地对任何资源进行 定义或声明。 为了能够方便地对RDF数据进行查询和管理, W3C推荐了一种RDF查询的语言 SPARQL(Simple Protocol and RD。

10、F Query Language), 它的语法格式和 SQL 很类似。绝大 部分的 SPARQL 查询语句的形式都是由一系列三元组模式 (triple pattern) 组成, 其中每 个三元组模式在格式上和一个 RDF 三元组类似, 只是其中的主语、 谓语或宾语可能是变量。 另外, SPARQL 也可以通过连接 (join) 、 交 / 并、 选择、 投影等操作来构造更加复杂的查询。 0004 传统的 RDF 数据管理软件, 如 Sesame、 3store 等, 均在单机上运行。随着 RDF 数据 量的不断增长, 单台计算机存在规模上限, 已经难以有效地存储和管理海量 RDF 数据。因此 。

11、近些年来, 人们开始通过将大规模 RDF 数据集划分存储到分布式系统中的多个机器上进行 管理和查询操作。这些分布式的 RDF 数据管理系统可以宽泛地划分为两类 : 一类是将 RDF 数据集看成由多条三元组记录组成, 构建针对这些三元组记录的分布式存储系统, 这类系 统一般都是直接建立在现在广为使用的大数据的基础处理引擎 Apache Hadoop、 HBase、 Pig 等之上, 例如 Jena-HBase、 SHARD 和 PigSPARQL 等。这类方法存在的一个严重的问题就是性 能较低, 其原因是它们将查询转换为一系列MapReduce任务执行, 而MapReduce的设计定位 侧重处理。

12、高延时的离线处理分析等应用 ; 另外一种方法将 RDF 数据集看成一张图, 采用图 划分的优化技术来提高查询时模式匹配的效率, 这类方法被称为基于图划分的方法。在实 际应用中基于图划分的方法有一个重要缺陷, 当有新的批量数据或机器加入到系统中, 为 了重新使整个系统负载均衡, 整个新的 RDF 图需要重新划分。该过程非常耗时甚至需要中 止对外提供的查询服务。当图很大时, 对均匀地划分图将越来越难实现。从这个意义上看, 基于图划分的方法并不具备动态性, 对于现实中流式或增量式输入 RDF 数据的应用场景不 适用。 说 明 书 CN 103617276 A 3 2/5 页 4 发明内容 0005 。

13、发明目的 : 针对上述现有技术存在的问题和不足, 本发明的目的是提供一种分布 式层次化的 RDF 数据的存储方法, 解决了现有的分布式存储方法计算延时大、 性能低、 应对 动态变化的能力不足的问题。 0006 技术方案 : 为实现上述发明目的, 本发明采用的技术方案为一种分布式层次化的 RDF 数据的存储方法, 包括以下步骤 : (1) 对所有 RDF 数据进行索引 ; (2) 采用两个存储层以存储索引后的 RDF 数据, 从底层到上层依次为 : 持久化存储层和 分布式内存存储层 ; 所有 RDF 数据首先存储到持久化存储层, 然后, 将常用的 RDF 数据存储 到分布式内存存储层 ; (3)。

14、 将所有存储在持久化存储层的 RDF 数据自动保持多个备份 ; 当检测到分布式内存 存储层的节点发生数据失效时, 在下次查询到该节点中的 RDF 数据时, 从持久化存储层去 获取相应的数据, 然后根据一致性哈希算法将获取到的数据加载到分布式内存存储层的其 他节点以供后面快速查询。 0007 进一步地, 采用冷热数据混合索引的方法对所有 RDF 数据进行索引。更进一步的, 采用基于哈希的索引方法索引冷热数据, 支持快速查询并节省 RDF 数据存储空间, 哈希索 引后的 RDF 数据可以支持快速的查询定位, 避免查询时进行全表扫描 ; 同时, 索引后 RDF 数 据量大幅压缩, 有利于存放在内存数。

15、据库中进行快速查询。 更进一步的, 为了解决哈希索引 后的碰撞问题, 采用基于 MD5 哈希和闭散列的方法存储发生碰撞的 RDF 数据。 0008 进一步地, 所述步骤 (2) 中, 将 “主语谓语 *” 和 “* 谓语宾语” 这两种查询模式的 RDF 数据存储到分布式内存存储层, 其中 * 为一个通配符, 表示相应的部分可取任意值。 0009 进一步地, 所述步骤 (2) 中, 当分布式内存存储层的容量不足时, 用新的 RDF 数据 替换过时的 RDF 数据。 0010 进一步地, 所述步骤 (3) 中, 为了解决 RDF 数据的存储的可靠性以及容错问题, 分 布式内存存储层的节点上运行守护。

16、进程, 用于监控本节点的状态, 并将该状态注册到全局 监管服务中 ; 一旦有节点发生数据失效, 全局监管服务感知到, 当下次需要到该节点查询数 据时, 跳向持久化存储层进行查询, 并将使用到的相关数据重新载入到分布式内存存储层 的其他节点中, 以供后面快速查询。 0011 进一步地, 还包括步骤 (4) : 提供位于最上层的 RDF 数据存储和查询接口层, 用于 导入数据和向用户提供查询服务。更进一步的, 所述步骤 (4) 中, RDF 数据存储和查询接口 包括SPARQL引擎模块、 数据库选择模块和数据库连接模块 ; 所述SPARQL引擎模块用于解析 用户提交的查询请求并生成相应的查询计划,。

17、 所述数据库选择模块用于决定是将查询请求 发送到持久化存储层还是直接在分布式内存存储层上完成, 所述数据库连接模块用于管理 和保持常用的数据库连接, 同时还负责监管关于数据库状态的信息。 0012 有益效果 : 本发明能够高效地对大规模 RDF 数据进行存储 : 第一, 设计一个分布式 层次化存储架构来高效地存储大规模 RDF 数据。所有的 RDF 数据都通过一个基于硬盘的分 布式数据存储引擎进行持久化存储。为解决 RDF 数据的查询缺乏本地化的特点, 提高对磁 盘的随机访问性能, 本发明在持久化存储层之上还设计了一个分布式内存存储层来存储那 些经常被查询的 RDF 数据及其索引 ; 第二, 。

18、通过对百万条真实用户的查询日志和很多基准 说 明 书 CN 103617276 A 4 3/5 页 5 测试中查询实例的分析, 本发明在上述层次化存储架构的基础之上, 设计了一个冷热数据 混合索引机制, 以更好地利用系统架构并提高性能 ; 第三, 为了提升系统应对动态变化的能 力, 本发明对存储在分布式内存中的 RDF 数据采用一致性哈希算法来对进行划分。当系统 需要增加或删减存储资源时, 无需对原有 RDF 数据全部重新划分即可在线完成调整, 整个 调整过程中对外服务无需中止 ; 第四, 由于在现实应用中, 分布式系统中独立的节点可能会 发生故障。为保障在节点发生故障时整个分布式系统的高可用。

19、性, 本发明还设计了一套容 错机制。 附图说明 0013 图 1 为本发明的方法总体示意图 ; 图 2 为本发明中节点状态监测示意图 (变化的节点指新增或故障节点) ; 图 3 为本发明中节点数据划分示意图 (变化的节点指新增或故障节点) ; 图 4 为本发明中 RDF 三元组的混合索引机制和数据存放策略示意图。 具体实施方式 0014 下面结合附图和具体实施例, 进一步阐明本发明, 应理解这些实施例仅用于说明 本发明而不用于限制本发明的范围, 在阅读了本发明之后, 本领域技术人员对本发明的各 种等价形式的修改均落于本申请所附权利要求所限定的范围。 0015 本发明采用两个存储层以存储数据, 。

20、从底层到上层依次为 : 持久化存储层和分布 式内存存储层 ; 还包括位于最上层的 RDF 数据存储和查询接口层 ; 将常用的 RDF 数据存储 到分布式内存存储层, 将不常用的 RDF 数据存储到持久化存储层 ; 当分布式内存存储层的 容量不足时, 用最新查询的 RDF 数据替换过时的 RDF 数据 ; RDF 数据存储和查询接口层用于 导入数据和向用户提供查询服务。进一步地, 本发明还提供了一种节点的容错和动态扩展 机制。 0016 将一个 RDF 三元组 (记为 “主语谓语宾语” ) 导入存储中的流程包括以下步骤 : (1) 将该三元组按照 key=“主语谓语” , value=“宾语” 。

21、格式添加到位于分布式内存存 储层的 “主语谓语” RDF 数据表中 ; (2) 将该三元组按照 key=“谓语宾语” , value=“主语” 格式添加到位于分布式内存存 储层的 “谓语宾语” RDF 数据表中 ; (3) 将该三元组按照 key=“主语谓语宾语” 的格式添加到位于持久化存储层的 “主语 谓语宾语” RDF 数据表中 ; (4) 将该三元组按照 key=“谓语宾语主语” 的格式添加到位于持久化存储层的 “谓语 宾语主语” RDF 数据表中 ; (5) 将该三元组按照 key=“宾语主语谓语” 的格式添加到位于持久化存储层的 “宾语 主语谓语” RDF 数据表中。 0017 进一。

22、步地, 所述 RDF 数据存储和查询接口层包括 SPARQL(Simple Protocol and RDF Query Language) 引擎模块、 数据库选择模块和数据库连接模块 ; 所述 SPARQL 引擎模 块用于解析用户提交的查询请求并生成相应的查询计划, 所述数据库选择模块用于决定是 将查询请求发送到持久化存储层还是直接在分布式内存存储层上完成, 所述数据库连接模 说 明 书 CN 103617276 A 5 4/5 页 6 块用于管理和保持常用的数据库连接, 同时还负责监管关于数据库状态的信息。对于一个 给定的 RDF 查询模式请求, 其处理流程包括以下步骤 : (1) 如果该。

23、查询模式是 “主语谓语 *” (* 表示一个通配符, 表示相应的部分可以取任意 值) 或 “主语谓语宾语” , 则以 “主语谓语” 为 key 直接到位于分布式内存存储层的 “主语谓 语” 表中查询, 如果查询结果不为空则返回结果, 查询结束。如果不为空, 则按步骤 (3) 中的 查询方式进行。 0018 (2) 如果该查询模式是 “谓语宾语 *” , 则以 “谓语宾语” 为 key 直接到位于分布式 内存存储层的 “谓语宾语” 表中查询, 如果查询结果不为空则返回结果, 查询结束。如果不 为空, 则按步骤 (4) 中的查询方式进行。 0019 (3) 如果该查询模式是 “主语 *” 或 “主。

24、语宾语 *” , 则以 “主语 *” 为 key 到位于持 久化存储层的 “主语谓语宾语” 表中进行通配查询, 将查询的结果返回, 同时将结果以对应 的格式插入到分布式存储层的 “主语谓语” 和 “谓语宾语” RDF 数据表中。 0020 (4) 如果该查询模式是 “谓语 *” , 则以 “谓语 *” 为 key 到位于持久化存储层的 “谓 语宾语主语” 表中进行通配查询, 将查询的结果返回, 同时将结果以对应的格式插入到分布 式存储层的 “主语谓语” 和 “谓语宾语” RDF 数据表中。 0021 (5) 如果该查询模式是 “宾语 *” , 则以 “宾语 *” 为 key 到位于持久化存储层。

25、的 “宾 语主语谓语” 表中进行通配查询, 将查询的结果返回, 同时将结果以对应的格式插入到分布 式存储层的 “主语谓语” 和 “谓语宾语” RDF 数据表中。 0022 (6) 如果该查询模式是 “*” , 则对位于持久化存储层 “主语谓语宾语” 表的全表扫 描, 并将结果返回。 0023 本发明中容错机制的工作流程是 : 所述分布式内存存储层的节点上运行守护进 程, 用于监控本节点内存数据库的状态, 并将该状态注册到全局监管服务中 ; 一旦有节点内 存数据库发生故障, 全局监管服务感知到, 当下次需要到该节点查询内存数据库时, 跳向持 久化存储层进行查询, 并将使用到的相关 RDF 数据重。

26、新载入到其他节点的内存数据库中。 0024 如图 1 所示, 本发明所涉及到的分布式层次化的 RDF 数据的存储方法的实施方式 为 : 构建一个包括主要包括 3 个层面的系统, 其中持久化存储层在最底层, 并通过多个副本 的方式对该层的数据进行容错。 持久化存储层是基于磁盘的, 有很大的数据容量, 但是对随 机存储效率不高, 因此本发明还采用多个 Key-Value 类型的内存数据库 ( 一个 Key-Value 类型的内存数据库对应一个节点 ) 构建了一个分布式内存存储层。存储在分布式内存存储 层的数据具有很快的访问速度, 但是数据总体的容量不大。 为此, 本发明设计了一套混合式 的RDF数。

27、据存储机制, 将常用的RDF数据存到分布式内存存储层的内存数据库中, 而不常用 的RDF数据存储到持久化存储层中。 随着查询的进行, 将新的常用的RDF数据导入到分布式 内存存储层中, 当分布式内存存储层容量不够的时候, 会启动 LRU(Least Recently Used, 近期最少使用) 替换机制, 优先清除很久没被使用过的内存中的 RDF 数据。最后, 本发明还 在最上层构建了一个 RDF 数据存储和查询接口层, 这一层主要负责数据的导入和向终端用 户 (简称 “用户” ) 提供查询服务。它由 3 个子模块构成, 第一个子模块是 SPARQL 引擎模块。 用户提交的查询请求的解析和优化。

28、的查询计划将在这里生成 ; 第二个子模块是数据库选择 模块, 主要是用于决定是将查询请求发送到持久化存储层还是直接在分布式内存存储层上 完成 ; 第三个子模块是数据库连接模块, 主要工作是管理和保持一些经常使用的数据库连 说 明 书 CN 103617276 A 6 5/5 页 7 接, 同时还负责监管一些关于数据库状态的信息。 通过第三个子模块, 可以在实际查询的时 候避免或减少连接数据的额外开销, 同时还能在系统运行过程中及时发现数据故障, 以做 容错处理。 0025 本发明中针对分布式的 RDF 数据库提出的容错和支持动态变化的实施方式为 : 针 对中间层分布式内存存储的容错和可扩展问题。

29、设计了一系列方法, 如图 2 和图 3 所示。分 布式内存存储是由多个 Key-Value 类型的内存数据库 ( 一个 Key-Value 类型的内存数据库 对应一个节点 ) 构建而成的。本发明首先在这些节点上运行一个守护进程负责监控本节点 内存数据库的状态, 然后观测到的状态注册到全局监管服务中。对于一个给定 Key 的数据, 其所在的 Key-Value 类型的内存数据库地址是通过一致性哈希算法决定的。接着, 一旦有 Key-Value 类型的内存数据库对应的节点发生故障时, 全局监管服务会及时感知到, 当有查 询通过 Key 算出需要到该节点查询内存数据库时, 程序自动跳向底层持久化存储。

30、层进行查 询, 并将使用到的相关 RDF 数据重新载入到其他节点的内存数据库中。同理, 本发明也是通 过类似的机制实现节点的动态扩展技术, 当有新的节点添加到分布式内存存储层之后, 该 新的节点将会注册到全局监管服务上。通过一致性哈希算法, 新加入的节点会分担掉集群 中其他 Key-Value 类型的内存数据库中的一些数据, 从而达到负载均衡的目的。 0026 SPARQL 查询通常都是由一组 RDF 三元组查询模式 ( 简称 “三元组模式” ) 匹配组 成的。在 RDF 三元组数据库中, 为了能够提高这些模式匹配的速度, 通常会建立这些模式的 索引。 和现有的方法不同, 本发明所提出的建立索。

31、引的方式是从信息检索角度, 而不是数据 的角度。为了提供更快的查询速度, 本发明还采用了一种混合式的索引技术。其实施方式 为 : 首先, 为了分析这些三元组查询模式的分布情况, 本发明基于含有两千万查询记录的真 实的 DBpedia 查询日志以及一些广为使用的 LUBM、 SP2Bench 等基准测试实例上做了统计。 接着, 根据统计结果发现,“主语谓语 *” 、“* 谓语宾语” 和 “* 谓语 *” (* 表示一个通配符, 表示相应的部分可以取任意值) 这三种模式经常被用到, 其占了所有三元组模式匹配查询 条数的 90% 以上, 而 “* 谓语 *” 通常又可以扩展成 “主语谓语 *” 、“。

32、* 谓语宾语” 。最后, 基于 这个分析结果, 为了更好地利用本发明提出的层次化存储架构, 本发明提出了一个混合式 的存储模式 (如图 4 所示) : 将 “主语谓语 *” 、“* 谓语宾语” 这两种查询模式的 RDF 数据存放 到分布式内存存储层中, 而将通用查询模式的 RDF 数据存储到持久化存储层。 0027 本发明基于已有的一些开源软件实现了一个原型系统。 其中持久化数据存储采用 HBase、 全局监管服务采用ZooKeeper, 这两个软件不属于本发明的内容。 通过使用国际工具 评测中的 LUBM 基准测试 (http:/swat.cse.lehigh.edu/projects/lubm/) 对本发明实现 的原型系统和现有方法进行测试, 评测中使用查询耗时作为度量指标。 通过与Jena-Hbase、 SHARD 这 2 个现有方法的对比, 本发明实现的原型系统在绝大多数测试例子上的查询效率 一致优于现有方法 (参见表 1) , 证明了本发明的分布式层次化的 RDF 数据的存储方法的有 效性。 0028 表 1 : 本发明与现有两种方法的在 LUBM-10 数据集查询性能对比 (单位 : 毫秒) 说 明 书 CN 103617276 A 7 1/1 页 8 图 1 图 2 图 3 图 4 说 明 书 附 图 CN 103617276 A 8 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1