边集合与图
Edge Collection vs. Graph
有一件事我在 ArangoDB 中没有得到:
边集合和图有什么区别?什么情况下应该选择哪个?
这是一条边:
{
"_id": "edges/328701573688",
"_from": "nodes/150194180348",
"_to": "nodes/328668871224",
"_rev": "3680146597",
"_key": "328701573688",
"type": "includes"
}
这是一个文档:
{
"_id": "nodes/328668871224",
"_rev": "3610088613",
"_key": "328668871224",
"name": "Gold-edged Gem",
"type": "species"
}
如您所见,没有根本区别。它们都是文件。边集合仅在您使用 Arango 时有用,因为它具有图形数据库功能。
据我了解,将集合类型设置为 "edge" 的一点告诉 Arango,它应该确保存储在那里的所有文档至少具有 _to 和 _from 属性,以便文档可以为其服务充当其他两个文档之间的连接器。
一旦你有了一个文档集合,它的文档由边集合中的一堆边文档连接起来......现在你就有了一个图。
ArangoDB 中的图建立在文档和边之上。
边缘集合在 _from
和 _to
上有自动索引,允许高效检索任何连接的文档。因为数据仍然存储在常规(文档和边缘)集合中,所以您也可以在非图形查询中使用这些集合。
图表在数据之上添加了一些功能(即查询方法、遍历)。你可以在 ArangoDB 中拥有多个。将 "graph" 视为一种对部分或全部数据进行分组并使它们在查询中可访问的方法。
有一件事我在 ArangoDB 中没有得到:
边集合和图有什么区别?什么情况下应该选择哪个?
这是一条边:
{
"_id": "edges/328701573688",
"_from": "nodes/150194180348",
"_to": "nodes/328668871224",
"_rev": "3680146597",
"_key": "328701573688",
"type": "includes"
}
这是一个文档:
{
"_id": "nodes/328668871224",
"_rev": "3610088613",
"_key": "328668871224",
"name": "Gold-edged Gem",
"type": "species"
}
如您所见,没有根本区别。它们都是文件。边集合仅在您使用 Arango 时有用,因为它具有图形数据库功能。
据我了解,将集合类型设置为 "edge" 的一点告诉 Arango,它应该确保存储在那里的所有文档至少具有 _to 和 _from 属性,以便文档可以为其服务充当其他两个文档之间的连接器。
一旦你有了一个文档集合,它的文档由边集合中的一堆边文档连接起来......现在你就有了一个图。
ArangoDB 中的图建立在文档和边之上。
边缘集合在 _from
和 _to
上有自动索引,允许高效检索任何连接的文档。因为数据仍然存储在常规(文档和边缘)集合中,所以您也可以在非图形查询中使用这些集合。
图表在数据之上添加了一些功能(即查询方法、遍历)。你可以在 ArangoDB 中拥有多个。将 "graph" 视为一种对部分或全部数据进行分组并使它们在查询中可访问的方法。