CN109684325A - 一种高效的rdf数据存储查询系统 - Google Patents

一种高效的rdf数据存储查询系统 Download PDF

Info

Publication number
CN109684325A
CN109684325A CN201811320234.9A CN201811320234A CN109684325A CN 109684325 A CN109684325 A CN 109684325A CN 201811320234 A CN201811320234 A CN 201811320234A CN 109684325 A CN109684325 A CN 109684325A
Authority
CN
China
Prior art keywords
hash
layer
tree
rdf
hash tree
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201811320234.9A
Other languages
English (en)
Inventor
李雯雯
饶国政
张冰怡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tianjin University
Original Assignee
Tianjin University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tianjin University filed Critical Tianjin University
Priority to CN201811320234.9A priority Critical patent/CN109684325A/zh
Publication of CN109684325A publication Critical patent/CN109684325A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种高效的RDF数据存储查询系统,所述系统采用哈希表和哈希树的复合索引结构,用于存储RDF数据;所述复合索引结构包括:作为第一层的哈希表的哈希层、以及作为第二层的哈希树的树层;所述哈希层为静态哈希表,所述树层为动态的哈希树,提高了查询效率;在第一层中,构造长度为m的静态哈希表;在第二层中,基于素数序列动态地构建哈希树;所述系统还利用哈希树解决哈希表中的冲突问题。本发明通过设计的数据存储查询系统提高了RDF存储效率和SPARQL的查询效率,满足了实际应用中的多种需要。

Description

一种高效的RDF数据存储查询系统
技术领域
本发明涉及索引和存储结构领域,尤其涉及一种高效的RDF(资源描述框架)数据存储查询系统。
背景技术
在过去的几十年里,RDF数据量大幅增长,因此,如何有效地存储和管理海量的RDF数据已成为一项巨大的挑战。现已有的几个系统支持RDF存储和查询,如gStore、RDF-3x等。根据数据管理方法,这些系统可以分为三类:基于关系数据库的系统、基于三元组的系统和基于图的系统。
基于关系数据库的系统将RDF数据转换为关系数据表存储,查询时,SPARQL(查询语言和数据获取协议)查询也需要转化为SQL(结构化查询语言)语言。这些系统又可以细分为:基于三列表的系统、基于属性表的系统和基于垂直分区表的系统。在基于三列表的系统中,每行元素代表一个RDF语句,三列分别对应于主语、谓语和宾语。虽然三列表简单易用,但查询效率低,易产生大量的自连接操作。基于属性表的系统按属性(也就是谓词)分组,相同谓词的语句分到一个关系表中。该方法可以有效减少自连接操作的次数,但是,实际上,属性表会产生大量空值,而且,查询还会涉及多个属性表,因此,属性表只适用于某些特殊应用。垂直分区表使用多个双列表存储RDF数据。与属性表相同,垂直分区表也可能导致大量空值。利用关系数据库成熟的管理技术,这类系统易于实现。但是,这类系统破坏了RDF的原始结构,并且容易产生大量的join操作和空值。
基于三元组的系统以三元组原始的形式来存储RDF数据,例如:RDF-3x、RDF Cube等。通常这些系统利用B+树索引、哈希索引或其他索引结构来提高查询性能。例如,RDF-3x根据主谓宾六种不同的组合顺序创建了六种B+树索引以加速查询性能。其基本思想是牺牲空间效率以提高时间效率;RDFCube根据主谓宾建立三维的哈希表用来过滤掉部分无效数据。
基于图的系统将RDF数据看成图数据来处理,更好的保留了RDF的结构特征。例如:在gstore中,RDF数据的查询问题转换为了子图匹配问题。
虽然上面提到的方法已经实现了RDF存储和查询的功能,但是随着数据量的增多,查询速度慢已经成为这类系统的致命弱点。如何在大数据量的情况下,提高RDF存储效率和查询速度,是本发明要解决的问题。
发明内容
本发明提供了一种高效的RDF数据存储查询系统,本发明拟开发一个支持RDF存储和SPARQL查询的系统,旨在提高RDF存储效率和SPARQL查询效率,详见下文描述:
一种高效的RDF数据存储查询系统,所述系统采用哈希表和哈希树的复合索引结构,用于存储RDF数据;
所述复合索引结构包括:作为第一层的哈希表的哈希层、以及作为第二层的哈希树的树层;所述哈希层为静态哈希表,所述树层为动态的哈希树,提高了查询效率;
在第一层中,构造长度为m的静态哈希表;在第二层中,基于素数序列动态地构建哈希树;
所述系统还利用哈希树解决哈希表中的冲突问题。
进一步地,所述系统在执行插入操作时,包括:将RDF顶点直接插入到哈希表的空白桶中;
若哈希表中的对应位置已有数据,则应在第二层中建立新的哈希树;
若哈希树未构建,则创建哈希树的根节点,若已构建,则插入RDF顶点,依次向下判断子节点是否被占用,没有占用时,插入节点。
其中,所述系统在执行查找操作时,包括:
在哈希层中,用整数对m取模,判断当前位置是否是查找的对象,如果是,执行查找操作;
如果否,到哈希树中查找,首先判断哈希树的根节点,若还是未找到,则对第一个素数取模,向下查找,直到找到该值为止。
所述系统在执行删除操作时,包括:
如果找到需要删除的对象,直接将该对象置为空;
如果未找到拟删除的对象,则返回删除失败。
本发明提供的技术方案的有益效果是:
1、本发明设计了HTStore--一种基于哈希索引的系统,用于存储和查询RDF数据集,索引结构包括两部分:包含哈希表的哈希层和包含哈希树的树层;
2、本发明采用的索引结构可以加快查询性能,在LUBM(Lehigh universitybenchmark大学基准数据)数据集上进行了实验,实验结果证明,与部分RDF数据管理系统相比,本发明设计的系统可以将查询效率提高21.3%,满足了实际应用中的多种需要。
附图说明
图1是本发明提供的哈希索引示意图;
图2是索引中插入节点可能产生的不同情况下的示意图;
其中,(a)为没有冲突发生的情况下的示意图;(b)为冲突发生在哈希表中的情况下的示意图;(c)为冲突发生在哈希树的情况下的示意图。
图3是哈希索引插入节点的算法示意图;
图4是查找索引中某个节点的示例图;
图5是实验中用到的几个查询示意图;
图6是在不同数据集上查询性能的比较示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面对本发明实施方式作进一步地详细描述。
实施例1
HTStore是一个基于图的三元组系统,可以动态地支持RDF数据存储和SPARQL查询。在该HTStore系统中,RDF数据以邻接表的形式存储,同时,本发明实施例也根据RDF图的顶点建立哈希索引。
哈希索引的主要优点是检索速度快,特别是当数据量很大时。但是,传统的哈希索引存在一些固有的缺陷,因此,本发明实施例需要对索引结构进行改良。
在本发明实施例构建的RDF数据存储查询系统中,包含:哈希表和哈希树的复合索引结构用来存储RDF数据。哈希表是为快速访问而构建的,而哈希树的建立是为了有效地解决哈希冲突的问题。
接下来本发明实施例将更详细地描述HTStore系统的设计。与其他数据结构相比,哈希表的主要优点是检索速度快,特别是当数据量很大时。就时间复杂度而言,哈希表的检索复杂度是O(1),添加和删除的操作也在常量时间内就可以完成。但是,哈希表存在一些固有的缺陷,最明显的缺陷是哈希冲突,而不同的冲突解决方案对哈希表的性能有不同的影响。
目前,现有一些处理冲突的传统策略,例如:开放寻址、链表法等。但是,随着数据集的扩大,使用开放寻址的哈希表将难以扩大容量;使用链表的哈希表的长度也将不断增长且没有限制。因此,需要采取更有效的措施来解决哈希冲突。
在本发明实施例中,利用哈希树来解决哈希表中的冲突。哈希树是根据素数序列p={2,3,5,7,9….}动态建立的,根节点至多可以有两个子节点,再向下一层,每个子节点又最多可以有3个子节点,以此类推,每个节点最多只有对应质数个子节点。
因此,本发明实施例只需要用几层哈希树就可以存储海量个节点。若在哈希树中插入一个新节点,首先,确定根节点是否被占用,当它未被占用时,将新节点设置为根节点;否则,将利用第一个素数p1(这里可以看成是2)来获得哈希值t(t等于被插入节点的值与p1取模)。这意味着将确定根节点的第t个子节点是否被占用。如果没有占用,则设置新节点,并插入;如果仍然发生占用,则将迭代地使用第二素数p2(这里可以看成是3)求余。执行类似的操作,直到没有占用发生。
在本发明实施例设计的HTStore系统中,RDF数据以RDF图的形式组织。根据图中的顶点建立索引。索引结构包括两层:包含哈希表的哈希层(第一层)和包含哈希树的树层(第二层)。在第一层中,构造长度为m的静态哈希表。在第二层中,基于素数序列动态地构建哈希树。
假设本发明实施例打算在索引中插入一个新的RDF顶点,最简单的情况是哈希表中没有发生冲突。RDF顶点将直接插入到哈希表的空白桶中。若哈希表中的对应位置已有数据,则应在第二层中建立新的哈希树。若哈希树未构建,则创建哈希树的根节点,若已构建,则根据上述的哈希树插入节点的规则插入RDF顶点,依次向下判断子节点是否被占用,没有占用时,插入节点。
本发明实施例设计的查询过程类似于插入过程。在索引中执行查找之前,关键字将通过字符串哈希函数转换为整数。在哈希表层中,用该整数对m取模,判断该位置是否是查找的对象,如果是,执行查找操作;如果否,到哈希树中查找,首先判断哈希树的根节点,若还是未找到,则对第一个素数取模,向下查找,直到找到需要查找的值为止。
综上所述,本发明实施例开发了一个支持RDF存储和SPARQL查询的系统,提高RDF了存储效率和SPARQL查询效率,满足了实际应用中的需要。
实施例2
下面结合图1-图6对实施例1中的方案进行可行性验证,详见下文描述:
参见图1,为本支持RDF存储和SPARQL查询的系统的索引图,其中,RDF数据可以看成RDF图,本发明实施例对图中的每个节点创建索引,加快查询。
参见图2,这是索引中插入节点可能产生的不同情况。第一种情况表示在哈希表的对应位置正好有空位置,插入成功。第二种情况表示哈希表位置已占用,但是哈希树的根节点没有占用,则创建树根节点,插入成功。第三种情况表示哈希表位置已占用且哈希树的根结点也已经建立,则按照哈希树的插入节点规则插入节点。
参见图3,这是对插入节点算法的描述。参见图4,这是对查找节点过程的举例。图4需要查找“online shopping”这个关键字。首先将关键字通过字符串哈希函数转化为010编码,再在索引中查找010节点,查找的过程中分别访问了002、007这两个节点后,才找到010节点。
参见图5,这是实验中用于测试查询性能的查询语句。
下面简要介绍图6中的实验环境。HTstore是使用C++编辑、GCC编译。本发明实施例将HTStore和RDF-3X、gStore(版本2.0)、MonetDB进行比较。所有实验都在运行Linux的机器上执行,该机器上有4个CPU、6个内核和64GB内存,操作系统是Ubuntu14.04。在本实验中,本发明实施例使用基准数据集LUBM来评估性能。
参见图6,当数据量增加时,查询效率显着提高,与现有技术中的Gstore相比,本发明设计的HTStore系统可以将查询效率提高21.3%,满足了实际应用中的多种需要。
本领域技术人员可以理解附图只是一个优选实施例的示意图,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (4)

1.一种高效的RDF数据存储查询系统,其特征在于,所述系统采用哈希表和哈希树的复合索引结构,用于存储RDF数据;
所述复合索引结构包括:作为第一层的哈希表的哈希层、以及作为第二层的哈希树的树层;所述哈希层为静态哈希表,所述树层为动态的哈希树,提高了查询效率;
在第一层中,构造长度为m的静态哈希表;在第二层中,基于素数序列动态地构建哈希树;
所述系统还利用哈希树解决哈希表中的冲突问题。
2.根据权利要求1所述的一种高效的RDF数据存储查询系统,其特征在于,所述系统在执行插入操作时,包括:将RDF顶点直接插入到哈希表的空白桶中;
若哈希表中的对应位置已有数据,则应在第二层中建立新的哈希树;
若哈希树未构建,则创建哈希树的根节点,若已构建,则插入RDF顶点,依次向下判断子节点是否被占用,没有占用时,插入节点。
3.根据权利要求1所述的一种高效的RDF数据存储查询系统,其特征在于,所述系统在执行查找操作时,包括:
在哈希层中,用整数对m取模,判断当前位置是否是查找的对象,如果是,执行查找操作;
如果否,到哈希树中查找,首先判断哈希树的根节点,若还是未找到,则对第一个素数取模,向下查找,直到找到需要查找的值为止。
4.根据权利要求1所述的一种高效的RDF数据存储查询系统,其特征在于,所述系统在执行删除操作时,包括:
如果找到需要删除的对象,直接将该对象置为空;
如果未找到拟删除的对象,则返回删除失败。
CN201811320234.9A 2018-11-07 2018-11-07 一种高效的rdf数据存储查询系统 Pending CN109684325A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811320234.9A CN109684325A (zh) 2018-11-07 2018-11-07 一种高效的rdf数据存储查询系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811320234.9A CN109684325A (zh) 2018-11-07 2018-11-07 一种高效的rdf数据存储查询系统

Publications (1)

Publication Number Publication Date
CN109684325A true CN109684325A (zh) 2019-04-26

Family

ID=66185450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811320234.9A Pending CN109684325A (zh) 2018-11-07 2018-11-07 一种高效的rdf数据存储查询系统

Country Status (1)

