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

时间:2016-02-15 05:21:04

标签: arangodb

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

每个顶点集合都有1到180个边集合绑定到它们。

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

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

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

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

目前使用的ArangoDB版本是2.8.2。

谢谢!

1 个答案:

答案 0 :(得分:3)

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

  1. 根据需要在多个集合中向顶点添加边缘不会产生任何开销。
  2. 每个集合本身都有开销,它使用自己的数据文件等。
  3. 直接使用AQL或文档API删除顶点/边缘不受连接集合总量的影响。 (注意:在这种情况下,不会删除指向此文档的边缘!)
  4. 使用图表 每当您通过图形API删除顶点时,都会发生以下情况:

    1. 删除顶点(常量时间)
    2. 此图表已知的边集合中此顶点的所有边都将被删除(扫描所有edge definitions,并通过所有from和所有to定义,如果顶点可能已连接如果是这样,它将对该顶点的所有边进行索引查找并删除它们。
    3. 接下来,它将扫描所有其他图形,并检查每个图形是否是一个边缘定义的一部分。
    4. 因此,根据我的理解,您案例中的删除操作将非常昂贵。 插入/更新/查找/查询不受连接集合数量的影响。

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