DEAデータストアの管理
ある小売企業のデータエンジニアリングチームが Amazon Redshift でレポーティング基盤を運用しています。
BI ツールから毎時数十回実行される「売上日次集計クエリ」は、複数のファクトテーブルとディメンションテーブルを JOIN しており、実行に 45〜60 秒かかっています。
基となるデータは毎晩 ETL ジョブによって更新されます。
クエリ応答時間を 1 秒以内に短縮し、かつ ETL 完了後に集計結果が自動的に最新化されるようにするには、どの方法が最も適切ですか?
A集計クエリの結果を毎晩 ETL で別の集計テーブルに書き出し、BI ツールをその集計テーブルに向ける
ETL集計テーブル書き出しは追加のパイプライン開発・運用が必要で、マテリアライズドビューの AUTO REFRESH と比較してコストが高くなります。
BAmazon ElastiCache for Redis にクエリ結果をキャッシュし、アプリケーション層でキャッシュ有効期限を制御する
Amazon ElastiCache for Redisは Redshift 外部のキャッシュレイヤーを追加する構成でアーキテクチャが複雑になり、データ鮮度の管理も必要です。
CRedshift で集計クエリに対応するマテリアライズドビューを作成し、AUTO REFRESH を有効化する
✓ 正解
Redshift のマテリアライズドビューは集計・JOIN の結果を物理的に保存し、BI ツールはプリコンピュート済みの結果を参照するため応答時間をサブ秒レベルに短縮できます。AUTO REFRESH を設定すると、ベーステーブルが更新された際にビューが自動再計算されるため、ETL 完了後に常に最新の集計が反映されます。
DRedshift Concurrency Scaling を有効化して同時実行クエリのスループットを向上させる
Redshift Concurrency Scalingは同時実行数のボトルネック解消を目的としており、単一クエリの実行時間短縮には効果がありません。
解説
Redshift のマテリアライズドビューは集計・JOIN の結果を物理的に保存し、BI ツールはプリコンピュート済みの結果を参照するため応答時間をサブ秒レベルに短縮できます。AUTO REFRESH を設定すると、ベーステーブルが更新された際にビューが自動再計算されるため、ETL 完了後に常に最新の集計が反映されます。
選択肢AのETL集計テーブル書き出しは追加のパイプライン開発・運用が必要で、マテリアライズドビューの AUTO REFRESH と比較してコストが高くなります。
選択肢BのAmazon ElastiCache for Redisは Redshift 外部のキャッシュレイヤーを追加する構成でアーキテクチャが複雑になり、データ鮮度の管理も必要です。
選択肢DのRedshift Concurrency Scalingは同時実行数のボトルネック解消を目的としており、単一クエリの実行時間短縮には効果がありません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →