spring-boot - 如何在 CosmosDB 中处理事务 - “全有或全无”概念
问题描述
我试图在一个事务中一次将多个文档保存到“多个集合”。所以如果其中一个保存失败,那么所有保存的文档都应该回滚
我正在使用 SpringBoot 和 SpringData 并使用 MongoAPi 连接到 Azure 中的 CosmosDB。我在他们的门户中读到,这可以通过编写一些存储过程来完成。但是有没有办法我们可以从代码中做到这一点,比如 spring 如何有 @Transaction 注释。?
非常感谢任何帮助。
解决方案
您可以事务性编写的唯一方法是使用存储过程。但这对您的情况无济于事:
- 存储过程特定于核心 (SQL) API;它们不适用于 MongoDB API。
- 事务的范围仅限于单个集合中的单个分区。无论您使用 MongoDB API 还是核心 (SQL) API,您都不能跨集合进行事务性写入。
您需要真正询问交易是否绝对必要。也许您可以使用某种类型的持久消息传递方法来管理您的内容更新。但是根本没有任何内置功能可以让您在 Cosmos DB 中本地执行此操作。
推荐阅读
- sql - 在postgres中查询以表格形式查看jsonb数据列的动态值
- kubernetes - 从 KubernetesPodOperator (Airflow) 使用 kubernetes secret
- c++ - c++ 中的 int hash[a]={0} 有什么用,它是如何工作的?
- powerbi - Power BI - 使用日期/时间按类别计算最后一小时的行数
- neo4j - Neo4j 用户函数 fat jar 在数据库启动时抛出 CpuClock 错误
- android - Android Studio 在 osx Big Sur 上的加载速度保持在 80% 左右
- javascript - 试图从表单中检索 cookie 并仅在 javascript 中显示他的信息
- flutter - 先显示输入再模糊密码场效应
- python - Discord.py Intents 使我的机器人不响应任何内容
- java - Spigot 无法将事件 BlockPlaceEvent 传递给插件 v1.0