我刚刚了解了图形数据库,而不是关系数据库 (RDBMS)。我浏览了 neo4j 网站上的一些资源,并阅读了 Oreilly Book on Graph Databases 中的一些章节。但是我无法理解图形数据库实际上如何存储其数据?
如果我必须在 RDBMS 中存储图形,我将为顶点和节点创建不同的列表。图数据库有何不同?我真的很难在脑海中想象如何neo4j 存储和链接其数据(节点和顶点)的方式与传统 RDBMS 不同。
如果有人可以帮助我理解和可视化图形数据库内部的工作原理,我将非常感激。如果您不太明白我的问题,我很乐意更具体地解释。
最佳答案
您的答案是 O’Reilly’s Graph Databases 的第 6 章关于图数据库内部原理的书。本章介绍 Neo4j 内部如何工作,包括 native 图形存储如何工作。
Neo4j 将节点、关系、标签和属性存储在单独的文件中。
节点存储在文件 neostore.nodestore.db
中。该文件对于每个新创建的节点都有固定的大小。对于添加到数据库的每个节点,该文件都会增加 9 个字节。这样,可以在文件的 900 字节中轻松找到 id 为 100 的节点(每个节点 id 100 x 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
),属性值可以是内联值或指向动态文件的指针。
关于database - 数据如何存储在图数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48777704/