一种支持非结构化数据存储与查询的图数据库管理系统技术方案

技术编号:20797137 阅读:20 留言:0更新日期:2019-04-06 10:44
本发明专利技术公开一种支持非结构化数据存储与查询的图数据库管理系统,包括:一基于Neo4j图数据库的带标签的Neo4j属性图模型,用于存储结构化数据和BLOB的非内容的属性信息,还存储分配BLOB的唯一ID;一支持BLOB类型的BLOB数据存储模型,包括抽象存储模型和具体存储模型,用于存储BLOB的内容,并维护BLOB的ID与BLOB的属性信息之间的映射关系;一查询模块,用于查询所存储的结构化数据和BLOB类型数据。本系统能够存储结构化数据和将非结构化数据存储为BLOB类型,并实现该两种数据的查询。

A Graphic Database Management System Supporting Unstructured Data Storage and Query

The invention discloses a graph database management system supporting unstructured data storage and query, which includes: a tagged Neo4j attribute graph model based on Neo4j graph database for storing structured data and non-content attribute information of BLOB, and storing the unique ID of allocated BLOB; and a BLOB data storage model supporting BLOB type, including abstract storage model and specific storage model. Type B is used to store the content of BLOB and maintain the mapping relationship between the ID of BLOB and the attribute information of BLOB. A query module is used to query the stored structured data and BLOB type data. This system can store structured data and unstructured data as BLOB type, and realize the query of these two kinds of data.

