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

ある企業が、Amazon Aurora PostgreSQL を使ったシステムで、大量のデータをバッチ処理でロードするETL 処理のパフォーマンスが低いという問題を抱えている。毎晩数百万件のレコードを Aurora テーブルに UPSERT する処理に 4〜5 時間かかっており、2 時間以内に完了させたい。データはステージングの S3 に CSV 形式で保存されている。最も適切な方法はどれか。

  1. A. Amazon Aurora の並列クエリ機能を有効化して大量データの処理を高速化する。
  2. B. Amazon Redshift に一時ステージングテーブルを作成して S3 から COPY コマンドでデータを高速ロードし、Aurora に必要なデータのみをバッチで書き込む。または AWS Glue ETL ジョブを使って S3 から Aurora へのバルクロードを並列処理する。
  3. C. Aurora の自動バックアップを無効化してETL 処理中のオーバーヘッドを削減する。
  4. D. アプリケーションから 1 件ずつ UPSERT クエリを発行し、マルチスレッドで並列化する。
解答と解説を見る

正解: B

大量データの S3 から Aurora へのロードには、AWS Glue ETL ジョブが並列処理と最適化されたコネクタ(Aurora の JDBC)を使って高速バルクインサートを実行できる。Glue は処理をワーカー数に応じてスケールでき、数百万件のレコードを 2 時間以内に処理できる可能性が高い。Aurora の COPY コマンドは PostgreSQL に対応しており、S3 から直接高速ロードも可能。選択肢Dの 1 件ずつの UPSERT マルチスレッドは、ネットワーク往復とトランザクションオーバーヘッドが累積して非常に遅く、バルクロードよりも大幅に時間がかかる。選択肢CのAurora 自動バックアップの無効化は ETL パフォーマンスに直接影響せず、本番環境でのバックアップ無効化はデータ保護上のリスクが高い。選択肢Aの Aurora 並列クエリ機能(Parallel Query)は分析クエリの高速化に使うもので、データのバルクロードのパフォーマンス向上には貢献しない。

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