2016-09-06 9 views
1

DynamoDBの仕組みに精通している方のお役に立てれば幸いです。 大きなDynamoDBテーブルでスキャンを実行する必要があります。 DynamoDBClientのスキャン操作は、返されるデータのサイズが1 MBに制限されています。 Table.scan操作にも同じ制限が適用されますか?つまり、Table.scan操作ではタイプ「ItemCollection<ScanOutcome>」の出力が返されますが、DynamoDBClientスキャンではScanResult出力が返されますが、これらの操作が同じように動作するかどうかはわかりません。JavaのTable.scan apiを使用したDynamodbパラレルスキャン

この例では、http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ScanJavaDocumentAPI.htmlを確認しましたが、最後に返されたキーの使用に関するヒントは含まれていません。

私の質問は次のとおりです。 Table.scanを使用すると、lastreturnedkeyがnullになるまで、スキャンの呼び出しをサイクルで行う必要がありますか?はいの場合、最後のキーを取得するにはどうすればよいですか?そうでない場合は、どのようにページングを施行できますか? コード例へのリンクがあれば幸いです。私はいくつかの例を検索するのに時間を費やしてきましたが、大部分はDynamoDBClientまたはDynamoDBMapperを使用していますが、代わりにTableオブジェクトとIndexオブジェクトを使用する必要があります。

ありがとうございます!

+0

あなたは非常に大きなテーブルを持っていますが、特に何か(またはセット)を探しているので、結果をフィルタリングすることができます。同じ大きさではない場合:はい、次のバッチで検索を続ける必要があります。 –

+0

あなたのご意見が分かりません。私はスキャン結果をフィルタリングするfilterexpressionを持っていますが、結果が1Mbを超えることはありません –

+0

したがって、次のバッチをスキャンする必要があります。 'Segments'や' TotalSegments'を使って "再生"することで並列に行うことができます。その場合、要求から返された 'LastEvaluatedKey'の値は、次のスキャン操作で同じセグメントIDを持つ' ExclusiveStartKey'として使用されなければなりません。これはSQLによく似ていますが、高速です! –

答えて

0

Table.scan()の出力を反復すると、SDKによってページ設定が行われます。

関連する問題