一种基于集合的图数据存储模型及其图数据库的制作方法

文档序号:28594743发布日期:2022-01-22 10:06阅读:67来源:国知局
一种基于集合的图数据存储模型及其图数据库的制作方法

1.本发明属于图数据库技术领域,尤其是涉及一种基于集合的图数据存储模型及其图数据库。


背景技术:

2.图数据库是指以图这种数据结构存储和查询数据的数据库。其可以有效地反映数据与数据之间的关联,而通过发掘数据之间的内在关联可以发现内在的规律或模式,从而产生或发现有价值的信息。与其他数据库不同,关系在图数据库中占首要地位。这意味着应用程序不必使用外键来推断数据连接。图数据的特性决定了其具备其他较为简单数据结构所不具备的优势,如与关系数据库或其他nosql数据库相比,图数据库有着更高的性能、灵活性、敏捷性以及更好的可扩展性等特点。因此,近年来图计算与图存储逐渐成为了大数据处理的新的手段和发展热点。
3.数学上图的概念,可以定义为一个二元组:g=(n,e),其中n为顶点的集合,e为边的集合,边有方向的图称为有向图,边没有方向的图称为无向图。节点表示事物的实体,如一个人,一个网络拓扑节点或者一个城市。边表示事物实体之间的关系和联系,如社交网络中,两个人可以用图中的两个节点表示,两个人相互认识则在两个节点之间有一条边;城市交通网络中,两座城市可以是图中的两个节点,两个城市之间的距离可以用一条带权重的边表示等等。当使用图数据结构对以上的场景进行建模时,就可以利用图数据结构的性质和相关算法对图结构进行分析,从而得到图中各个节点之间的相互关系及其联系的规律。
4.图数据存储模型是图数据库系统的基础,如图1-图3所示,目前的图数据存储模型主要有两种结构:邻接链表和邻接矩阵,邻接链表将节点存储为记录或对象,每个节点都存储与其相邻的节点列表。这种结构具有很好的空间复杂度,在图中添加节点方便,但时间复杂度较高。查询图中的节点时,需要遍历邻接列表才能找到目标节点,这会对非目标节点造成额外的遍历。另一种数据结构是邻接矩阵,它是一个大小为n
×
n的二维数组,其中n是图中的顶点数,这种表示方法易于实现和查询,但在在顶点添加时会消耗大量的空间和时间复杂度。目前的图数据库系统主要采用这两种数据结构来存储图数据,例如,neo4j采用邻接链表,graphredi s采用邻接矩阵作为基本的图存储数据结构。由上述可知,两种结构对于图数据的存储要么存在空间无效性问题,要么存在时间无效性问题,无法兼顾空间效率和时间效率。
5.另外,这两种结构表达图的思路上,均是用较为简单的线性数据结构通过组合来表达更为复杂的图数据结构。这种表示与存储图数据的方式,没能反映出图数据在数学上的严格定义,在一定程度上割裂了图数据之间的相互关联性,因此基于这两种存储模型构建的图数据存储系统,也必然会受到这两种存储模型本身的局限性带来的制约,影响了系统的性能和相关查询算法的实现。


技术实现要素:

6.本方案针对现有图数据存储模型存在的割裂了图数据之间的关联,查询效率和空间效率不高的问题提出了一种基于集合的图数据存储模型及基于该图数据存储模型的图数据库。
7.为达到上述目的,本发明采用了下列技术方案:
8.一种基于集合的图数据存储模型,在本图数据存储模型中,图被划分为独立的节点集和独立的边集,且节点集和边集之间没有交集,节点集中的每个节点均具有唯一的节点地址和唯一的节点id,边集中的每个边均具有唯一的边地址和唯一的边id。
9.在上述的基于集合的图数据存储模型中,节点集和边集中的条目随机分布,通过唯一的内存偏移量对其进行定位与寻址。
10.在上述的基于集合的图数据存储模型中,通过分别向节点集和/或边集添加节点项和/或边项的方式向图中添加节点和/或边。
11.在上述的基于集合的图数据存储模型中,一对节点通过一条或多条边连接。
12.在上述的基于集合的图数据存储模型中,本图数据存储模型具有如下定义一:
13.s=(n,e,ψs,λs,t),其中:
14.s表示图数据存储模型的有向弱连接标记图;
15.n表示节点集;
16.e表示边集;
17.ψs表示从e到n∪n的关联函数;
18.t=tn∪te是一组标签,tn表示节点的标签,te表示边的标签;
19.λs是从tn∪te到t的标签函数;
20.不同的节点具有不同的标签;
21.在同一方向上连接同一个节点的两个边具有不同的标签。
22.一种基于上述图数据存储模型的图数据库,包括上述图数据存储模型。
23.在上述的图数据库中,本图数据库为具有所述定义一所描述模式的有向标记的图。
24.在上述的图数据库中,所述的图数据库具有如下定义二:
25.g=(n,e,ψ,λ,v),其中:
26.g表示图数据库的标记图;
27.n表示节点集,e表示边集;
28.ψ是从e到n
×
n的关联函数;
29.v是一个标签集合;
30.λ是一个从n∪e映射到v的标签函数;
31.τ为对于一个在g中的节点n,和在s中的节点n

