1、#,数据库原理及应用,电子科技大学,-,张凤荔,数据库系统原理与开发,7.5,图形数据库,Neo4j,的图存储结构,图形数据库的集群结构,【,本节学习目标,】,一,、,Neo4J,数据库的存储结构,1,核心概念,(,1,),Nodes,(节点,类似地铁图里的一个地铁站),:,图的基本单位节点和关系,都可包含属性,关系和节点还可以有零到多个标签。,(,2,),Relationships,(关系,类似两个相邻地铁站之间路线),:,组织和连接节点,一个开始节点和一个结束节点。关系有方向进和出。,(,3,),Properties,(属性,类似地铁站的名字,位置,大小,进出口数量等),:,节点和关系可以
2、拥有,0,到多个属性,属性类型,java,的数据类型一致,分为数值、字符串、布尔、以及其他的一些类型,字段名必须是字符串。,1,核心概念,-,(,4,),Labels,(标签,类似地铁站的属于哪个区),:,标签通过形容一种角色或者给节点加上一种类型,一个节点可有多个类型,标签在给属性建立索引或者约束时候也会用到。,(,5,),Traversal,(遍历,类似看地图找路径),:,查询是遍历图谱然后找到路径,一个开始节点,遍历相关路径上的节点和关系,得到最终的结果。,(,6,),Paths,(路径,类似从一个地铁站到另一个地铁站的所有的到达路径),:,路径是一个或多个节点通过关系连接起来的产物,1
3、,、核心概念,(,7,),Schema,(模式,类似存储数据的结构),:neo4j,是一个无模式或,less,模式的图谱数据库,使用它不需要定义任何,schema,,,(,8,),Indexes,(索引),:,遍历图通过需要大量的随机读写,在字段属性上构建索引,构建索引是一个异步请求,在后台创建直至成功后,才能生效。,(,9,),Constraints,(约束),:,约束定义在某个字段上,限制字段值唯一,创建约束会自动创建索引。,2,、存储结构,Node,和,Relationship,的,Property,是用一个,Key-Value,的双向列表来保存的;,Node,的,Relatsionsh
4、ip,是用一个双向列表来保存的,通过关系,可以的找到关系的前导和后继节点(,from-to Node,),.,Node,节点保存第,1,个属性和第,1,个关系,ID,。图的存储结构包括,5,类文件,2,、存储结构,(,1,)存储,node,的文件,存储节点数据、节点,label,及其序列,Id,包括存储节点数组、数组的下标即是该节点的,ID,、最大的,ID,及已经,free,的,ID,。,(,2,)存储,relationship,的文件:存储关系数据、关系组数据、关系类型、关系类型数组数据、关系类型的名称及其序列,Id,包括存储关系,record,数组数据、关系,group,数组数据、储关系类
5、型数组数据、关系类型,token,数组数据 和,ID,。,2,、存储结构,(,3,)存储,label,的文件:,label token,数据、名字数据及其序列,Id,包括存储,lable token,数组数据、,label token,的,names,数据 和,ID,。,(,4,)存储,property,的文件:属性数据、类型、索引等及其序列,Id,包括,property,数据、,property(key-value,结构,),的是数组的数据、,property(key-value,结构,),的值是字符串的数据、,property(key-value,结构,),的,key,的索引数、,prop
6、erty(key-value,结构,),的,key,的字符串值和,ID,。,(,5,)其他的文件,:,版本信息、日志等,2,、存储结构,neo4j,主要有节点、属性、关系等文件是以数组作为核心存储结构;,同时对节点、属性、关系等类型的每个数据项都会分配一个唯一的,ID,,在存储时以该,ID,为数组的下标。,在访问时通过其,ID,作为下标,实现快速定位。,所以在图遍历等操作时,可以实现,free-index,。,二、图数据库的集群结构,1,集群方式,Neo4j,主要有两种,cluster,方式:,Ha,(,High avaiable,)和,Causal cluster,方式。集群的主要特点:高吞
7、吐量,持续可靠性,灾难恢复。,Causal cluster:1,)核心服务器,(core server),,处理读写的操作,大多数的核心服务器主要处理写操作和,2,)一个或多个读复制服务器,(read replicas),,只读的实例,数据从核心服务器异步更新,这些适用于广泛的数据地理分布,并允许跨大量服务器扩展查询工作负载。,HA cluster:,至少有三台服服务器组成,,1,主,2,从,主服务器完成写入之后同步数据到从服务器,主服务器既可以写也能读,从服务器只能读。,HA,群集可用于全天候正常运行并提高读取性能。,1,集群方式,3,个节点,在这里以,3,个节点的,Neo4j,组成集群为例
8、子,讨论其体系结构和数据的操作原理。,图展示了由三个,Neo4J,结点所组成的,Master-Slave,集群。每个集群都包含一个,Master,和多个,Slave,。,Master,负责数据的写入,接下来,Slave,则会将,Master,中的数据更改同步到自身。,2,集群写入方式,集群数据的写入通过,Master,完成,图数据修改的复杂性,(,修改图结点本身、维护各个关系等),图所进行的操作是读比写多很多。,Neo4J,内部还有一个写队列,暂时缓存向,Neo4J,实例的写入操作,从而使得,Neo4J,能够处理突然到来的大量写入操作。,在最坏的情况就是,Neo4J,集群需要面对持续的大量的写
9、入操作。需要考虑,Neo4J,集群的纵向扩展了,3,集群读入方式,数据的读取可以通过集群中的任意一个,Neo4J,实例来完成。,Neo4J,内部使用一个缓存记录最近所访问的数据。这些缓存数据会保存在内存中以便快速地响应数据读取请求。在请求量非常巨大而且所访,Neo4J,所提供的解决方案被称为,Cache-based Sharding,。使用同一个,Neo4J,实例来响应一个用户所发送的所有需求。,4,集群管理方式,Cluster Management,则用来负责同步集群中各个实例的状态,并监控其它,Neo4J,结点的加入和离开。负责维护领导选举结果的一致性。,启动时,一个,Neo4J,数据库实
10、例将首先尝试着加入由配置文件所标明的集群。如果该集群存在,那么它将作为一个,Slave,加入。否则该集群将被创建,并且其将被作为该集群的,Master,。,5,集群容错机制,集群中一个实例失效了,其它实例会在短时间内探测到,恢复到正常状态将数据同步到最新。,Master,失效通过内置的,Leader,选举功能选举出新的,Master,。,在,Cluster Management,组成的帮助下,可以创建一个,Global Cluster,。其拥有一个,Master Cluster,以及多个,Slave Cluster,。数据的写入通常都是在,Master Cluster,中进行,而,Slave Cluster,将只负责提供数据读取服务。,本节学习结束!,
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100