1. 主要ページへ移動
  2. メニューへ移動
  3. ページ下へ移動

QES ブログ

記事公開日

【AWSコスト最適化】Redshift Serverless のストレージ料金削減方法を検討!

  • このエントリーをはてなブックマークに追加

はじめに

DXソリューション営業本部の三浦です。
今回はAWSのデータウェアハウスサービスであるRedshift Serverlessの「データ量の増加に伴うストレージ料金の増大」という課題の解決方法について検討していきます。

解決策として、アクセス頻度が下がるデータを低コストなS3へ移行し、Spectrumでクエリする方法が有効であると考えられます。
本記事では、この手法を採用する際に必要な「ストレージ料金の削減効果」と「コンピューティング(RPU)料金への影響」について解説します。

Redshift Spectrumとは

Amazon Redshift Spectrum を使用すると、効率的にクエリを実行し、Amazon Redshift テーブルにデータをロードすることなく、Amazon S3 のファイルから構造化および半構造化されたデータを取得できます。
引用元:https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/c-using-spectrum.html

 a621_03.jpg


コスト構造の比較

移行先のS3にはアクセス頻度に応じて、ストレージクラスを最適化するIntelligent-Tieringを想定しています。
それぞれのストレージ料金の差について以下の表で比較しています。

料金比較表:Redshift Managed Storage vs. S3 Intelligent-Tiering
サービス ティア ストレージ料金
(GB/月)
特徴
Redshift Managed Storage - $0.0261 Redshiftに最適化された高速ストレージ
S3 Intelligent-Tiering 高頻度アクセス
(最初の50TB/月)
$0.025 アクセスがあると自動でこのティアに移動
低頻度アクセス $0.0138 30日間アクセスがないと自動で移動
アーカイブアクセス階層 $0.005 90日間アクセスがないと自動で移動
※S3 Intelligent-Tieringには、オブジェクトを監視・自動移動するための料金(1,000オブジェクトあたり$0.0025/月)が別途発生します。(128KB未満のオブジェクトは対象外)

Spectrumへ移行する際の考慮事項

ストレージ料金のみを比較すると、アクセス頻度の低いデータはS3への移行で大幅な削減が期待できそうです。
ただし、Spectrumを使用してS3上の外部テーブルにクエリを実行する際には、パフォーマンスへの影響、コンピューティング料金(RPU)がどう変わるかを考慮する必要があります。

コンピューティング料金(RPU)への影響
Redshift Serverlessのコンピューティング料金は、RPU(Redshift Processing Unit)がクエリを処理するためにアクティブだった時間(RPU秒)のみで課金されます。SpectrumでS3のデータをスキャンする際のコストは、クエリ実行時間、すなわちRPUの消費時間に含まれます。
スキャンによるRPU増加の他に以下の2点の考慮が必要です。

1. パフォーマンスへの影響
Redshift Managed StorageはRedshiftに直結した高速なストレージです。一方、S3はネットワークを経由してアクセスするため、Spectrum経由のクエリは、Redshift内部のテーブルに対するクエリよりも実行時間が長くなる傾向があります。

2. RPU消費への影響
クエリの実行時間が長くなるということは、RPUの消費時間が増え、結果としてコンピューティング料金が上昇することを意味します。S3上のデータをスキャンする負荷が、そのままRPUの稼働時間として料金に反映されるのです。特に、非効率なデータ形式では大量のスキャンが発生して実行時間が大幅に伸び、意図せずコンピューティング料金が高額になる可能性があります。

この「ストレージ料金の削減」と「コンピューティング料金の増加」はトレードオフの関係にあり、S3へのデータ移行を成功させる鍵は、後述するデータフォーマットの最適化などによって、クエリの実行時間をいかに短く抑えるかが重要なポイントです。


データフォーマットの最適化

ここでは、S3にデータを置く際の3つのテクニックを適用することで、S3からスキャンされるデータ量を削減し、結果としてRPU消費(コンピューティング料金)を抑え、コストメリットを最大化する方法を解説します。

1:列指向フォーマット「Parquet」を使う

データをS3に移行する際は、必ずParquet形式のような列指向フォーマットを選択してください。
Parquetは列ごとにデータをまとめて保存するため、クエリに必要な列のデータだけをピンポイントで読み取ることができます。これにより、スキャンするデータ量が減り、クエリ実行時間(RPU料金)の削減が期待できます。

2:データを「パーティショニング」する

パーティショニングは、Spectrumのパフォーマンスとコストを左右する最も重要な最適化です。
データを日付(年、月、日など)でフォルダ分けして保存(例:/year=2025/month=09/)することで、SpectrumはクエリのWHERE句を認識し、指定されたフォルダのデータのみをスキャン対象とします。これにより、不要なデータのスキャンを回避し、RPU消費(コンピューティング料金)を削減できます。

3:ファイルサイズと圧縮形式を最適化する

1ファイルあたり128MB〜1GB程度のサイズに分割し、圧縮には分割可能なSnappyなどを選択することで、Spectrumは複数のノードで並列処理できるため、クエリが高速化します。

まとめ

今回は、Redshift Serverlessのストレージ料金削減策として、S3とSpectrumを活用する方法を検討しました。

S3への移行はストレージ料金を大幅に削減する一方で、パフォーマンスの問題や、RPU料金といった新たな考慮事項も生まれます。

そして、本記事で紹介したParquet形式の採用やパーティショニングといったデータ最適化は、そのコストメリットを最大化し、同時にクエリパフォーマンスを維持するための非常に効果的な手段です。

重要なのは、ストレージとコンピューティングのコストバランスを理解し、データ特性に合わせて最適な配置を選択することです。まずは、Redshiftに蓄積されたデータのうち、アクセス頻度の低いものがどれかを特定することから始めてみてはいかがでしょうか。

もし「このサービスについて知りたい」「AWS環境の構築、移行」などのリクエストがございましたら、弊社お問合せフォームまでお気軽にご連絡ください! また、よろしければ以下のリンクもご覧ください!
<QES関連ソリューション/ブログ>

<QESが参画しているAWSのセキュリティ推進コンソーシアムがホワイトペーパーを公開しました>

※Amazon Web Services、”Powered by Amazon Web Services”ロゴ、およびブログで使用されるその他のAWS商標は、米国その他の諸国における、Amazon.com, Inc.またはその関連会社の商標です。

  • このエントリーをはてなブックマークに追加

お問い合わせ

Contact

ご質問やご相談、サービスに関する詳細など、何でもお気軽にご連絡ください。下記のお問い合わせフォームよりお気軽に送信ください。

お問い合わせ

資料ダウンロード

Download

当社のサービスに関する詳細情報を掲載した資料を、下記のページよりダウンロードいただけます。より深く理解していただける内容となっております。ぜひご活用ください。

資料ダウンロード