Snowflake の費用試算のポイントまとめ #SnowflakeDB

2019.10.16

Snowflake の価格体系を調べていたところ プライシングガイド のページにわかりやすくまとまっていました。

この記事では、上記ページやヘルプの情報を参考に Snowflake の月額費用を試算をする上で抑えておくべきポイントをまとめます。 また、何の情報があれば Snowflake の月額費用が試算できるのか整理します。

費用試算をする上での抑えるべきポイント

以下の点を抑えておくと良さそうです。

  • ストレージ
  • 仮想ウェアハウス(コンピューティング)
    • クレジット
    • 5つのエディション
  • データ転送

ストレージ

Snowflake に保存されているデータ(すなわちストレージの使用量)で月額料金が決まります。このコストは、1か月あたりの平均の使用ストレージを用いて測定されます。 以下のデータが対象になり、このデータがどのくらいストレージを使用していたか、によって決まります。

  • バルクデータのロード/アンロード用にステージングされたファイル(圧縮または非圧縮を選択)。
  • タイムトラベルの履歴データを含むデータベーステーブル(常に圧縮)。
  • フェイルセーフのために保持される履歴データ。

費用としては、利用するクラウドサービスやリージョン毎に「1ヶ月あたり xx ドル/1TB」といった単価が決まっているので、この単価とストレージの利用量で計算します。

仮想ウェアハウス

仮想ウェアハウスの使用量で月額料金が請求されます。仮想ウェアハウスは、X-Small、Small、Medium、Large、X-Large、2X-Large、3X-Large といったサイズが用意され、 利用する仮想ウェアハウスのサイズ、数、実行時間によって費用が決まります。あくまでも稼働した分に対して課金(処理が発生せず、稼働がない場合には費用がかからない)です。

それぞれのサイズで、1時間ごとに次のレートで「クレジット」と呼ばれるものが用意されていて、このクレジットと、後述のエディションで定義された単価に基づいて算出されます。

クレジット

仮想ウェアハウスの処理時間の計算に使用されます。繰り返しになりますが、このクレジットは仮想ウェアハウスの実行中にのみ消費されますので仮想ウェアハウスが実行されていない場合は消費されません。

5つのエディション

以下のエディションがありサポート内容が異なります。 また、このエディション(ここもストレージと同様で利用するクラウドサービスやリージョン)によって 1クレジットあたりの単価が定義されています。

  • Standard
  • Premier
  • Enterprise
  • Business Critical
  • Virtual Private Snowflake

データ転送

日常的にあるものではないと思いますが、リージョン間またはクラウド間でデータを移動またはコピーしたい場合には データ転送料金がかかります。この料金は、それぞれのクラウドプロバイダーの費用に沿った体系になっています。

AWS シンガポールリージョンで価格を見てみる

それぞれの単価については プライシング のページで確認ができました。クラウドサービスで「AWS」、リージョンで「シンガポール」を選択してみます。

以下の情報が表示されました。 任意のエディションを選択してコンピュートのクレジットをかける、これにストレージの費用を足す、という形で試算ができそうです。

ここでお気づきの方がいると思うのですが Snowflake は「オンデマンド」と「キャパシティ」という利用形態があり選択ができます。

Snowflake の利用形態

以下の2種類があります。

  • オンデマンド: AWS などのクラウドサービスと同様で従量課金となります。
  • プリペイドキャパシティ: 特定のドルのコミットメントでキャパシティを事前に購入するオプションです。購入したキャパシティから毎月の利用量分が消費されていく形です。キャパシティの事前購入により、サービスオプション、低価格、および長期的な価格保証が提供されます。クレジットの価格等はコミットされるキャパシティのサイズに基づいて注文時に決定がされます。

試算してみる

以下のような条件で試算してみます。

  • AWS を利用
  • シンガポールリージョンを利用
  • ストレージの利用は 2TB
  • 仮想ウェアハウスは Medium を 2ノード、1ヶ月で40時間利用
  • エディションはスタンダードエディション
  • 利用形態はオンデマンド

コンピュートの費用 + ストレージの費用

=(クレジット * エディションの単価)+(ストレージの利用量 * ストレージの単価)

=(4クレジット/時間 * 2ノード * 40時間 * 2.5ドル/1クレジット)+(2TB * 46ドル/1TB)

= 800ドル + 92ドル

= 896ドル

で月額約900ドル、という感じでしょうか。

Snowflakeの利用費試算で必要な情報

プライシングガイド に2つの試算の例が記載されておりわかりやすかったです。

キャパシティに関してはコミット額に応じた価格設定になるようなので試算は個別で相談が必要になりますが、オンデマンドでの利用に関しては以下のような情報がわかれば試算ができそうです。

Snowflake で利用する

  • クラウドサービス(AWS or Azureなど)
  • リージョン(シドニー、シンガポールなど)
  • ストレージ(○○ TBなど)
  • 利用する仮想ウェアハウスのサイズ、数、利用時間(small * 2ノード、月に80時間の稼働など)
  • 利用するエディション(スタンダードエディション等)

仮想ウェアハウスのサイズ、数、利用時間のところは机上で計算するのは難しいのでトライアル で試しておおよそ必要なリソースを把握するのが良いと思います。

さいごに

本記事では試算のポイントをまとめてみました。想定されるケースにおいて、ざっくりいくら位かかるのかの参考にしてもらえればと思います。また、Snowflake は秒単位の課金と謳っていることもあり、ヘルプ(Impact on Credit Usage and BillingExamples of Multi-cluster Credit Usage)を見るとルールは細かく定義されているようです。このあたりは詳細はまた別の機会に調べてみたいと思います。

それではまた。