何时使用边缘与连接

When to use edges vs joins

由于 ArangoDB 是多模型数据库,我们可以选择将连接建模为图边或 "pointers"(其他文档的单个 ID 或 ID 列表)。

在哪些情况下您会推荐这两种类型?每种情况下(一对一、一对多、多对多、无限级别)的 advantages/disadvantages(速度、查询 complexity/ease 使用等)是什么,其中后者可能是最明显的图的案例(使用遍历,最短路径,...)。

我看过一个关于作者和书籍的例子,一个多多关系,其中使用了边。但我想它也可以被建模为带有作者 ID 列表的书籍对象?我已经看到一些优势的优点是它们可以具有属性,例如一种类型,但同样,这也可以很容易地建模为 [{属性:value, id:id},...]?

我实际上已经就这件事写了一篇博客 post:Graphs in data modeling - is the emperor naked?。本文相对笼统,但从 ArangoDB 的角度解决了整个问题。我想我对你的问题的回答是 "It depends most on the queries that will hit your database during use.",上面文章中的 "Querying graphs" 部分解释了这一点。如果您需要更多信息,请随时通过 max (at) arangodb.com 直接问我。