如何处理 CosmosDB 中的事务 - “全有或全无”概念

aru*_*_kk 10 spring-boot azure-cosmosdb

我试图在一个事务中一次将多个文档保存到“多个集合”。因此,如果其中一个保存失败,那么所有保存的文档都应该回滚

我正在使用 SpringBoot 和 SpringData 并使用 MongoAPi 连接到 Azure 中的 CosmosDB。我在他们的门户网站上读到,这可以通过编写一些存储过程来完成。但是有没有一种方法可以让我们从代码中做到这一点,就像spring如何使用@Transaction注释一样?

非常感谢任何帮助。

Dav*_*gon 7

事务性编写的唯一方法是使用存储过程,或通过事务性批处理操作(基于 SDK,在语言 SDK 的子集中,当前为 .NET 和 Java )但这对你的情况没有帮助:

  • 存储过程特定于核心(SQL)API;它们不适用于 MongoDB API。
  • 事务的范围仅限于单个集合中的单个分区。无论您使用 MongoDB API 还是核心 (SQL) API,您都无法跨集合进行事务性写入。

您需要真正询问交易是否绝对必要。也许您可以使用某种类型的持久消息传递方法来管理您的内容更新。但根本没有任何内置功能可以让您在 Cosmos DB 中本地执行此操作。