ArangoDB ACIDity

问题描述 投票:0回答:1

我一直在阅读 ArangoDB 文档,我的印象是,只要没有任何集合被分片,事务性和 ACID 属性仅在单个服务器设置或集群设置中受支持。我希望我误读了文档,也许有人可以澄清我的误解。

以下是引导我得出结论的文档的链接:
https://docs.arangodb.com/3.11/aql/high-level-operations/remove/
https://docs.arangodb.com/3.11/aql/high-level-operations/update/
.../替换/
.../插入/
.../upsert/

他们都有以下形式的声明 (用上面链接中列出的适当的 AQL 操作替代删除):

在单个服务器上,文档删除以事务方式执行 以一种全有或全无的方式。对于分片集合,整个 删除操作不是事务性的。

因此,如果我正确地阅读了这篇文章 - 如果集合的大小增长到必须对其进行分片,那么任何 CRUD 操作都不能以事务方式执行,因此无法再保留 ACID 属性。

我的理解是否也正确,事务性和 ACID 属性可以保留在集群 ArangoDB 服务器安装中,前提是不需要对任何集合进行分片,但是,集合可以分布在多个节点上,保留每个节点的完整性,并且没有一个节点必须拥有所有集合。

我提前感谢任何能够对这个话题有所启发的人。

transactions arangodb
1个回答
2
投票

集群中的事务安全性与其他解决方案相当,如果多文档和集合查询不分布在多个节点上,那么它们也具有 ACID 性。

  • 使用ArangoDB的单个实例,保证多文档/多集合查询是完全ACID的。这超过了许多其他 NoSQL 数据库系统的支持。
  • 在ArangoDB集群中,单文档操作也是完全ACID的。
  • 集群中的多文档/多集合查询不是 ACID。我们竞争对手的数据库系统也是如此,例如MongoDB、OrientDB、Neo4j等。然而,我们积极追求在集群中支持完全 ACID 事务的目标,这将使 ArangoDB 与其他数据库解决方案区分开来。
  • 对于集群中的非分片集合,适用单个服务器的事务属性。这意味着,如果集合具有单个分片并因此驻留在单个数据库服务器上,则多文档查询是 ACID。
© www.soinside.com 2019 - 2024. All rights reserved.