DVA-C02:AWS Certified Developer - Associate AWS サービスを用いた開発 問8
AWS サービスを用いた開発/アプリ開発におけるデータストアの利用大きな Amazon DynamoDB テーブルから、特定ユーザーの項目だけをコストと性能よく取得したいと考えています。最も適切なのはどれですか。
当サイトのオリジナル問題(DVA-C02:AWS Certified Developer - Associateの出題範囲「AWS サービスを用いた開発」に対応。実際の試験問題ではありません)
- AScan で全件を取得してからアプリ側で絞り込む
- Bテーブル全体を毎回 RDS にコピーしてから検索する
- Cすべての読み取りを強整合性にすれば速くなると考える
- Dパーティションキー(必要なら GSI)に対する Query 操作を使い、該当する項目だけを効率的に取得する
正解:D
解説
DynamoDB の Query 操作は、パーティションキー(および必要ならソートキーやグローバルセカンダリインデックス [GSI])を指定して、該当する項目だけを効率的に取得します。一方、Scan はテーブル全体を読み取るためコストと時間がかかります。特定ユーザーの項目取得のように条件が決まっている場合は Query を使うのが適切です。
選択肢ごとの解説
- A誤り。Scan で全件取得してから絞り込むのは、読み取りコストと時間が大きく非効率です。
- B誤り。毎回 RDS にコピーして検索するのは回り道で、コストも性能も悪化します。
- C誤り。強整合性の読み取りは一貫性を高めますが、取得の効率(コスト・性能)そのものを良くするわけではありません。
- D正しい。パーティションキー(必要なら GSI)に対する Query を使えば、該当項目だけを効率的に取得できます。