What is the difference between a Graph Database (e.g. Neo4J) and a Network Database (e.g. IDS, CODASYL)? In principle are they the same thing?
3 回答
从Martin Kleppmann的 Designing Data-Intensive Applications 一书中复制。
在网络模型中,数据库有一个模式来指定哪种记录类型可以嵌套在哪种其他记录类型中。在图数据库中,没有这样的限制:任何顶点都可以与任何其他顶点有边。这为应用程序提供了更大的灵活性,以适应不断变化的需求。
在网络模型中,到达特定记录的唯一方法是遍历其中一条访问路径。在图数据库中,您可以通过其唯一 ID 直接引用任何顶点,也可以使用索引来查找具有特定值的顶点。
在网络模型中,记录的子项是一个有序集,因此数据库必须保持这种顺序(这会对存储布局产生影响),将新记录插入数据库的应用程序必须担心新记录的位置这些集合中的记录。在图数据库中,顶点和边是没有顺序的(您只能在进行查询时对结果进行排序)。
在网络模型中,所有查询都是命令式的,难以编写并且很容易被模式的更改破坏。在图数据库中,如果您愿意,可以用命令式代码编写遍历,但大多数图数据库还支持高级的声明式查询语言,例如 Cypher 或 SPARQL。
首先,让我们正确地问问题。图数据库有两种类型:RD Graph(标准)和 Property Graph(非标准)。Neo4J 是一个属性数据库,而不是“标准”RDF 图。
然后,如果您阅读上面 Sumit Sethia 的答案,您将在网络模型和 Graph DB 之间的关系方面得到正确答案(默认情况下应该理解为 RDF 图)。
将关系视为开发时间线会有所帮助,下一步将“改进”上一步。然后它将首先是分层数据库,然后是网络模型,然后是图形,然后是属性图。顺便说一句,这并不“严格”。