database - 数据如何存储在图数据库中?

标签 database graph neo4j cypher graph-databases

我刚刚了解了图形数据库,而不是关系数据库 (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/

相关文章:

mysql - mysql 数据库中的数据格式不正确

c# - 如何防止重复插入我出勤日期的数据

c - 图是否连通!福特富尔克森的C语言

scala - 来自 Java 的 Neo4j 嵌入式在线备份

neo4j - 如何强制 Neo4j 使用 2 个索引?

mysql - 为什么即使我从另一台服务器复制该表的所有文件,数据库表也没有更新?

android - 我应该使用数组还是数据库

javascript - 无法使用ajax加载c3图形数据

c++ - 图可排序性 C++

Neo4j/密码 : sort results based on a sorted collection