Neo4j如何在内部存储数据?

时间:2014-06-23 12:34:53

标签: data-structures neo4j

我的问题是从开发人员的角度来看(不是特别尊重用户),可能有点凌乱。 我想知道节点和关系的结构如何在逻辑上存储在数据库中。就像,当我说我有bla bla信息时。哪里? - 然后答案是,在BOOK中,以网格形式或页面上的线条。在RDBMS的情况下,数据以网格/表格格式存储。但我无法理解图形如何存储在Neo4j / graph数据库中。 我正在使用neo4j客户端2.1.2。

1 个答案:

答案 0 :(得分:11)

http://www.slideshare.net/thobe/an-overview-of-neo4j-internals有点过时,但这可以让您对Neo4j逻辑表示有一个很好的概述。

节点引用:

  • 它的第一个标签(我的猜测是标签存储为单链表)
  • 其第一个属性(属性被组织为单链表)
  • 其开始/结束关系

关系被组织为双重链接列表。 关系指向:

  • 第一个属性(与节点相同)
  • 其起始节点的前任和后继关系
  • 其结束节点的前任和后继关系

由于这种链接结构,遍历的概念(即查询数据的方式)很容易出现。这就是像Neo4j这样的图形数据库擅长遍历图形结构数据的原因。

我的粗略猜测也是,因为Neo4j版本2.1(和its newly introduced dense node management),节点的关系按类型隔离。通过这样做,如果节点N例如是类型A的5个关系的起始节点和类型B的5百万个rel,则针对N遍历类型A的rel仍然是O(n = 5)。