数据如何存储在图表数据库中?

时间:2018-02-14 00:08:41

标签: database graph neo4j cypher graph-databases

我刚刚学习了图形数据库而不是关系数据库(RDBMS)。我浏览了neo4j网站上的一些资源,并阅读了关于图形数据库的Oreilly Book中的一些章节。但是,我无法理解图形数据库如何实际存储其数据?

如果我必须在RDBMS中存储图形,我会为顶点和节点创建不同的列表。图数据库有何不同之处?我真的很难在脑海中想象如何neo4j将其数据(节点和顶点)存储并链接到传统的RDBMS。

如果有人可以帮助我理解和观察图形数据库内部如何工作,那么我真的很感激。如果你不太明白我的问题,我很乐意更具体地解释它。

1 个答案:

答案 0 :(得分:4)

您的答案是O’Reilly’s Graph Databases关于图形数据库内部的书的第6章。本章介绍Neo4j如何在内部工作,包括原生图存储如何工作。

Neo4j在分离的文件中存储节点,关系,标签和属性。

节点存储在文件neostore.nodestore.db中。每个新创建的节点都有一个固定大小的文件。对于添加到数据库的每个节点,此文件增加9个字节。这样,可以在文件的900字节中容易地找到具有id 100的节点(每个节点100×9字节= 900字节)。节点记录具有指向第一个节点关系,第一个节点属性和节点标签的指针。

关系存储在文件neotore.relationshipstore.db中。这也是一个固定大小的文件。每个关系都有指向开始和结束节点的指针,关系类型(在neostore.relationshiptypestore.db文件中),每个开始和结束节点的下一个和上一个关系记录,以及一个标志,指示关系是否是第一个关系链。

节点和关系的属性存储在文件neostore.propertystore.db中。每个属性记录都有一个指向下一个属性的指针,最多可以包含4个属性。每个属性都有一个指向属性名称(neostore.propertystore.db.index文件)的指针,属性类型。属性值可以是内联值,也可以是指向大字符串(neostore.propertystore.db.strings)和数组(neostore.propertystore.db.arrays file)的动态文件的指针。