【问题标题】:DynamoDb global tables atomic counters region-concurent write behaviourDynamoDb 全局表原子计数器区域并发写入行为
【发布时间】:2020-08-05 15:33:00
【问题描述】:

我们在 2 个地区有 dynamodb 全局表。该表包含诸如网站点击次数之类的信息,键为 user 和另外一列 total_user_clicks,这又是一个数值。为了增加这个值,我们使用原子计数器 dynamodb 功能。

让我们考虑下一种情况。在某一时刻,我们为来自两个不同区域的单个键发送两个增量更新。我的问题是:最终的结果是什么?我们是否保证最终会是+2?或者,根据复制情况,它可以是 +1 或 +2?

据我了解,如果我们复制数据库日志,而不是原始行,我们保证最终得到 +2。但我在官方文档中找不到任何确认。

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

    如果ADD请求来自不同的地区,则可以是+1或+2。

    来自documentation,如果请求在复制时更新不同区域的相同项目,则可能会导致冲突。

    即使请求可以在没有冲突的情况下进行协调(即在同一个键上添加操作或更新不同的路径),它总是会引发冲突并覆盖到最后一个写入者。所以前面的请求会被忽略。

    因此,来自不同地区的 2 个请求有 3 种可能的情况。

    1. 结果为 +1,冲突,请求 1 获胜。
    2. 结果为 +1,冲突,请求 2 获胜。
    3. 结果为+2,无冲突,两个请求不重叠复制时间。

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2022-08-15
      • 2012-03-11
      • 2019-12-17
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多