,n的标签存在于n

的标签域之中;λ(n)∈dom(λs(τ(n

))),τ(n

)表示节点n

的标签;
32.τ为对于每一条在图g中的,从节点n到节点n

的边e,以及在图s中的每一条从τ(n)到τ(n

)的边e来说,在g中的边e的标签存在于在s的边e的标签域中:
33.ψs(τ(e))=(τ(n),τ(n

))andλ(e)∈dom((λs(τ(e)));
34.τ(n)、τ(n

)、τ(e)分别表示节点n的标签,节点n

的标签和边e的标签。
35.本发明的优点在于:
36.1、该模型能够严格反映图数据的数学定义,有效地保存数据之间的关系,与现有的最新图数据存储模型相比具有更好的时空效率;
37.2、在深刻理解图数是节点集到边集的二元映射的基础之上,提出了基于集合的图数据存储模型,该模型与传统的基于邻接矩阵和邻接链表的图数据存储模型有着本质的不同和全新的视角,并且与持久内存介质存在着天然的良好的匹配性;
38.3、基于该存储模型,可以方便地实现节点集和边集的分治存储,为在持久内存上设计与实现图数据库系统提供了良好的存储模型。
附图说明
39.图1为原生图;
40.图2为邻接矩阵结构的模型图;
41.图3为邻接链表结构的模型图;
42.图4为本发明基于持久内存的图数据库系统中基于集合的图数据存储模型图;
43.图5为本发明基于持久内存的图数据库系统图数据的逻辑状态示意图;
44.图6为本发明基于持久内存的图数据库系统图数据的物理状态示意图。
具体实施方式
45.下面结合附图和具体实施方式对本发明做进一步详细的说明。
46.如图4所示,本实施例公开的一种基于集合的图数据存储模型重新思考了图g=(n,e)的数学定义,将图数据抽象为一个独立的节点集和一个独立的边集,且节点集和边集之间没有交集,具体定义如下:
47.s=(n,e,ψs,λs,t),其中:
48.s表示图数据存储模型的弱连接标记图;
49.n表示节点集;
50.e表示边集;
51.ψs表示从es到ns∪ns的关联函数;
52.t=tn∪te是一组标签,tn表示节点的标签,te表示边的标签;
53.λs是从tn∪te到t的标签函数;
54.不同的节点具有不同的标签;
55.在同一方向上连接同一个节点的两个边具有不同的标签,即ψe=ψ
′e∩e≠e
′→
λs(e)≠λs(e

)。
56.节点集中的每个节点均具有一个唯一的节点地址和节点id,边集中的每个边均具有唯一的边地址和边id,即给定一个集合和一个元素,一对节点通过一条或多条边连接,当向图中添加节点或边时,分别向节点集和/或边集添加节点项和/或边项的方式向图中添加节点和/或边即可。该元素是否属于集合是确定的,同时集合中的任何两个元素都被认为是不同的,能够保证集合中不同元素分布在内存中不同地址,因此可以通过唯一的64位地址确定与分配一个元素。
57.另外,节点集和边集中的条目随机分布,通过唯一的内存偏移量对其进行定位与
寻址,即,在一个集合中,每个元素都具有相等的状态,并且元素可以无序分布。
58.以上提出了一种能够严格反映图数据数学定义的存储模型,本实施例基于以上模型构建图数据库,图数据库具有定义一所描述模式的有向标记的图,且具有如下定义二:
59.g=(n,e,ψ,λ,v),其中:
60.g表示图数据库的标记图;
61.n表示节点的集合,即节点集,e表示边的集合,即边集;
62.ψ是从e到n
×
n的关联函数;
63.v是一个标签集合;
64.λ是一个从n∪e映射到v的标签函数;这样就存在一个从一个节点到一条边的映射函数:
65.τ为对于一个在g中的节点n,和在s中的节点n

,n的标签存在于n

的标签域之中;λ(n)∈dom(λs(τ(n

))),τ(n

)表示节点n

的标签;
66.τ为对于每一条在图g中的,从节点n到节点n

的边e,以及在图s中的每一条从τ(n)到τ(n

)的边e来说,在g中的边e的标签存在于在s的边e的标签域中:
67.ψs(τ(e))=(τ(n),τ(n

))andλ(e)∈dom((λs(τ(e)));
68.τ(n)、τ(n

)、τ(e)分别表示节点n的标签,节点n

的标签和边e的标签。
69.从前述可知,本方案基于集合的存储模型具有确定性、互异性和无序性,因此具有与持久内存非常自然且良好的匹配特性。
70.投入使用时,基于上述模型,可以在持久内存中设置如下的的布局架构:
71.super blocknode setedge setproperty zone
72.super block(超级块)包含了node set(节点集),edge set(边集)、property zone(属性集)的起始地址、结束地址和分配给持久内存空间的魔数和总大小。优选配备活跃超级块和备份超级块两个超级块的副本。
73.节点集中节点项数据结构如下:
74.node idnext edgenode labelproperty list
75.节点集包括图数据库的所有节点实体,节点集中的每个节点条目均在图数据库中显示一个节点。node id是节点id,每个节点具有唯一的id;next edge存储指向连接到当前节点的第一条边的引用指引;node label表示节点的标签,在创建节点时初始化,它存储一个32字节的字符串格式,以显示用于从某个域筛选节点的节点类型;property li st表示相应节点的相关属性。本实施例中每个节点条目的固定大小为128字节,其中node id占8个字节,next edge占8个字节,node label占32个字节,property li st占80个字节。
76.边集中边集项的数据结构如下:
[0077][0078]
边集包括图数据库的所有边实体,每个边条目均在图数据库中表示一条边。每条边的数据结构包括九个字段,其中:
[0079]
edge id是边id,每条边具有一个唯一的id;
[0080]
firstnode是指向此边的头节点的指针;
[0081]
secondnode是指向此边的尾节点的指针;如果没有与此边关联的节点,则这两个字段仅指示创建此边时首先显示的节点。
[0082]
first previousedge和first nextedge分别是指向连接到此firstnode的上一条边和下一条边的指针;
[0083]
second previousedge和second nextedge分别是指向连接到此secondnode的上一条边和下一条边的指针;边的指针链接允许直接访问下一个边的实体。
[0084]
edge label表示边的标签,使用方式与节点相同;
[0085]
property li st表示相应边的相关属性。
[0086]
本实施例每个边条目固定大小为192个字节,edgeid、firstnode、second node、firstnextedge、firstpreviousedge、secondnextedge、secondpreviousedge分别占8个字节,node label占32个字节,propertyli st占104个字节。
[0087]
进一步地,节点与边的属性项采用键值对结构如下表所示,键的大小在这里固定为8字节,值的大小最大支持255字节:
[0088]
property keyproperty value
[0089]
property key表示键,property value表示值。
[0090]
如图5和图6所示分别为一个示例的图数据的逻辑状态图和物理状态图,这里只给出了节点集和边集的状态,不考虑属性区域的状态。从前述的逻辑状态图和物理状态图能够看出本方案将数据与数据之间的关联关系完整、真实地保存了下来,解决了目前图数据存储模型存在的割裂了图数据之间的关联导致查询效率和空间效率不高的问题。另外,可以看到数据在逻辑上是按顺序分布的,而在物理上是不按顺序分布的,本方案采用只能通过唯一的存储地址或偏移量来随机存取的nvm恰好迎合了前述特征,能够实现存储介质与图数据库之间的良好匹配。
[0091]
本方案提供的基于集合的图数据存储模型能够严格地反应图数据的数学定义,有效地保存图数据之间的关系,与现有图数据存储模型相比,具有更好地时间和空间效率。并能够实现与持久内存介质特性良好的匹配性,为在持久内存上设计与实现图数据库打下基础。
[0092]
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
[0093]
尽管本文较多地使用了图数据存储模型、图数据库、节点集、边集等术语,但并不排除使用其它术语的可能性。使用这些术语仅仅是为了更方便地描述和解释本发明的本质;把它们解释成任何一种附加的限制都是与本发明精神相违背的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1