Amazon Redshift で構築するクラウドデータウェアハウス - Serverless と RA3 の使い分け
Amazon Redshift のアーキテクチャ、Serverless とプロビジョンドクラスタの選定基準、データ共有やマテリアライズドビューの活用法を解説します。
Redshift のアーキテクチャ概要
Redshift は列指向ストレージと超並列処理 (MPP) アーキテクチャを採用したクラウドデータウェアハウスです。列指向ストレージにより、分析クエリで必要な列のみを読み取るため、行指向の RDBMS と比較して I/O を大幅に削減します。リーダーノードがクエリの解析と実行計画の生成を担当し、コンピュートノードがデータの並列処理を実行します。RA3 インスタンスではコンピュートとストレージが分離されており、データは S3 ベースの Redshift Managed Storage (RMS) に格納されます。頻繁にアクセスされるデータはローカル SSD にキャッシュされるため、S3 からの読み取りレイテンシを意識する必要はありません。
この分野について体系的に学びたい方は、関連書籍 (Amazon) も参考になります。
Serverless とプロビジョンドクラスタの選定
Redshift Serverless はキャパシティを RPU (Redshift Processing Unit) 単位で自動スケーリングし、クエリが実行されていない間はコストが発生しません。BI ダッシュボードの定期的なクエリ、アドホック分析、開発・テスト環境など、ワークロードが断続的な場合に最適です。一方、プロビジョンドクラスタ (RA3) は常時稼働のワークロードに向いています。24 時間継続的にクエリが実行される本番環境では、リザーブドインスタンスとの組み合わせで Serverless より低コストになります。判断の目安として、1 日あたりのクエリ実行時間が 8 時間未満なら Serverless、8 時間以上なら RA3 プロビジョンドが有利です。
データ共有と Spectrum によるデータレイク連携
データ共有は、Redshift クラスタ間でライブデータをリアルタイムに共有する機能です。プロデューサークラスタがデータ共有を作成し、コンシューマークラスタがそれを参照します。データのコピーは発生せず、コンシューマーは常にプロデューサーの最新データを参照します。部門ごとに独立したクラスタを運用しつつ、共通のマスターデータを共有するユースケースに有効です。Redshift Spectrum は S3 上のデータに直接 SQL クエリを実行する機能です。Parquet や ORC などの列指向フォーマットと組み合わせることで、Redshift にロードせずにペタバイト規模のデータレイクを分析できます。Glue Data Catalog をメタデータストアとして使用し、Redshift と Athena の両方から同じテーブル定義でクエリを実行できます。
さらに詳しく知りたい方は、関連書籍 (Amazon) で理解を深められます。
まとめ
Redshift はペタバイト規模のデータ分析を高速に実行するクラウドデータウェアハウスです。Serverless で小さく始め、ワークロードの成長に応じてプロビジョンドクラスタに移行する段階的なアプローチが有効です。データ共有と Spectrum を活用することで、データのサイロ化を防ぎ、データレイクとの統合分析を実現できます。
AWS の優位点
- Redshift Serverless はキャパシティの自動スケーリングとアイドル時の自動停止で、断続的なクエリワークロードのコストを最適化できる
- RA3 インスタンスはコンピュートとストレージを分離し、S3 上のマネージドストレージにより事実上無制限のデータ容量を実現する
- データ共有機能で複数の Redshift クラスタ間でデータをリアルタイムに共有でき、データのコピーや ETL が不要になる
- Redshift Spectrum で S3 上のデータレイクに直接クエリを実行でき、Redshift にロードせずにペタバイト規模のデータを分析できる
- マテリアライズドビューの自動リフレッシュでダッシュボードのクエリ性能を大幅に改善できる