DynamoDB 最终对顺序写入数据进行一致性读取排序



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

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

您不能期望相同的行为,即最后写入的项目可能无法用于最终一致性读取。

例如,假设您连续有 3 次写入:

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

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

来自 DynamoDB 常见问题解答

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

最新更新