
はじめてのSnowflake
データ分析の進化は目覚ましく、企業は膨大なデータを活用してビジネスを成長させるための新たなソリューションを求めています。その中で注目を集めているのが、クラウドベースのデータウェアハウスサービスである Snowflake です。Snowflakeは、従来のデータウェアハウスの課題を克服し、データ分析をより効率的、かつ効果的に行うための革新的なプラットフォームとして、多くの企業から支持を得ています。
最近、知人がSnowflakeに転職したこともあって会社としても、プロダクトとしても興味を持ち始めました。一方で「要はDBaaS(Database as a Service)でしょ?」というふんわりとした理解しかなかったので、この機会にまとめてみようと思います。
はじめに:Snowflakeとは?
Snowflakeとは、クラウド上のデータウェアハウスで、組織が大量のデータを効率的に管理・分析できるように設計されているDBサービスです。主な特徴を挙げてみます。
特徴1:データストレージとコンピューティングが分離
データの保管場所(ストレージ)とデータ処理を行う計算リソース(コンピューティング)を別々に管理する仕組みになっています。ストレージはデータ量の増加に応じて自動的に拡張され、コンピューティングについても、大量データを捌くため、一時的にリソースを確保し、分析が終わったらスケールダウンするなど、リソースの管理という観点で優れています。
なお、データ処理を行う計算リソースのことを「ウェアハウス」と呼びます。仮に、アナリストAさん と アナリストBさんが別の作業をしていたとしても、別のウェアハウスを確保していれば互いの処理が競合しないので、快適に分析業務を行うことができます。
特徴2:動かした分だけ課金される
利用した量に応じて請求額が決まります。これは利用者側でコストを制御することができるのSnowflakeの特徴でありメリットです。
課金ポイントは以下の3つ。
コンピューティングリソース
ストレージリソース
データ転送リソース
※ ここでデータ転送リソースというのは、Snowflake外に対してアウトバウンドで通信を行うことです。(データ入力を絞っていたら何もはじまらないので、当たり前ですがインバウンド通信は対象外のようです)
コンピューターリソース、およびデータ転送リソースについては「クレジット」という測定単価も覚えておくとよいでしょう。コンピューティングであれば、クレジットの単価 ×クレジットの数 で負担する費用が決まりますが、つかうリソースの種類や、それを何時間使っていたかで、利用したクレジット数も変わります。
なお、課金体系はタイミング、および契約時の条件によって変わるものなので、必ず公式HPあるいは自社の契約を確認いただくようお願いします。
特徴3:処理が高速 & メンテナンス負荷が小さい
クラウドサービスの分類としては「DBaaS(Database as a Service)」にあたります。いわゆるDBのマネージドサービスです。煩わしいDBの構築・メンテナンスの一部をSnowflakeがやってくれるため、関連コストが大幅に軽減されます。
また、Snowflakeは他製品と比べてもパフォーマンスに優れていることがよく知られています。別の観点としてあるのが、仮に同等のパフォーマンスを自前のDBで実現しようとすると、それなりの時間と労力がかかります。さらに付け加えるならば、実現するためにシニアレベルのデータベースエンジニアの確保が必要になります。
ITプロジェクトに関わっている方であれば、そのありがたさが理解できるのではないでしょうか。
特徴4:データ共有の種類
読み取り専用テーブルをコピーして提供する。あるいは閲覧データを絞るのであれば、ETLツールを利用し、加工済データを提供するという選択肢があります。いずれにせよ、データを冗長に持つことになるのでストレージを工面したり、加工した場合には、パイプライン(加工ロジック)を管理していく必要が出てくるので煩わしい側面があります。
Snowflakeだとこれらの選択肢以外にもゼロコピークローン、データシェアリングという方法があります。
ゼロコピークローンは、データの物理的なコピーが発生しないため、追加のストレージは不要です。メタデータをコピーするだけなので、利用者からはあたかもテーブル全体をコピーしたかのように見えます。また、コピーは独立しているため、元データが更新されたとしてもその影響を受けません。
データシェアリングも、データの物理的なコピーは発生しません。共有されたデータへアクセス権(参照のみ)を付与する機能です。アクセス権を付与するだけなら今までのDBと変わりませんが、ストレージとコンピューティングが分離されていることで、気軽に元データをシェアできるのはすごくありがたいです。
このゼロコピークローンにせよ、データシェアリングにせよ、裏側のテクノロジーについてはまだ理解しきれていないので、追って勉強したいと思いました。
Snowflakeのリソース
主に公式のドキュメントを参照しましたが、採用企業も増えてきているので書籍や個人サイトなどキャッチアップできる接点が増えてきています。
いくつか紹介しておきます。良情報ありがとうございました。
Snowflake公式ドキュメント
30日間限定のトライアルアカウントと、チュートリアルを活用すればおおよそのSnowflakeの使用感を知ることができそうです。
電通総研さんのブログ
Snowflakeに力を入れているのが読み取れました。記事の内容は一部参考にさせていただきました。
udemy
Snowflakeは教材が充実しているので素晴らしいですね。英語の教材も多いですが、技術の話なので字幕さえついていれば問題ない気もします
以上となります。
ありがとうございました。