クラウド型データプラットフォームとして急速に普及しているSnowflake。
Snowflakeを導入する際に必ず理解しておきたいのが 料金モデル(Pricing Model) です。
Snowflakeは従来のデータベースとは異なり、完全な従量課金モデルを採用しています。
つまり
- サーバー購入
- ライセンス費用
- 初期投資
などは不要です。
その代わり、利用した分だけ課金される仕組みになっています。
この記事ではSnowflake公式ドキュメントをベースに
- Snowflake料金の仕組み
- コンピュート課金
- ストレージ課金
- クラウドサービス課金
を 図解とともに現役エンジニア視点でわかりやすく解説します。
※この記事は Snowflake完全ガイドシリーズ第5回です。
前回の記事を読みたい方はこちらからご覧ください。
Snowflake料金モデルの全体像
Snowflakeの料金は主に 3つの要素で構成されています。
① コンピュート課金
② ストレージ課金
③ クラウドサービス課金
この3つの組み合わせで利用料金が決まります。
Snowflakeの特徴はコンピュートとストレージが完全に分離されていることです。
これにより
- 必要な分だけ計算リソースを使う
- 必要な分だけデータを保存する
という柔軟な料金体系になっています。
① コンピュート課金
Snowflakeの料金の中心となるのがコンピュート課金(Compute Cost)です。
これは
- SQLクエリ実行
- データ処理
- ETL処理
などの 計算処理に対する料金です。
Snowflakeでは計算処理をVirtual Warehouse(仮想ウェアハウス)で実行します。
仮想ウェアハウスのサイズ
仮想ウェアハウスには複数のサイズがあります。
XS
S
M
L
XL
2XL
3XL
4XL
サイズが大きくなるほど
- CPU
- メモリ
- 並列処理
が増えます。
つまり、処理性能とコストが比例します。
課金単位
Snowflakeのコンピュートは、秒単位課金です。
ただし、最小課金は60秒となっています。
例えば、30秒のクエリの場合、60秒分として課金されます。
② ストレージ課金
2つ目の料金が ストレージ課金(Storage Cost) です。
これは、データ保存量に対して課金されます。
Snowflakeではデータはクラウドストレージに保存されます。
例えば
- AWS S3
- Azure Blob Storage
- Google Cloud Storage
などです。
ストレージの特徴
Snowflakeではデータが
- 自動圧縮
- カラムナーストレージ
で保存されます。
そのため、データサイズが小さくなることが多いです。
ストレージ課金の対象
ストレージ料金は次のデータが対象です。
- テーブルデータ
- ステージデータ
- タイムトラベルデータ
- Fail-safeデータ
特にタイムトラベルデータは過去データを保持する機能なのでストレージ量が増える可能性があります。
③ クラウドサービス課金
3つ目が Cloud Services Cost です。これはSnowflakeの管理機能に対する課金です。
- クエリ最適化
- メタデータ管理
- 認証
- トランザクション管理
課金の仕組み
Cloud Servicesは基本的にコンピュート使用量の10%以内であれば追加料金は発生しません。
つまり、Cloud Servicesはほぼ無料になることが多いです。
私の経験上、Cloud Services料金が大きくなることはほとんどありません。
Snowflake料金のポイント
Snowflake料金モデルのポイントは次の通りです。
- ComputeとStorageが分離
- 完全従量課金
- 使った分だけ支払う
この設計によって
- 柔軟なスケーリング
- コスト最適化
が可能になります。
まとめ
Snowflakeの料金は次の3つで構成されています。
① コンピュート課金
② ストレージ課金
③ クラウドサービス課金
特に重要なのは、コンピュート課金です。
仮想ウェアハウスのサイズや稼働時間がSnowflakeコストの大部分を占めます。
そのため、Auto Suspendや適切なウェアハウスサイズの選択がコスト最適化のポイントになります。

