DVAAWSのサービスを使用した開発
開発者はAmazon DynamoDBテーブルに対してQuery操作を実行するアプリケーションを作成しています。ある特定のパーティションキーに対するアイテム数が非常に多く、1回のQueryリクエストで全てのデータを取得しきれないことが判明しました。残りの結果(ページネーションされたデータ)を取得するために、開発者はどのようにAPIリクエストを構成すべきですか。
A前回のQueryのレスポンスに含まれる `LastEvaluatedKey` の値を、次回のQueryリクエストの `ExclusiveStartKey` に設定して送信する。
✓ 正解
ページネーション処理の基本であり、LastEvaluatedKeyの値を次のExclusiveStartKeyに渡すことで続きのデータを取得できます。
BQueryリクエストの `Limit` パラメータを増やして、テーブルの最大容量まで一度に取得できるように変更する。
Limitパラメータは取得するアイテムの最大「数」を制限するものであり、1MBのデータサイズ上限を突破することはできません。
C前回のQueryリクエストの `Count` パラメータの値を、次回のQueryリクエストの `Offset` パラメータに指定する。
DynamoDBのQuery/Scan APIにはSQLのような Offset パラメータは存在しません。
DQuery操作の代わりにScan操作を使用し、`FilterExpression` を適用することで一括で結果を取得する。
Scan操作はテーブル全体を読み込むため非効率的であり、1MBのサイズ上限はScanでも同様に存在するため根本的な解決になりません。
解説
DynamoDBのQueryやScanオペレーションは、1回の実行で取得できるデータサイズの上限が1MBに制限されています。結果が1MBを超える場合、レスポンスに `LastEvaluatedKey` が含まれます。残りのデータを取得するには、後続のリクエストでこの `LastEvaluatedKey` の値を `ExclusiveStartKey` パラメータとして設定し、APIを再呼び出し(ページネーション)する必要があります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →