CosmosDB是否支持通过容器级ETag实现全容器乐观并发控制?
CosmosDB 容器 ETag 与 timestamp 属性规则解答
容器 ETag 能否实现全容器并发更新拦截?
答案是不能。
CosmosDB 容器的 ETag 仅会在容器自身元数据/配置变更时更新,和容器内部的文档增删改行为完全无关。会触发容器 ETag 更新的场景仅包括修改索引策略、调整预置吞吐量、修改容器 TTL 规则、更新分区键配置这类容器级别的配置操作,内部文档任意变更都不会改变容器 ETag 的值,因此完全无法基于该属性实现全容器范围的并发更新拦截。
容器 timestamp 属性的更新规则
容器的 _ts(时间戳)属性更新逻辑和 ETag 完全一致:仅在容器本身的元数据/配置被修改时更新,容器内部文档的任意增删改都不会触发该属性更新。
全容器并发控制替代方案
如果确实需要实现全容器维度的并发更新拦截,可以在容器内单独维护一个专属的全局状态文档,所有涉及全容器范围的操作执行前,先基于该全局文档的 ETag 做乐观并发校验,即可实现等价的拦截能力。
内容的提问来源于stack exchange,提问作者TheRubberDuck
相关产品推荐
相关产品推荐

