Transactions 如果生成的变更提要更新上的其他操作失败,我是否可以让Cosmos DB操作失败?

Transactions 如果生成的变更提要更新上的其他操作失败,我是否可以让Cosmos DB操作失败?,transactions,azure-cosmosdb,Transactions,Azure Cosmosdb,我在父对象中嵌入了一堆子对象。父对象位于集合中,由对父对象有意义的东西进行分区 我想使用changefeed来维护这些子对象的集合,这些子对象由一个字段进行分区,该字段对于所有这些子对象都应该是全局唯一的 我希望设置这样的设置:当用户试图修改父对象中的某个内容时,并且修改会导致更改提要驱动的子对象集合中出现重复条目,则会阻止用户这样做 理想情况下,这将表现为某种事务,在这种事务中对父对象进行修改,更改提要尝试执行它的操作(在同一事务中),但失败,因此父对象修改被回滚 这种工作流程可行吗?我同意@

我在父对象中嵌入了一堆子对象。父对象位于集合中,由对父对象有意义的东西进行分区

我想使用changefeed来维护这些子对象的集合,这些子对象由一个字段进行分区,该字段对于所有这些子对象都应该是全局唯一的

我希望设置这样的设置:当用户试图修改父对象中的某个内容时,并且修改会导致更改提要驱动的子对象集合中出现重复条目,则会阻止用户这样做

理想情况下,这将表现为某种事务,在这种事务中对父对象进行修改,更改提要尝试执行它的操作(在同一事务中),但失败,因此父对象修改被回滚


这种工作流程可行吗?

我同意@Mark的观点,我认为CosmosDB无法满足您的要求。Change feed更可能是处理IOT中某些数据的触发器,它不是为事务之类的操作而设计的。我也在谷歌上搜索一些想法,但失败了


您是否考虑将修改策略添加到客户端而不是数据库?我的意思是,也许你可以用另一个视图来编辑数据。

我同意@Mark,我认为CosmosDB不能满足你的要求。Change feed更可能是处理IOT中某些数据的触发器,它不是为事务之类的操作而设计的。我也在谷歌上搜索一些想法,但失败了


您是否考虑将修改策略添加到客户端而不是数据库?我的意思是,也许您可以使用另一个视图来编辑数据。

这是不可能的。容器和change feed之间没有交易保证。@MarkBrown我想我在这件事上又要花一分钱了;我认为解决方案是将子对象和父对象(ex-sub-object)保存在不同的集合中,以便编写。然后使用change提要对完整内容进行非规范化。我可以在专用容器中管理子对象的唯一性。更改馈送通常用于管理非规范化数据,因此最好将子对象保留在单独的容器中,并使用唯一的分区键和id来保持唯一性。这是不可能的。容器和change feed之间没有交易保证。@MarkBrown我想我在这件事上又要花一分钱了;我认为解决方案是将子对象和父对象(ex-sub-object)保存在不同的集合中,以便编写。然后使用change提要对完整内容进行非规范化。我可以在专用容器中管理子对象的唯一性。更改提要通常用于管理非规范化数据,因此最好将子对象保留在单独的容器中,并使用唯一的分区键和id来保持唯一性。