CN109684325A - 一种高效的rdf数据存储查询系统 - Google Patents
一种高效的rdf数据存储查询系统 Download PDFInfo
- 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
Links
- 238000013500 data storage Methods 0.000 title description 5
- 230000003068 static effect Effects 0.000 claims abstract description 7
- 239000002131 composite material Substances 0.000 claims abstract description 5
- 238000003780 insertion Methods 0.000 claims description 8
- 230000037431 insertion Effects 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 4
- 230000037430 deletion Effects 0.000 claims description 4
- 241001269238 Data Species 0.000 abstract description 2
- 101150060512 SPATA6 gene Proteins 0.000 description 68
- 239000010410 layer Substances 0.000 description 22
- 238000010586 diagram Methods 0.000 description 11
- 238000000034 method Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 4
- 238000002474 experimental method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000002498 deadly effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000035800 maturation Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000002344 surface layer Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种高效的RDF数据存储查询系统,所述系统采用哈希表和哈希树的复合索引结构,用于存储RDF数据;所述复合索引结构包括:作为第一层的哈希表的哈希层、以及作为第二层的哈希树的树层;所述哈希层为静态哈希表,所述树层为动态的哈希树,提高了查询效率;在第一层中,构造长度为m的静态哈希表;在第二层中,基于素数序列动态地构建哈希树;所述系统还利用哈希树解决哈希表中的冲突问题。本发明通过设计的数据存储查询系统提高了RDF存储效率和SPARQL的查询效率,满足了实际应用中的多种需要。
Description
技术领域
本发明涉及索引和存储结构领域,尤其涉及一种高效的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数据存储查询系统,其特征在于,所述系统在执行删除操作时,包括:
如果找到需要删除的对象,直接将该对象置为空;
如果未找到拟删除的对象,则返回删除失败。
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)
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)
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 | 北京理工大学 | 一种结构紧凑的键值对存储结构及快速键值对查找方法 |
-
2018
- 2018-11-07 CN CN201811320234.9A patent/CN109684325A/zh active Pending
Patent Citations (5)
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)
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)
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 |