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

时间:2018-11-07 05:53:47

标签: transactions azure-cosmosdb acid document-database

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

1 个答案:

答案 0 :(得分:1)

没有这项行动不是跨国的。

您可能已经知道分区键是不可变的并且不能更改,这就是为什么您需要先删除它,然后再使用其他值重新创建它的原因。

无法使用支持事务的存储过程,因为SP只能针对单个分区进行操作。这意味着您需要其中两个才能进行删除/创建,这反过来意味着它不再是转录。

您可以做的“作弊”方法是将要删除的文档保存在内存中,然后执行删除操作并检查响应,以查看文档是否已成功删除。如果是这样,则继续进行新的创建并检查创建响应。如果创建成功,那就很高兴。如果删除或创建失败,则重新创建内存中文档。但是,这也可能会导致无法重新创建创建的文档,但这是您模仿此行为的最接近的方法。