SAA-C03高パフォーマンスなアーキテクチャの設計MEDIUM複数選択

ある企業が、Amazon DynamoDB テーブルへの読み取りパフォーマンスを向上させたい。テーブルには 1 億件以上のアイテムがあり、特定の属性(ユーザー ID ではなく、商品カテゴリと価格帯)での検索が頻繁に実行されるが、現在はこれらの属性がパーティションキーでもソートキーでもないため、テーブル全体のスキャンが発生している。テーブル構造の変更を最小限にしながらパフォーマンスを改善する方法を 2 つ選択してください。

  1. A. メインテーブルの消費 RCU(読み取りキャパシティユニット)を増やしてスキャンを高速化する。
  2. B. 商品カテゴリをパーティションキー、価格をソートキーとするグローバルセカンダリインデックス(GSI)を追加する。
  3. C. メインテーブルのパーティションキーを商品カテゴリに変更し、既存データを全件更新する。
  4. D. DynamoDB Accelerator(DAX)クラスターを追加してスキャン結果をキャッシュし、繰り返しのスキャンを高速化する。
  5. E. GSI を追加し、GSI のプロジェクション設定でクエリに必要な属性のみをプロジェクション(INCLUDE)することでインデックスサイズを小さくする。
解答と解説を見る

正解: B, E

GSI(グローバルセカンダリインデックス)を追加することで、既存のメインテーブルのキー設計を変更せずに商品カテゴリと価格での効率的なクエリが可能になる。選択肢Bの GSI 追加(カテゴリ=パーティションキー、価格=ソートキー)により、全体スキャンの代わりに特定カテゴリのアイテムを O(N) ではなく O(log N) でクエリできる。選択肢EのGSI のプロジェクション最適化(INCLUDE で必要な属性のみを指定)により、GSI に保存されるデータ量が減りコスト削減とクエリパフォーマンス向上に寄与する。選択肢Cのメインテーブルのキー変更は既存データの全件更新(削除・再挿入)が必要で、大規模テーブルでは非現実的。「テーブル構造の変更を最小限に」要件に反する。選択肢DのDAX キャッシュは繰り返しクエリを高速化するが、スキャン自体の実行コストとレイテンシーは初回は変わらない。根本的なアクセスパターン改善ではない。選択肢AのRCU 増加はスキャンの並列処理を高速化するが、スキャン自体は非効率なままでコスト増加も大きい。

▸ この試験を本気で演習する(全150問・無料)