在我只执行UPDATE请求(没有获取)我执行加法操作的情况下,最终结果是否可以在竞争条件下安全?
这是一个例子:
id: { num: 0 }
id: { num: 1 }
id: { num: 2 }
...
id: { num: 45 }
用updateexpression
表示所有这些更新操作,将num
属性添加到DynamoDB但是异步并且没有任何顺序概念,它们是否仍然可以安全地输出到相应的系列结束值(即1035)?
如果DynamoDB在同一时间获得两个更新请求会发生什么?一个请求会覆盖另一个请求,还是会正确递增,DynamoDB会通过原子操作一次更新一个请求?
我是否需要担心这种竞争状况的发生,或者DynamoDB是否能很好地处理这种情况?
是的,UpdateItem
操作可用于实现atomic counters。如果您只是添加数字,则操作的顺序无关紧要,没有竞争条件。