0

我有一个 Spring Boot应用程序2.2.5 RELEASE(我们在没有明确声明的情况下使用MongoOperationsMongoTransactionManager

在此设置中,对于 MongoDB 4.X 副本集,如果客户端未启动显式事务,我们将获得“自动提交”写入。看这里

但是,我们想了解,当我们在 DocumentDB Cluster(具有副本集)上执行 WRITE 操作时,使用相同的 Mongo Java 驱动程序版本3.11.2兼容MongoDB Server 版本,而不从客户端(即 spring boot 应用程序)启动显式事务4.2.X),何时或如何准确地进行数据库提交?我们已经看到插入后间隔很近的更新(在 <50 毫秒内)失败,说明更新无法找到插入的记录。

似乎与 MongoDB 相同的行为,即“自动提交”可能不适用于“DocumentDB”。在那种情况下,如何提交 WRITE?

有人可以帮助我们理解潜在的行为吗?我们在AWS DocumentDB 文档中找不到任何有关WRITE Ops wo Transactions 的详细说明。

此外,DocumentDB 是否在集合上使用单线程 WRITE 方法,或者它是如何使用的?

4

1 回答 1

0

Amazon DocumentDB 使用分布式存储卷,数据在三个可用区复制 6 次。分布式存储使用 10GB 块作为逻辑单元。写入数据时,Amazon DocumentDB 使用 4 的写入仲裁确保持久记录所有写入。将 4 个数据副本写入存储后,可以认为数据已提交,主实例将向客户端发送确认。如前所述,数据被进一步复制到其他 2 个块,总共 6 个。

有关读写一致性的文档中有很好的信息,但如果您需要进一步说明,请告诉我。

于 2022-03-03T18:33:26.223 回答