Neo4j

来自智得网
跳转至: 导航、​ 搜索

简介

Neo4j是著名的图数据库。

图数据库是图数据库管理系统的简称,使用图形化的模型进行查询的数据库,通过节点、边和属性等方式来表示和存储数据,支持增删改查(CRUD)等操作。

原理

存储引擎

Neo4j采用了免索引邻接的数据库引擎中,每个节点都会维护相邻节点的引用。每个节点都表现为其附近节点的微索引,通过这些微索引可以直接定位数据的位置信息。从而使得数据检索的时间复杂度从 O(log(n)) 优化到 O(1)

存储文件 内容 大小(B) 格式
neostore.nodestore.db 节点 15 inUse+nextRelId+nextPropId
  • inUse(1Byte):是否删除
  • nextRelId(4Byte): 下一个Relationsh ID
  • nextPropId(4Byte):下一个Property ID
neostore.relationshipstore.db 关系 34 inUse+firstNode+secondNode+relType+firstPrevRelId+fristNextRelId+

secondPrevRelId+secondNextRelId+nextPropId

  • inUse(1Byte):是否删除
  • firstNode(4Byte):起始节点
  • secondNode(4Byte):终止节点
  • relType(4Byte):关系类型
  • firstPrevRelId(4Byte) & firstNextRelId(4Byte):起始节点前一个和后一个关系的id
  • secondPrevRelId(4Byte) & secondNextRelId(4Byte):终止节点前一个和后一个关系的id
neostore.propertystore.db 节点或者关系的属性 41 inUse+propBlock+propBlock+propBlock+propBlock+nextPropId
  • inUse(1Byte):是否删除
  • propBlock(8Byte)*4:属性块,存储key或value或都存
  • nextPropId(4Byte):下一个属性ID
neostore.propertystore.db.strings 字符串属性的值 128
neostore.propertystore.db.arrays 数组属性的值 128
Indexed Property