Dynamo DB - 并发更新

时间:2015-11-18 11:23:36

标签: amazon-web-services amazon-dynamodb

我需要在Dynamo数据库表中管理并发更新。做了一些研究之后,我遇到了两种方法:

  1.   

    乐观锁定版本ID - http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/JavaVersionSupportHLAPI.html

  2.   

    有条件保存 - http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html

  3. 还有更多方法可以处理Dynamo DB中的并发更新吗?

    用户场景

    Table A - maintains some kind of state [STARTED, IN_PROGRESS, COMPLETE]

    国家的变化只能是这样。

    STARTED -> IN_PROGRESS 
    IN_PROGRESS -> COMPLETE
    IN_PROGRESS -> STARTED (back step)
    

    我想我可以在这里使用乐观锁定和条件写入。

    乐观锁定

    1. 有版本号。当线程1将状态更新为IN_PROGRESS时,版本号将增加到1。
    2. 接下来,如果某个线程2将状态更改回STARTED,则版本号将增加到2。
    3. 稍后如果线程1尝试将状态更改回COMPLETE,则会因为版本不同而失败。
    4. 有条件保存 -

      1. 有条件检查当我们尝试将State更改为COMPLETE时,当前状态应该是IN_PROGRESS而不是STARTED。
      2. 我认为在这种情况下我可以使用任何一种机制。那是对的吗?或者是否有任何特定的情况我们应该优先选择其中一种?

0 个答案:

没有答案