【技术实现步骤摘要】
一种支持非结构化数据存储与查询的图数据库管理系统
本专利技术涉及大数据、数据库、分布式系统
,提出一种支持非结构化数据存储与查询的图数据库管理系统。
技术介绍
一般情况下,使用传统的关系型数据库来存储可以表现为二维形式的结构化数据,而结构化数据的存储和查询相关的技术非常成熟。但是随着数据时代的发展,数据的形式越来越复杂。在实际应用之中,出现了许多有自描述结构的半结构化数据和没有固定结构的非结构化数据,毫无疑问,这种数据的扩展性非常好,可以自由表达许多有用的信息。但是因为其格式上的自由性,如何存储和管理这种数据成为一个难以解决的问题,传统的关系型数据库系统主要面向事物处理和数据分析应用领域,无法很好实现对海量的半结构化和结构化数据的存储和管理,而NoSQL,尤其是Neo4j等图数据库(GraphDatabase)技术的提出,为高效解决非结构化数据的管理和处理问题提供了新的思路。图数据库源起于欧拉和图理论,也可称为面向/基于图的数据库,它的数据模型以节点和关系来体现,也可以将信息作为节点的属性存储,支持实体间关系的快速查询。随着数据来源的增加,数据的种类变得更加丰富,现在新产生的数据中,有超过85%都是非结构化数据,但当前的大数据应用对非结构化处理的能力还比较弱(http://www.cio.com.cn/eyan/2295.html)。通常在存储非结构化数据时,都将其存储为二进制大对象(BLOB:BinaryLargeObject)。虽然如此,但是在传统关系型数据库中存储BLOB对象仍然有诸如效率低下,检索不便等许多不便之处。此外,在很多应用场景下,对于复杂关系查询的需求较大,在线系统对时间比较敏感。图数据库的最大优势就在于快速解决复杂的关系问题。但是图数据库,如目前非常流行的Neo4j,所使用的是属性图模型,这种模型的一个缺陷是原生不支持BLOB对象的存储,因此将图数据库和BLOB存储结合起来,实现对BLOB数据以及其它类型数据的统一管理和查询,显得尤其重要。
技术实现思路
本专利技术的目的在于提供一种支持非结构化数据存储与查询的图数据库管理系统,能够存储结构化数据和将非结构化数据存储为BLOB类型,并实现该两种数据的查询。为达到上述目的,本专利技术采用如下技术方案:一基于Neo4j图数据库的带标签的Neo4j属性图模型,用于存储结构化数据和BLOB的非内容的属性信息,该结构化数据包括文本型、布尔型、数值型、时间型,该BLOB的非内容的属性信息包括BLOB类型数据的长度、Mime类型和128位的摘要,还存储分配BLOB的唯一ID;一支持BLOB类型的BLOB数据存储模型,包括一抽象存储模型和一具体存储模型;该抽象存储模型以本地文件系统或ceph分布式文件系统实现,用于存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;该具体存储模型以本地文件系统实现,通过文件存储方式存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;一查询模块,用于查询所存储的结构化数据和BLOB类型数据。进一步地,还包括一数据类型辨别模块,用于判断接收的数据类型,若该数据为结构化数据,则存储于Neo4j属性图模型中;若该数据为BLOB类型数据,则将BLOB对应的ID和BLOB的非内容的属性信息存储于Neo4j属性图模型中,将BLOB的内容存储于BLOB数据存储模型中。进一步地,还包括一BLOB属性信息提取模块,用于从数据文本中提取BLOB的属性信息。进一步地,所述查询模块运行Cypher语言。一种支持非结构化数据存储与查询的图数据库管理系统的构建方法,步骤包括:将基于Neo4j图数据库的带标签的属性图模型作为Neo4j属性图模型;基于Neo4j图数据库的带标签的属性图模型,修改Neo4j的原代码,通过getRecord()方法和setRecord()方法来获取值和设定值;在Neo4j的原代码的PropertyType中增加BLOB类型的支持,实现读值和创建BLOB数据存储模型等操作;创建支持使用Cypher进行查询的查询模块。进一步地,所述在Neo4j的原代码的PropertyType中增加BLOB类型的支持的步骤包括:在getPropertyTypeOrNull()方法中增加对BLOB类型的支持,使得调用该方法时可以返回BLOB类型;在registerScalarsAndCollections()方法中增加BLOB类型的注册,将Java中的类注入到Neo4j中。一种支持非结构化数据存储与查询的图数据库管理系统的存储方法,步骤包括:判断接收的数据是结构化数据还是非结构化数据;若为结构化数据,则存储于Neo4j属性图模型中;若为非结构化数据,提取BLOB的属性信息,并为每个BLOB分配一唯一ID;将BLOB对应的ID和BLOB的内容存储于BLOB数据存储模型中,将BLOB的非内容的属性信息存储于Neo4j属性图模型中;通过ID读取BLOB的内容。进一步地,存储BLOB的内容的步骤包括:在指定的目录下创建新文件,利用输出文件流的方式将BLOB的内容写进该新文件,并以.bid格式保存;在指定的目录下创建另一新文件,将BLOB摘要的md5值写入该另一新文件,并以.md5格式保存。进一步地,读取BLOB的内容的步骤包括:将BLOB的bid作为参数,在指定的目录下寻找对应的文件,通过fromFile()方法读取该文件的内容并返回。一种支持非结构化数据存储与查询的图数据库管理系统的BLOB的属性信息创建方法,步骤包括:从文件中读取BLOB的字节数组内容,作为BLOB的内容;从文件中读取BLOB的字节数组的长度,作为BLOB的长度;采用DigestUtils.getMd5Digest从文件中读取BLOB的内容摘要,作为BLOB的摘要;从文件中读取BLOB内容的前8个字节内容的编码,作为BLOB的32位标志值;通过IdGenerator方法生成BLOB的唯一ID。本系统于开源的Neo4j图数据库,在属性图模型的基础上,增加了BLOB存储的相关功能,实现了图数据库与二进制大对象的结合,既支持存储BLOB类型的大数据,又可以充分发挥图数据库在处理关系问题方面的优势,因而支持多种类型的数据,除了Neo4j的属性图模型所支持的文本型、布尔型、数值型、时间型,还支持BLOB类型。本系统将BLOB的除内容以外的属性信息存在Neo4j中,而将体量较大的内容信息存在外挂的后端存储系统中。本专利技术定义并实现了BLOB的读写操作,即如何从文件创建BLOB属性值,如何从给定文件读取并建立BLOB对象;丰富了BLOB对象的自有属性和相关操作,并且实现了根据BLOB的内容获取包括摘要(digest)、长度(length)以及一个8byte的标志等属性值的方法,同时也实现了每个BLOB对象分配唯一ID的办法;提供了对BLOB相关内容查询的支持,基于Cypher查询语言,通过提供BLOB属性值的操作函数,从而支持对BLOB属性值的匹配,可以将其他属性值及关联关系作为限定条件对结果进行筛选。本专利技术的有益效果在于:有机地将图数据库技术和BLOB存储整合在一起,可以用于结构化数据和非结构化数据的混合存储及查询,相比于旧有的大数据融合管理工具,加强本文档来自技高网
...

【技术保护点】
1.一种支持非结构化数据存储与查询的图数据库管理系统,包括:一基于Neo4j图数据库的带标签的Neo4j属性图模型,用于存储结构化数据和BLOB的非内容的属性信息,该结构化数据包括文本型、布尔型、数值型、时间型,该BLOB的非内容的属性信息包括BLOB类型数据的长度、Mime类型和128位的摘要,还存储分配BLOB的唯一ID;一支持BLOB类型的BLOB数据存储模型,包括一抽象存储模型和一具体存储模型;该抽象存储模型以本地文件系统或ceph分布式文件系统实现,用于存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;该具体存储模型以本地文件系统实现,通过文件存储方式存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;一查询模块,用于查询所存储的结构化数据和BLOB类型数据。

【技术特征摘要】
1.一种支持非结构化数据存储与查询的图数据库管理系统,包括:一基于Neo4j图数据库的带标签的Neo4j属性图模型,用于存储结构化数据和BLOB的非内容的属性信息,该结构化数据包括文本型、布尔型、数值型、时间型,该BLOB的非内容的属性信息包括BLOB类型数据的长度、Mime类型和128位的摘要,还存储分配BLOB的唯一ID;一支持BLOB类型的BLOB数据存储模型,包括一抽象存储模型和一具体存储模型;该抽象存储模型以本地文件系统或ceph分布式文件系统实现,用于存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;该具体存储模型以本地文件系统实现,通过文件存储方式存储BLOB的内容,并通过BLOB的ID与BLOB的属性信息实现映射;一查询模块,用于查询所存储的结构化数据和BLOB类型数据。2.如权利要求1所述的一种支持非结构化数据存储与查询的图数据库管理系统,其特征在于,还包括一数据类型辨别模块,用于判断接收的数据类型,若该数据为结构化数据,则存储于Neo4j属性图模型中;若该数据为BLOB类型数据,则将BLOB对应的ID和BLOB的非内容的属性信息存储于Neo4j属性图模型中,将BLOB的内容存储于BLOB数据存储模型中。3.如权利要求1所述的一种支持非结构化数据存储与查询的图数据库管理系统,其特征在于,还包括一BLOB属性信息提取模块,用于从数据文本中提取BLOB的属性信息。4.如权利要求1所述的一种支持非结构化数据存储与查询的图数据库管理系统,其特征在于,所述查询模块运行Cypher语言。5.一种支持非结构化数据存储与查询的图数据库管理系统的构建方法,步骤包括:将基于Neo4j图数据库的带标签的属性图模型作为Neo4j属性图模型;基于Neo4j图数据库的带标签的属性图模型,修改Neo4j的原代码,通过getRecord()方法和setRecord()方法来获取值和设定值;在Neo4j的原代码的PropertyType中增加BLOB类型的支持,实现读值和返回所加锁数目...

【专利技术属性】
技术研发人员:沈志宏周园春赵子豪
申请(专利权)人:中国科学院计算机网络信息中心
类型:发明
国别省市:北京,11

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

1