2019年末に日本法人を設立し2020年9月に上場を果たしたSnowflake社が提供する、サービスとしてのSnowflakeについて紹介したいと思います。
Snowflakeのコンセプトおよびその特徴やメリットについて説明し、どのような企業や組織がSnowflakeを導入した方がいいかについてまとめたいと思います。
Snowflakeのコンセプト
SnowflakeとはAWS、GCP、Azureなどの主要なクラウドプラットフォーム上で動くSaaS型のデータウェアハウスです。
このSaaS型のデータウェアハウスはDWaaS (Data Warehouse as a Service)とも呼ばれており、同様なサービスとしてはAWSのAmazon Redshift、GCPのGoogle BigQuery、AzureのAzure SQL Data Warehouseなどがあります。
Snowflakeは3つのクラウドプラットフォーム(AWS, GCP, Azure)に置かれたデータに対してそれぞれ独自のデータエンジンでクエリ処理をすることができるという点で、独自のポジションを築いています。
Snowflake自体はデータや計算資源を持たず、データ処理自体はすべて各クラウド上(AWSなど)で実行されます。Snowflakeはあくまでクエリを入力して集計指示をしたりデータを管理したりするハブもしくはWrapperのような役割を持ったサービスであるというイメージが近いかもしれません。
Snowflakeの特徴
前述したようにSnowflakeにおちてはデータそのものやデータ処理機能はクラウド側で持っているため、Snowflake自体が提供しているのはユーザが触れるウェブサービス部分とAWSなどのクラウド側のサービスの2種類です。いずれもユーザ側ではインストールや管理などの作業が不要であり、メンテナンスはSnowflakeがすべて担っています。
クラウド上のSnowflakeアーキテクチャは大きくストレージ層、クエリ処理層、サービス層の3つの層から構成されています。
ストレージ層では構造的なリレーショナルデータだけでなく、JSONなどの半構造データも最適化した形で保持することができます。ユーザは直接生のデータを見ることはできず、クエリ処理された結果のみを画面上で確認することができます。
クエリ処理層では仮想ウェアハウス(Virtual Warehouse)と呼ばれる複数の独立した計算資源を用意してデータ処理を行います。これによって、複数のユーザなどから同一のデータストレージに対してクエリが発行された場合でもパフォーマンスの低下などの影響がありません。各仮想ウェアハウスの計算リソースのプロビジョニングや構成などはSnowflake側で実施してくれます。
サービス層はSnowflakeによってプロビジョンされたクラウドインスタンスを実行する部分です。サービス層では、認証、インフラ管理、メタデータ管理、クエリのコンパイル・最適化、アクセス制御などの鍵となる複数のサービスを集約した層としての機能を持ちます。
Snowflakeを導入・利用するメリット
ここまでSnowflakeのコンセプトや特徴について説明してきましたが、実際にSnowflakeを導入するメリットはどこにあるのでしょうか。
Snowflake導入の主なメリットは以下の3つであると考えられます。
- 高速なデータ処理と従量課金方式
- 仮想ウェアハウス作成による同時実行
- データおよび権限管理
それぞれについて説明していきます。
高速なデータ処理と従量課金方式
Snowflakeは独自のSQLデータベースエンジンによって高速なデータ処理を実現しています。その速度は業界最速といわれているGoogle BigQueryに匹敵、もしくはそれを超える勢いといわれています。細かいパラメータや、パーティションキー、ソートキーなどの設定をすることなくSnowflake側でチューニングしてくれるため、データサイエンティストはチューニングをほとんど意識することなく分析や集計業務に集中することができます。
また、料金についてはBigQueryなどと同様に従量課金方式です。他サービスとの価格比較については各所で議論されているものの、大量のデータ処理を行うユーザにおいてはSnowflakeの方が安くつくという見方が多いようです。
仮想ウェアハウス作成による同時実行
Snowflakeではデータを処理する際に仮想ウェアハウス(Virtual Warehouse)と呼ばれる複数の独立した計算資源によってデータ処理を実施します。この独特なアーキテクチャによって、同一のデータソースに対して複数ユーザから同時にデータ処理のクエリを投げて処理することができます。これによって複数のクエリデマンドによる遅延などが発生せず、結果としてデータ処理が高速になるというメリットもあります。
副次的にはデータが仮想化されていることによって参照しているデータに変更が加えられないという点もあり、分析者は安心して分析業務を進めることができます。
データ・インフラおよび権限管理
最後に、Snowflakeはデータやインフラの管理を完全にサービス側に任せることができるというメリットがあります。Snowflakeはハードウェアはもちろんのこと、ソフトウェア自体も保持しない完全なSaaSであり、インフラの管理やソフトウェアなどのアップデートなどは当然不要です。
権限管理についても分析者目線で嬉しい機能を持っています。分析者は新たに作成したデータなどをWebUI上から必要なロールやユーザに対して権限付与をすることができます。これによって、従来多くの企業でとっていた「インフラ担当者のみがストレージの権限管理をしている」状態から一部脱却し、分析側で暫定的に加工したデータを特定の人のみに公開するなどといった立ち回りが可能になります。