【发布时间】:2020-01-02 19:47:44
【问题描述】:
我们正在努力解决由于竞争条件而创建的重复文档。我们处理事件并创建或更新文档。我们注意到,如果我们在几毫秒内收到两个事件,我们正在创建重复的文档。第一个事件应该生成新文档,第二个事件应该是更新。
这是我们在存储产品中的逻辑。
- 查找具有特定 ID 和状态的现有文档
- 创建新文档或更新现有文档(如果存在)。
- 如果创建,我们再做一次选择,以检查我们是否只有一个带有 id 和 status 组合的文档。如果大于 1,则回滚。在更新的情况下,我们依赖 Etag。
我们对更新很好,但创建给我们带来了困难。让我知道是否有办法解决它。 Deduplicate key 是外部 id 和状态的组合。我们有一个现有的数据库,我们希望避免任何需要创建新数据库的更改。
谢谢, 罗希特
【问题讨论】:
-
您使用的是哪种一致性级别?
-
一致前缀
标签: c# .net azure concurrency azure-cosmosdb