Neo4j底层存储结构

免索引邻接是图数据库实现高效遍历的关键,那么免索引邻接的实现机制就是Neo4j底层存储结构设计的关键。

从宏观角度来说,Neo4j仅仅只有两种数据类型:
(1)节点(Node):节点类似于E-R图中的实体(Entity)。每一个实体可以有零个或多个属性,这些属性以key-value对的形式存在。属性没有特殊的类别要求,同时每个节点还具有相应的标签,用来区分不同类型的节点。
(2)关系(Relationship):关系也类似于E-R图中的关系(Relationship)。一个关系有起始节点和终止节点。另外,与节点一样,关系也能够有自己的属性和标签。

节点和关系分别采用固定长度存储,节点9字节,关系33字节。数据库可以根据ID直接计算记录的位置,其成本仅为O(1)。

节点存储文件用来存储节点的记录,文件名为neostore.nodestore.db。
格式为:Node:inUse+nextRelId+nextPropId

  • inUse:1表示该节点被正常使用,0表示该节点被删除。
  • nextRelId:该节点的下一个关系ID。
  • nextPropId:该节点的下一个属性ID。

关系存储文件用来存储关系的记录,文件名为neostore.relationshipstore.db。
格式为Relationship:inUse+firstNode+secondNode+relType+firstPrevRelId
+firstNextRelId+secondPrevRelId+secondNextRelId+nextPropId。

  • inUse,nextPropId:作用同上。
  • firstNode:当前关系的起始节点。
  • secondNode:当前关系的终止节点。
  • relType:关系的类型。
  • firstPrevRelId & firstNextRelId:起始节点的前一个和后一个关系的ID。
  • secondPrevRelId & secondNextRelId:终止节点的前一个和后一个关系的ID。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值