我在dynamodb中有一个表,服务器一直在写入表。 同时,我使用另一个工作线程继续使用LastEvaluatedKey对该表执行扫描。我的问题是,扫描最终会从表中获取所有项目吗?它会错过任何项目,因为其他主题日复一日地写入表中。
谢谢, 易
答案 0 :(得分:1)
是肯定的。在某些情况下,你可以错过物品。
在哈希范围术语中,LastEvaluatedKey实际上是最后看到的范围值。 dynamo按范围值对响应进行排序(如果是,则按数字排序,如果是字符串,则按str表示值对响应进行排序)。
所以例如: 如果你的表值是:
哈希,范围
1,'a'
1,'b'
1,'c'
1,'r'
1,'x'
然后你的第一次扫描可以返回你((1,a),(1,b),(1,c),(1,r)) 这里你的LastEvaluatedKey是'r',你的扫描从这一点开始继续
现在,如果一个新项目(1,d)插入到表格中,它将插入(1,c)和(1,r)之间,你的扫描将会错过它,因为他继续从(1,r) ,并将返回给你(1,x)
所以我推荐你的最佳解决方案: