【问题标题】:DynamoDb Eventual Consistency: the index or the record?DynamoDb 最终一致性:索引还是记录?
【发布时间】:2023-03-23 01:24:01
【问题描述】:

在 DynamoDb 中,默认情况下使用全局二级索引的读取最终是一致的:https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html#GSI.Querying

但是,这是否意味着对 GSI 的查询可能会返回以下内容之一:

  1. 具有旧值的旧记录集
  2. 带有新值的旧记录集
  3. 新的记录集,但记录的属性将是旧的

说明示例:

  • Table Foo 有 3 个字段:a、b、c
  • Foo 在 b 上有一个主键 a 和一个 GSI
  • Foo 以以下记录开头: {a:1,b:苹果,c:蓝色} {a:2,b:橙色,c:绿色}

  • 对 foo 的写入将 a = 2 的记录更新为: {a:2, b: 苹果, c: 红色}

  • 另一个写入将 a = 1 的记录更新为: {a: 1, b: 苹果, c: 橙}

  • 在写入之后,假设有一些延迟,在 GSI 一致之前,使用 GSI 对表进行读取

  • 查询使用 GSI 获取 b = apple 的所有记录

  • 此查询是否返回:

结果 X - 设置错误但属性值正确: {a: 1, b: 苹果, c: 橙}

结果 Y - 设置正确但属性值错误: {a:1,b:苹果,c:蓝色} {a:2,b:橙色,c:绿色}

结果 Z - 错误的集合和错误的属性值: {a:1,b:苹果,c:蓝色}

还是别的什么?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb


    【解决方案1】:

    GSI 上的查询有时会返回旧记录集

    是的

    查询会返回新的记录集,但记录的属性会是旧的?

    这永远不会发生。

    【讨论】:

    • 你确定不是结果 Z 吗?错误的集合和值?
    • @user7340 结果 Z 也是可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-05
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多