【问题标题】:DynamoDB eventually consistence read ordering for sequential written dataDynamoDB 对顺序写入数据的最终一致性读取排序
【发布时间】:2015-05-07 12:44:35
【问题描述】:

我有一个应用程序将事件附加到dynamodb tableuserid 作为哈希键,增量序列号作为范围键(以保证排序顺序)。表仅是附加的。可以说作者为用户 ID '1' 编写事件。我有一个阅读器,它使用带有用户 ID '1' 哈希键的最后一个序列号读取事件。 如果阅读器使用强一致性读取,我知道阅读器将按顺序获取数据,与写入顺序相同。

如果阅读器使用最终一致性阅读,我可以期待相同的行为吗?

【问题讨论】:

    标签: amazon-web-services amazon-dynamodb nosql


    【解决方案1】:

    不能期望最后写入的项目可能无法用于最终一致的读取。

    比如说你连续写了 3 次:

    userId=1, seqNumber=1
    userId=1, seqNumber=2
    userId=1, seqNumber=3
    

    如果您进行最终一致的阅读,则不能保证您获得所有项目。如果您是这样插入项目的,那么您的查询仍会按顺序返回项目。如果要获取所有最近的写入,则必须使用强一致性读取。

    来自DynamoDB FAQ

    ...

    最终一致性读取(默认)——最终一致性 选项最大化您的读取吞吐量。然而,最终 一致读取可能不会反映最近完成的结果 写。所有数据副本的一致性通常在 一秒。在短时间内重复读取应该返回 更新数据

    ...

    【讨论】:

    • 我不介意稍后获得最新的写入,只要它保证写入顺序。如果你能确认我可以接受你的回答。
    • @nsa 我不明白你所说的写顺序是什么意思。由您的应用程序来处理项目的排序。在我给出的示例中,您的应用程序需要使用 seqNumber=n 编写 3 个项目。在将项目写入 DynamoDB 之前,您要如何确定 n 取决于您。
    • 很抱歉让您感到困惑。我的意思是我想按序列号读取数据顺序。在这种情况下,它与写入顺序相同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多