Amazon Redshift で構築するクラウドデータウェアハウス - Serverless と RA3 の使い分け

Serverless と RA3 プロビジョンドの選定基準を明確にし、データ共有と Spectrum によるデータレイク連携でサイロ化を防ぐ手法を紹介します。

Redshift のアーキテクチャ概要

Redshift は列指向ストレージと超並列処理 (MPP) アーキテクチャを採用したクラウドデータウェアハウスです。列指向ストレージにより、分析クエリで必要な列のみを読み取るため、行指向の RDBMS と比較して I/O を大幅に削減します。リーダーノードがクエリの解析と実行計画の生成を担当し、コンピュートノードがデータの並列処理を実行します。RA3 インスタンスではコンピュートとストレージが分離されており、データは S3 ベースの Redshift Managed Storage (RMS) に格納されます。頻繁にアクセスされるデータはローカル SSD にキャッシュされるため、S3 からの読み取りレイテンシを意識する必要はありません。

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 の両方から同じテーブル定義でクエリを実行できます。 Redshift に関する実践的なノウハウはAmazon の関連書籍でも確認できます。

Redshift の料金

Redshift Serverless は RPU (Redshift Processing Unit) の使用量で課金され、ベース RPU は 8 から設定可能で、1 RPU 時間あたり約 0.375 ドルです。クエリが実行されていない間はコストが発生しません。プロビジョンドクラスタの RA3.xlplus は 1 ノードあたり約 1.086 ドル/時 (月額約 782 ドル) で、リザーブドインスタンスで最大 64% の割引が適用されます。Redshift Managed Storage は 1 GB あたり月額約 0.024 ドルです。1 日 8 時間未満のクエリ実行なら Serverless、8 時間以上の常時稼働なら RA3 プロビジョンドが有利です。

まとめ

Redshift はペタバイト規模のデータ分析を高速に実行するクラウドデータウェアハウスです。Serverless で小さく始め、ワークロードの成長に応じてプロビジョンドクラスタに移行する段階的なアプローチが有効です。データ共有と Spectrum を活用することで、データのサイロ化を防ぎ、データレイクとの統合分析を実現できます。