2017-06-09 14 views
0

私は、複製ログの一種としてダイナモテーブルを使用することを計画していたので、私はこのようになりますテーブルを持っている: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/1MBN API呼び出しを必要とします。

+0

スキャンの正しい構文を守っていますか? http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html#API_Scan_RequestSyntax –

答えて

0

DynamoDBスキャン操作を実行すると、ハッシュキーでソートされていないように見えます。したがって、ExclusiveStartKeyを使用すると、キーの任意のページを取得することはできません。

シーケンスIDを使用したこの例の表では、私が望むものはキネシスのストリームで実現できます。

関連する問題