SAA-C03:AWS Certified Solutions Architect - Associate 高性能なアーキテクチャの設計 問21
高性能なアーキテクチャの設計/高性能なデータベースソリューションの決定DynamoDB テーブルを、プライマリキー以外の属性(例: ステータスや登録日)でも効率よく検索する必要が出てきました。テーブル全体をスキャンせずに別の検索パターンを高速に実現したい。最も適切な方法はどれですか。
当サイトのオリジナル問題(SAA-C03:AWS Certified Solutions Architect - Associateの出題範囲「高性能なアーキテクチャの設計」に対応。実際の試験問題ではありません)
- A毎回 Scan 操作を実行し、フィルター式で目的の項目に絞り込む
- B読み取りキャパシティを大幅に増やして Scan を高速化する
- Cグローバルセカンダリインデックス(GSI)を作成し、別のキーで効率よくクエリする
- Dテーブルを属性ごとに複数のテーブルへ分割してコピーする
正解:C
解説
グローバルセカンダリインデックス(GSI)を作成すると、ベーステーブルとは異なるパーティションキー/ソートキーで効率的に Query でき、全件 Scan を避けて別の検索パターンを高速に実現できます。Scan はテーブル全体を読み取るため非効率で、読み取りキャパシティを増やしてもコストが膨らむだけです。テーブルの手動分割・コピーは整合性と運用の負担が大きくなります。
選択肢ごとの解説
- A誤り。Scan はテーブル全体を読み取る操作で、検索のたびに実行するのは性能・コストの両面で非効率です。
- B誤り。キャパシティ増加で Scan を速くしてもコストが増えるだけで、効率的な検索パターンにはなりません。
- C正しい。GSI により別のキーで Query でき、全件 Scan を避けて効率よく検索できます。
- D誤り。テーブルを分割・コピーする運用は整合性維持や管理が複雑になり、適切な解決策ではありません。