私は、複製ログの一種としてダイナモテーブルを使用することを計画していたので、私はこのようになりますテーブルを持っている:DynamoDB ExclusiveStartKey誤使用ですか?
+--------------+--------+--------+ | Sequence Num | Action | Thing | +--------------+--------+--------+ | 0 | ADD | Thing1 | | 1 | DEL | Thing1 | | 2 | ADD | Thing2 | +--------------+--------+--------+
私のプロセスのそれぞれが、それは読んで最後のシーケンス番号を追跡します。その後、一定の間隔でExclusiveStartKey
がそのシーケンス番号に設定されたテーブルに対してScan
を発行します。私はこれがシーケンスの後のすべてを読むことになると仮定しましたが、代わりに私は一貫性のない結果を見ています。
たとえば、上記の表を参考にして、私がScan(ExclusiveStartKey=1)
を実行すると、3番目の行(seq=2
)が見込まれると、ゼロの結果が得られます。
DynamoDBが内部のハッシュを使用して項目を分割すること、そして私がExclusiveStartKey
オプションを誤って使用しているとの感情があります。
これは間違った仕事ですか?
また、各プロセスは同じReadThroughputにつながるれ、各間隔(何が見つかった場合、ループ)にseq+1
ためQuery
を発行することもできますが、私はScan
となるだろう代わりにN/1MB
のN
API呼び出しを必要とします。
スキャンの正しい構文を守っていますか? http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html#API_Scan_RequestSyntax –