DynamoDB ExclusiveStartKey误用?

时间:2017-06-09 21:59:48

标签: amazon-dynamodb

我打算将Dynamo表用作一种复制日志,所以我有一个如下所示的表:

+--------------+--------+--------+ | Sequence Num | Action | Thing | +--------------+--------+--------+ | 0 | ADD | Thing1 | | 1 | DEL | Thing1 | | 2 | ADD | Thing2 | +--------------+--------+--------+

我的每个进程都会跟踪它读取的最后一个序列号。然后,在一个时间间隔内,它会对表Scan发出ExclusiveStartKey,并将Scan(ExclusiveStartKey=1)设置为该序列号。我认为这会导致在该序列之后读取所有内容,但我看到的结果不一致。

例如,根据上表,如果我执行seq=2,当我希望看到第3行(ExclusiveStartKey)时,我得到的结果为零。

我觉得它与内部散列有关,DynamoDB使用它来对项目进行分区,并且我误用了Query选项。

这是错误的工具吗?

或者,每个进程可以在每个时间间隔上为seq+1发出N(如果发现任何内容,则循环),这将导致相同的ReadThroughput,但需要N/1MB API调用而不是Scan我会得到一个k

1 个答案:

答案 0 :(得分:0)

当您执行DynamoDB扫描操作时,它似乎不会按哈希键进行排序。因此,使用ExclusiveStartKey不允许您获取任意页面的键。

对于带有序列ID的示例表,可以使用Kinesis流完成我想要的。