ArangoDB ACID性能

3
我一直在阅读ArangoDB文档,我的印象是事务性和ACID属性仅在单服务器设置或集群设置中支持,只要没有对集合进行分片。我希望我误解了文档,也许有人可以帮我理解一下。

以下是导致我得出结论的文件链接:
https://docs.arangodb.com/3.0/AQL/Operations/Remove.html
https://docs.arangodb.com/3.0/AQL/Operations/Update.html
.../Replace.html
.../Insert.html
.../Upsert.html

所有这些链接都有以下形式的语句 (用上面链接中列出的适当AQL操作替换删除):

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

如果我理解正确的话,如果集合增长到必须进行分片的大小,则无法以事务方式执行任何CRUD操作,因此无法保留ACID属性。我的理解也是正确的吗?如果ArangoDB服务器安装为群集,并且没有必要对集合进行分片,则可以保留事务性和ACID属性,但是可以将集合分布在多个节点上,每个节点保留其完整性,而且没有一个节点必须拥有所有集合。提前感谢任何人能够为这个话题提供任何帮助。
1个回答

2

在一个集群中,ArangoDB的事务安全性与其他解决方案相当,而且如果多个文档和集合查询没有分布在多个节点上,那么也可以实现ACID操作。

  • 使用单个ArangoDB实例,多个文档/多个集合查询可以保证完全符合ACID标准。这比许多其他NoSQL数据库系统提供的功能更强大。
  • 在ArangoDB集群中,单个文档操作也是完全符合ACID标准的。
  • 在集群中进行多个文档/多个集合查询时,不符合ACID标准。这同样适用于我们竞争对手的数据库系统,例如MongoDB、OrientDB、Neo4j等。然而,我们积极追求在集群中支持完全符合ACID标准的事务,这将使ArangoDB成为其他数据库解决方案中的翘楚。
  • 对于集群中的非分片集合,单个服务器的事务属性适用。这意味着,如果集合只有一个分片并且驻留在单个DB服务器上,则多个文档查询将符合ACID标准。

感谢您的回复和确认我对文档的解释。 关于Neo4j,我不太确定我同意以下声明:
集群中的多文档/多集合查询不是ACID。我们的竞争对手的数据库系统(如MongoDB、OrientDB、Neo4j等)也是如此。
如果我理解正确,Neo4j实际上没有集合,而是标签。我的理解(可能无效)是,在同一事务中,Neo4j确实支持多文档更改的ACID属性。
- Null Pointer
此外,Neo4j目前并没有分片的概念,因此我认为在这个领域中比较Neo4j和Arango DB的ACID性质并不是一对一的比较。 不过,我同意如果ArangoDB在分片和多文档设置中实现ACID属性,它将在竞争中脱颖而出。 最后,我非常热情地祝愿你们在实现这一目标时一切顺利。 - Null Pointer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接