绑定到边集合的多个顶点集合的影响?

Impacts of multiple Vertex Collections bound to an Edge Collection?

我正在设计一个使用 ArangoDB 的解决方案,并且需要有一个连接到 5 到 200 个顶点集合的边集合。

每个顶点集合将绑定 1 到 180 个边集合。

每个 Edge Collection 都会有一个为其创建的 Graph 对象。

我是 ArangoDB 的新手,如果有一些我需要注意的关键性能影响,我很感兴趣。

服务器硬件应该不是问题,因为可以在云提供商上使用更大的服务器实例。

我对 ArangoDB 的性能更感兴趣,边缘集合引用了如此多的共享顶点集合,以及任何其他问题都不那么明显。

我当前使用的 ArangoDB 版本是 2.8.2。

谢谢!

对于性能方面,有以下因素: 不使用图表:

  1. 向任意数量的集合中的顶点添加边没有任何开销。
  2. 每个集合都有自己的开销,它使用自己的数据文件等。
  3. 直接用AQL或Document API删除Vertex/Edge不受连接集合总量的影响。 (注意:在这种情况下,指向该文档的边不会被删除!)

使用图形: 每当您通过图 API 删除一个顶点时,将发生以下情况:

  1. 顶点被删除(常数时间)
  2. 该图已知的边集合中该顶点的所有边都被删除(扫描所有 edge definitions,然后扫描所有 from 和所有 to 定义,如果该顶点是此处可能已连接。如果是这样,它将对该顶点的所有边进行索引查找并删除它们。
  3. 接下来它将扫描所有其他图形,并为每个图形检查集合是否是一个边定义的一部分。

因此,根据我的理解,在您的案例中,删除 操作将非常昂贵。 Insertion/Update/Lookup/Queries 不受连接集合数量的影响。

但是我认为有这么多的图表和这么多的集合似乎有点过度设计,但由于我不知道你的用例的细节,我无法判断是否有必要。