目次
Snowflakeとは
SnowflakeはアメリカのSnowflake社が提供するSaaS型のクラウドベースのデータプラットフォームのことです。
2012年にアメリカのカリフォルニア州で設立されました。
そこから2019年に日本にも法人が設立され、本格的に日本に参入されました。
Snowflakeはクラウドベースなので、まずMySQLやPostgreSQLなどのようにダウンロードする必要は無く、WEBでSnowflakeにアクセスし、アカウント作成することで簡単に個人・企業どちらでも利用することができます。
加えて、AWS、Microsoft Azure、Google Cloudの3大クラウドプラットフォーム上で稼働しているので、企業は好みのクラウドを選択・利用することができます。
Snowflakeのアーキテクチャ
【ストレージ層】
クラウドオブジェクトストレージを使用し、ほぼ無制限にデータを格納することができる層
【コンピュート層(仮想ウェアハウス)】
ユーザのクエリ実行やデータ処理を担い、必要に応じてサイズや台数を増減できる層
※以下「仮想WH」として記載
【クラウドサービス層】
メタデータ管理、認証、クエリの最適化などを行い、Snowflake全体を制御する層
Snowflakeの特徴
Snowflakeの特徴としては、データを保存する「ストレージ層」、データを処理する「コンピュート層」、データ管理などを行う「クラウドサービス層」の3つの層がそれぞれ分離独立していることです。
従来のDWHのような「シェアードディスク」や「シェアードナッシング」とは異なり、それぞれ各層が分離独立しているので、「ストレージのみスケールアップする」、「コンピュート層である仮想WHのみスケールアップする」、など柔軟に各層ごとにスケールを変更することができます。
また1つのストレージを複数の独立した仮想WHが利用できます。
この構造により、データコピーなしで複数ユーザが同時に分析作業などをすることができ、データ量やユーザ数が増えてもハイパフォーマンスを発揮することができるのです。
データ共有についても、コピーすることなく、リアルタイムで他のユーザにデータを共有することもできます。
Snowflakeの料金体系
Snowflakeは、「コンピュート(クエリ処理)」と「ストレージ(データ保存)」の2軸で従量課金されるようになっています。
具体的には、仮想ウェアハウスの稼働時間に応じてコンピュート費用が発生し、保存しているデータ量に応じてストレージ費用が課金される仕組みです。
業務で使ってみて
Snowflakeは実際に毎日業務で使用しています。
あまり他のDWHなど使用したことがないため、他サービスと比較はできませんが、状況に応じて柔軟にスケールアップできる点は良いのかなと思います。
例えば、一連のバッチ処理(タスク)の中で、特定の処理が重たいストアドプロシージャを実行する時のみウェアハウスのサイズを上げ(X-Small → Largeなど)終わったら戻す、といった制御が簡単に行えます。これにより、コストを抑えつつ処理時間を劇的に短縮することができます。
また、自分は使用したことが無いですが、Streamlitも使用することができPythonでアプリ開発ができるなど、使用用途が非常に幅広いなと感じています。
まとめ
今回の記事では、Snowflakeの特徴や仕組みについて書きました。
理由は、毎日業務で使用していて、一度どういった特徴があるのか、どんな仕組みなのかを整理するために書きました。
