Cosmos DB 是否支持跨分区事务?

Does Cosmos DB support cross partition transactions?

我想通过更改分区键将文档移动到另一个分区。我在某处读到必须先删除该文档,然后必须创建一个具有新分区键的新文档。如果是这样的话,这个交易可以是原子的吗?换句话说,是否可以跨两个分区执行事务并在一个 update/write 操作失败时回滚?

否此操作不跨国

您可能知道分区键是不可变的,无法更改,这就是为什么您需要先删除它,然后用不同的值重新创建它。

使用支持事务的存储过程是不可能的,因为 SP 只能对单个分区进行操作。这意味着您需要其中两个才能完成您的 delete/create,这在 return 中意味着它不再是转录的。

您可以对"cheat"做的是将要删除的文档保存在内存中,然后执行删除操作并检查响应以查看文档是否已成功删除。如果是,则继续创建新的并检查创建响应。如果它创建成功,那么你很高兴。如果删除或创建失败,则重新创建内存中的文档。然而,这也有创建文档无法重新创建的风险,但这是模仿这种行为的最接近的东西。