文档Db一起更改两个文档

时间:2018-06-07 16:18:30

标签: azure-cosmosdb

我们有两种文档类型,它们位于同一个集合中(差异分区):   - 客户   - 交易

一个客户可以拥有多个交易,一个交易只能与一个客户关联。有时我们需要将交易从一个客户转移到另一个客户。

我们有许多异步线程正在运行,如果多个线程想要在同一个客户文档上运行,我们需要通过让它"尝试"来处理乐观并发。它会写,并处理失败。

考虑这个简单的例子:

{
 "id" : "CustomerA",
 "customerName" : "Jeff",
 "transactions" : ["Tran1", "Tran2"]
},
{
 "id" : "CustomerB",
 "customerName" : "Geoff",
 "transactions" : ["Tran3"]
}

变为

{
 "id" : "CustomerA",
 "customerName" : "Jeff",
 "transactions" : ["Tran1", "Tran2", "Tran3"]
},
{
 "id" : "CustomerB",
 "customerName" : "Geoff",
 "transactions" : []
}

两个文档都已更改,如果我们首先将这些文件保存为CustomerB(捐赠者)(可能会成功进行乐观并发检查),然后再将CustomerA(收件人)保存为第二个...然后失败。 " Tran3"交易将不再有一个家庭...实际上是无关的,孤儿。

是否存在可能有助于解决此挑战的模式或代码示例?这感觉就像必须已经在其他地方解决了一样的问题?

0 个答案:

没有答案