Country Link
CN (1) CN109684325A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110275884A (zh) * 2019-05-31 2019-09-24 阿里巴巴集团控股有限公司 数据存储方法及节点
CN110990426A (zh) * 2019-12-05 2020-04-10 桂林电子科技大学 一种基于树搜索的rdf查询方法
CN111309979A (zh) * 2020-02-27 2020-06-19 桂林电子科技大学 一种基于邻居向量的RDF Top-k查询方法
CN111581215A (zh) * 2020-05-07 2020-08-25 钟士平 数组树数据储存方法、快速查找方法及可读储存介质
US11294875B2 (en) 2019-05-31 2022-04-05 Advanced New Technologies Co., Ltd. Data storage on tree nodes

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN105320775A (zh) * 2015-11-11 2016-02-10 中科曙光信息技术无锡有限公司 数据的存取方法和装置
CN105608224A (zh) * 2016-01-13 2016-05-25 广西师范大学 一种提高海量数据查询性能的正交多哈希映射索引方法
CN107153707A (zh) * 2017-05-12 2017-09-12 华中科技大学 一种针对非易失内存的哈希表构建方法及系统
CN108021678A (zh) * 2017-12-07 2018-05-11 北京理工大学 一种结构紧凑的键值对存储结构及快速键值对查找方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1464436A (zh) * 2002-06-26 2003-12-31 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN105320775A (zh) * 2015-11-11 2016-02-10 中科曙光信息技术无锡有限公司 数据的存取方法和装置
CN105608224A (zh) * 2016-01-13 2016-05-25 广西师范大学 一种提高海量数据查询性能的正交多哈希映射索引方法
CN107153707A (zh) * 2017-05-12 2017-09-12 华中科技大学 一种针对非易失内存的哈希表构建方法及系统
CN108021678A (zh) * 2017-12-07 2018-05-11 北京理工大学 一种结构紧凑的键值对存储结构及快速键值对查找方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WENWEN LI等: "Hash Tree Indexing for Fast SPARQL Query in Large Scale RDF Data Management Systems", 《ISWC 2017 POSTER(CCF B)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110275884A (zh) * 2019-05-31 2019-09-24 阿里巴巴集团控股有限公司 数据存储方法及节点
US11294875B2 (en) 2019-05-31 2022-04-05 Advanced New Technologies Co., Ltd. Data storage on tree nodes
CN110990426A (zh) * 2019-12-05 2020-04-10 桂林电子科技大学 一种基于树搜索的rdf查询方法
CN110990426B (zh) * 2019-12-05 2022-10-14 桂林电子科技大学 一种基于树搜索的rdf查询方法
CN111309979A (zh) * 2020-02-27 2020-06-19 桂林电子科技大学 一种基于邻居向量的RDF Top-k查询方法
CN111309979B (zh) * 2020-02-27 2022-08-05 桂林电子科技大学 一种基于邻居向量的RDF Top-k查询方法
CN111581215A (zh) * 2020-05-07 2020-08-25 钟士平 数组树数据储存方法、快速查找方法及可读储存介质

Similar Documents

Publication Publication Date Title
CN109684325A (zh) 一种高效的rdf数据存储查询系统
US10659467B1 (en) Distributed storage and distributed processing query statement reconstruction in accordance with a policy
US9171100B2 (en) MTree an XPath multi-axis structure threaded index
CN106663056B (zh) 文件系统中的元数据索引搜索
US8688723B2 (en) Methods and apparatus using range queries for multi-dimensional data in a database
JP3771271B2 (ja) コンパクト0完全木における順序付けられたキーの集まりの記憶と検索のための装置及び方法
US20070174309A1 (en) Mtreeini: intermediate nodes and indexes
KR101467589B1 (ko) 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체
EP1393206B1 (en) Data structure for information systems
Meimaris et al. Extended characteristic sets: graph indexing for SPARQL query optimization
JP5241738B2 (ja) 表からツリー構造データを構築する方法及び装置
CN108681603B (zh) 数据库中快速搜索树形结构数据的方法、存储介质
Ooi Spatial kd-tree: A data structure for geographic database
CN113590894B (zh) 一种动态高效的遥感影像元数据入库检索方法
Peng et al. Answering subgraph queries over massive disk resident graphs
JP5844824B2 (ja) Sparqlクエリ最適化方法
Georgiadis et al. Efficient rewriting algorithms for preference queries
Salehpour et al. A comparative analysis of knowledge graph query performance
KR100345277B1 (ko) Xml 문서의 논리적인 구조정보 추출기
CN115114464A (zh) 一种基于多哈希算法的电网图数据库存储方法
EP3995972A1 (en) Metadata processing method and apparatus, and computer-readable storage medium
JP5430436B2 (ja) 情報蓄積検索方法及び情報蓄積検索プログラム
WO2013172309A1 (ja) ルール発見システムと方法と装置並びにプログラム
Yang et al. Br-index: An indexing structure for subgraph matching in very large dynamic graphs
JP2020135530A (ja) データ管理装置、データ検索方法及びプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20190426