首页 文章

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

提问于
浏览
2

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

  • 我的根文档数量相对较多 .

  • 每个文档代表层次结构的顶部 .

  • 层次结构以图形形式遍历 .

  • 层次结构中每个级别之间的链接是通过嵌入文档数组和指向文档的数组中的ID的组合 Build 的 .

  • 我需要能够将ID推送到数组并从数组中删除 .

  • 我需要能够添加/删除嵌入的文档 .

我的问题:

  • ArangoDB是否能够更新嵌入式文档而无需更新整个容器文档?

  • 它是否有一种机制来处理数组中的各个项目,以便以有效的方式将项目推送到末尾/删除项目(即,不会像O(n)那样降低速度 .

我查看了文档并在线搜索,但找不到这些问题的明确答案 .

1 回答

  • 1

    回答你的问题:

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

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

相关问题