Amazon dynamodb DynamoDB排他性EstartKey滥用?
我计划使用Dynamo表作为一种复制日志,因此我有一个如下表:Amazon dynamodb DynamoDB排他性EstartKey滥用?,amazon-dynamodb,Amazon Dynamodb,我计划使用Dynamo表作为一种复制日志,因此我有一个如下表: +--------------+--------+--------+ |序列号|动作|事物| +--------------+--------+--------+ |0 |添加|内容1| |1 | DEL | Thing1| |2 |添加|内容2| +--------------+--------+--------+ 我的每个进程都会跟踪它读取的最后一个序列号。然后每隔一段时间,它对表发出一次扫描,并将ExclusiveStar
+--------------+--------+--------+
|序列号|动作|事物|
+--------------+--------+--------+
|0 |添加|内容1|
|1 | DEL | Thing1|
|2 |添加|内容2|
+--------------+--------+--------+
我的每个进程都会跟踪它读取的最后一个序列号。然后每隔一段时间,它对表发出一次扫描
,并将ExclusiveStartKey
设置为该序列号。我认为这会导致在那个序列之后读取所有内容,但相反,我看到的是不一致的结果
例如,根据上表,如果我进行扫描(ExclusiveStartKey=1)
,当我希望看到第三行(seq=2
)时,结果为零
我觉得这与DynamoDB用来划分项目的内部哈希有关,而且我误用了ExclusiveStartKey
选项
这是做这项工作的错误工具吗
或者,每个进程可以在每个间隔上对
seq+1
发出Query
(如果找到任何内容,则循环),这将导致相同的读吞吐量,但需要N
API调用,而不是执行DynamoDB扫描操作时我通过Scan
得到的N/1MB
,它似乎没有按哈希键排序。因此,使用ExclusiveStartKey
不允许您获得任意一页的密钥
对于这个具有序列ID的示例表,我想要的可以通过一个Kinesis流来实现 您是否遵守扫描的正确语法?