图数据库(例如Neo4J)和网络数据库(例如IDS、CODASYL)有何区别?原则上它们是相同的吗?
从Martin Kleppmann的书《Designing Data-Intensive Applications》中复制。
在网络模型中,数据库具有指定哪种记录类型可以嵌套在其他哪种记录类型中的模式。在图形数据库中,没有这样的限制:任何顶点都可以与任何其他顶点相连。这为应用程序提供了更大的灵活性以适应不断变化的需求。
在网络模型中,到达特定记录的唯一方式是遍历其中一个访问路径。在图形数据库中,您可以通过其唯一ID直接引用任何顶点,或者可以使用索引查找具有特定值的顶点。
在网络模型中,记录的子级是有序集合,因此数据库必须维护该排序(对存储布局产生影响),并且将新记录插入数据库的应用程序必须担心这些集合中新记录的位置。在图形数据库中,顶点和边不是有序的(只能在查询时对结果进行排序)。
在网络模型中,所有查询都是命令式的,难以编写,并且很容易因架构更改而出现错误。在图形数据库中,如果需要,您可以编写遍历的命令式代码,但是大多数图形数据库也支持高级的声明性查询语言,例如Cypher或SPARQL。