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

ある企業が、Amazon S3 に保存された数 PB のデータに対してアドホックな SQL クエリを実行するデータレイクを構築したい。クエリのコストを最小限に抑えながら、パフォーマンスを向上させるためのベストプラクティスを 2 つ選択してください。

  1. A. S3 のデータをデータの属性(日付・地域等)でパーティション分割して保存し、Athena クエリで WHERE 句にパーティションキーを指定してスキャン量を削減する。
  2. B. すべてのデータを CSV 形式で保存し、Amazon Athena で全列クエリを実行する。
  3. C. S3 のデータを Apache Parquet または ORC などの列指向フォーマットで保存し、クエリが必要な列のみを読み取れるようにする。
  4. D. Amazon Redshift にすべてのデータをロードし、すべての SQL クエリを Redshift で実行する。
  5. E. Athena クエリのすべての結果を EC2 インスタンスのメモリにキャッシュする。
解答と解説を見る

正解: A, C

Athena は S3 上のデータをスキャンした量に応じて課金される(1TB あたり約 5USD)ため、スキャン量の削減がコストとパフォーマンスの両方に直結する。選択肢Cの列指向フォーマット(Parquet/ORC)では SELECT する列のみを読み取れるため、全列 CSV より大幅にスキャン量が削減でき、クエリ速度も向上する(圧縮効率も高い)。選択肢AのS3 パーティション分割(Hive スタイルのプレフィックス: s3://bucket/year=2024/month=01/...)により、Athena がクエリの WHERE 句でパーティションプルーニングを実行し、関係のないパーティションのデータをスキャンしない。数 PB のデータでも WHERE year=2024 AND month=01 なら該当月のデータのみを処理できる。選択肢Bの CSV 全列クエリはスキャン量が最大になり、コスト・パフォーマンスとも最悪。選択肢EのEC2 キャッシュはアドホッククエリには効果がなく、インフラ管理も必要になる。選択肢DのRedshift への全量ロードはロードコスト・時間・Redshift クラスターの常時稼働コストが発生し、「コスト最小限」の要件に合わない。

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