記事公開日
【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
コスト構造の比較
移行先のS3にはアクセス頻度に応じて、ストレージクラスを最適化するIntelligent-Tieringを想定しています。
それぞれのストレージ料金の差について以下の表で比較しています。
サービス | ティア | ストレージ料金 (GB/月) |
特徴 |
Redshift Managed Storage | - | $0.0261 | Redshiftに最適化された高速ストレージ |
S3 Intelligent-Tiering | 高頻度アクセス (最初の50TB/月) |
$0.025 | アクセスがあると自動でこのティアに移動 |
低頻度アクセス | $0.0138 | 30日間アクセスがないと自動で移動 | |
アーカイブアクセス階層 | $0.005 | 90日間アクセスがないと自動で移動 |
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.またはその関連会社の商標です。