ArangoDB适用于大量更新的阵列/嵌入式文档

时间:2015-11-22 12:30:11

标签: graph-databases arangodb

我正在调查ArangoDB对特定用例的适用性:

  1. 我有相对较多的根文档。
  2. 每个文档代表层次结构的顶部。
  3. 层次结构以图形形式遍历。
  4. 层次结构中每个级别之间的链接是通过嵌入文档数组和数组中指向文档的ID的组合建立的。
  5. 我需要能够将ID推送到&从数组中删除。
  6. 我需要能够添加/删除嵌入的文档。
  7. 我的问题:

    1. ArangoDB是否能够在不更新整个容器文档的情况下更新嵌入式文档?
    2. 它是否有一种机制来处理数组中的各个项目,以便将项目推送到最后/以有效的方式删除项目 (即不会像O那样降低速度( n)中。
    3. 我查看了文档并在线搜索,但找不到这些问题的明确答案。

1 个答案:

答案 0 :(得分:1)

回答你的问题:

1)ArangoDB中的文档有没有就地更新。更新文档时,ArangoDB将存储原始文档的新更新。新版本是自包含的,这意味着它包含(更新的)整个容器。旧版本的文档仍然保留,因为其他当前正在运行的操作可能会引用它。最终将删除过期的文档版本。

2)从答案1中可以看出,将值推入数组或从数组中删除值将构建整个文档的新自包含版本。这意味着推送/删除数组值将花费整个文档的构造,因为这与文档的大小成正比(即数组值越多,这将花费的时间越长)。