Graph 边集合与图

Graph 边集合与图,graph,nosql,arangodb,edge-list,polyglot-persistance,Graph,Nosql,Arangodb,Edge List,Polyglot Persistance,有一件事我在ArangoDB里没有得到: 边集合和图形之间有什么区别?在哪种情况下我应该选择哪种?这是一条边: { "_id": "edges/328701573688", "_from": "nodes/150194180348", "_to": "nodes/328668871224", "_rev": "3680146597", "_key": "328701573688", "type": "includes" } 这是一份文件: { "_id": "nod

有一件事我在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中的图形构建在文档和边缘之上

边缘集合在从到的
\u和
\u到
上具有自动索引,允许高效检索任何连接的文档。因为数据仍然存储在常规(文档和边缘)集合中,所以您也可以在非图查询中使用这些集合


图形在数据之上添加了一些功能(即查询方法、遍历)。在ArangoDB中可以有多个。将“图形”视为对部分或所有数据进行分组的一种方法,并使它们在查询中可访问。

我不同意
边缘集合仅对[…]图形有用。例如,有AQL函数跟踪边,但它们直接处理集合,不需要一般的图形。如果您想使用某种算法高效地遍历一个高度互连的图,那么确实需要一个通用图。使用什么取决于您的数据结构和用例。我得到的事实是,可以使用Arango作为直接的文档存储,如MongoDB。对于以这种方式使用它的人来说,可以安全地忽略边缘集合。边缘集合也是文档:)唯一的区别是
\u to
\u from
属性存在并具有索引。