DVAAWSのサービスを使用した開発

開発者はAmazon DynamoDBテーブルに対してQuery操作を実行するアプリケーションを作成しています。ある特定のパーティションキーに対するアイテム数が非常に多く、1回のQueryリクエストで全てのデータを取得しきれないことが判明しました。残りの結果(ページネーションされたデータ)を取得するために、開発者はどのようにAPIリクエストを構成すべきですか。

A
前回のQueryのレスポンスに含まれる `LastEvaluatedKey` の値を、次回のQueryリクエストの `ExclusiveStartKey` に設定して送信する。
✓ 正解
ページネーション処理の基本であり、LastEvaluatedKeyの値を次のExclusiveStartKeyに渡すことで続きのデータを取得できます。
B
Queryリクエストの `Limit` パラメータを増やして、テーブルの最大容量まで一度に取得できるように変更する。
Limitパラメータは取得するアイテムの最大「数」を制限するものであり、1MBのデータサイズ上限を突破することはできません。
C
前回のQueryリクエストの `Count` パラメータの値を、次回のQueryリクエストの `Offset` パラメータに指定する。
DynamoDBのQuery/Scan APIにはSQLのような Offset パラメータは存在しません。
D
Query操作の代わりにScan操作を使用し、`FilterExpression` を適用することで一括で結果を取得する。
Scan操作はテーブル全体を読み込むため非効率的であり、1MBのサイズ上限はScanでも同様に存在するため根本的な解決になりません。

解説

DynamoDBのQueryやScanオペレーションは、1回の実行で取得できるデータサイズの上限が1MBに制限されています。結果が1MBを超える場合、レスポンスに `LastEvaluatedKey` が含まれます。残りのデータを取得するには、後続のリクエストでこの `LastEvaluatedKey` の値を `ExclusiveStartKey` パラメータとして設定し、APIを再呼び出し(ページネーション)する必要があります。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る