Snowflakeとは

Snowflakeは、ユーザーが必要に応じてバーチャルウェアハウスをいくつでもスピンアップし、各クエリのパフォーマンスの並列化と分離を行えるよう支援する、完全管理型のクラウドMPPデータウェアハウスです。AWSクラウド環境で稼動し、ストレージとコンピューティング機能を分離します。すなわち、多数のウェアハウスがすべて同じデータソースに同時にアクセスできる、極めて高い並列処理性を実現します。Snowflakeではユーザーはウェブブラウザやコマンドライン、分析プラットフォーム、SnowflakeのODBC、JDBCやその他サポートされているドライバを介してデータウェアハウスを操作することが可能です。

Snowflakeは2年におよぶ構想と開発期間を経て、データウェアハウスの専門家集団によって2014年に発売された、この市場ではやや新しい存在です。そのユニークなアーキテクチャについては、SIGMOD 2016の論文に詳述されています。

Snowflakeを選ぶ理由

パフォーマンスの柔軟性

Snowflakeはあらゆるワークロードに合わせて、さまざまな規模(準備なしに変更可能)で「仮想ウェアハウス」(MPPコンピューティングクラスタ)をわずか数分のうちに拡張したり縮小することができます。クエリは分離されるため、実行場所となる特定の仮想ウェアハウスのリソースを消費し、顧客は利用した処理時間に対してのみ料金を支払います。つまり、組織は実行するクエリの種類に応じて、コンピューティングリソースを円滑にスケールアップしてパーティション分割することが可能です。また、Snowflakeはデータ型についても柔軟性があり、半構造化データを保存して構造化データと並行してクエリを実行することもできます。

スケーラブル

Snowflakeは、データ容量に合わせてストレージのリソースを自動的に拡張するS3上に構築されています。すなわち、任意のストレージ上限に達することをユーザーは心配する必要がありません。Snowflakeのコンピューティングリソースは全面的にクラウドを基盤としているため、クエリの複雑さと件数が上がったときにパフォーマンスが低下しないよう、コンピューティングリソースを拡張することもできます。

突出した並列処理

Snowflakeでは、仮想ウェアハウスを誰でも無制限に作成して、異なるユーザーやツールからのクエリを分離することができます。Lookerや高並列処理機能を備えた他のアプリケーションを利用する企業の場合、マルチクラスタウェアハウスという機能もあります。これを利用すれば、ひとつの仮想ウェアハウスを複数のクラスタに簡単にスケーリングすることが可能です。

フルマネージド製品

Snowflakeは、プラットフォーム全体でデータベースクラスタおよびノードを管理するという概念をシンプルなものに変えました。これはつまり、最適化やデータ保護、インフラストラクチャの監視、暗号化といった(通常DevOpsリソースを必要とする)データベース管理を、ユーザーに代わってSnowflakeのプラットフォームが行うということです。

Snowflakeが実際に役立つ事例

高並列処理の要件を持つ組織

Snowflakeの仮想ウェアハウスは、独立したMPPコンピューティングクラスタとして稼働します。これはつまり、ひとつの仮想ウェアハウスをプロビジョニングしてETLプロセスを処理し、別のインスタンスでアドホックの分析クエリを実行できることになります。この場合、データを移動する必要は一切なく、ひとつの仮想ウェアハウスで実行されるクエリはもう一方の仮想ウェアハウスに何ら影響を及ぼしません。Snowflakeのマルチクラスタウェアハウス機能は、(新しいコンピューティングクラスタを追加することで)仮想ウェアハウスを自動的にスケールアップして、あらゆるレベルの並列処理においてパフォーマンスに一貫性を持たせることができます。

さらに、数百あるいは数千もの同時クエリをサポートする必要がある組み込み型アナリティクスの使用事例では、Snowflakeの仮想ウェアハウスは、マルチクラスタウェアハウスを介してそれだけ多くのユーザーに対応する効果的な手段となります。マルチクラスタウェアハウスは、並列処理に応じてコンピューティングクラスタの数を自動的に増やすことができます。

増え続ける極めて膨大なデータを抱える企業

Snowflakeは、正味のコストを最低限に抑えつつデータスタックを急速にスケーリングしたい組織にとって、優れたソリューションです。SnowflakeはストレージにS3を使用するため、ストレージの制限は基本的にありません。Snowflakeのアーキテクチャはストレージとコンピューティングを分離し、仮想ウェアハウスの数がいくつあっても同じデータにアクセスできます。また、データの保存にかかるコストはS3のコストに相当します。

半構造化データを扱う必要のあるアナリスト

Snowflakeは半構造化データを処理するための包括的な一連の機能を備えているほか、JSONやAvro、ORC、Parquet、XMLをはじめ、さまざまなデータ形式に対応します。半構造化データの保存とクエリに関して、Snowflakeは優れた柔軟性を発揮します。

Snowflakeによる半構造化データのサポートの好例として、複数のデータ型を<a href="https://docs.snowflake.net/manuals/sql-reference/data-types-semistructured.html#variant" target="_blank" rel="noreferer noopener">VARIANT</a>のデータ値として保存する機能が挙げられます。このデータ形式は、ユーザーに見えるデータ自体の構造を変更せずに複数のデータ型を保存することが可能です。

データの共有や収益化を望む企業

Snowflakeはデータ共有の機能を導入しました。これは、Snowflakeにデータを読み込んで参加者にアクセス権を与えることで、企業が自社のデータを顧客やパートナー、ベンダーと共有可能にする機能です。従来のデータ共有の方法とは異なり、データの再構築や移動、転送は必要ありません。データの提供者は、特別なデータベースオブジェクトを用いてデータ利用者(顧客/パートナー)にアクセス権を付与するだけです。新しいデータ利用者にアクセス権を付与する際、データ提供者は標準のSQLを使用して手間をかけずに同じデータを引き続き共有するか、あるいはそのデータのサブセットを共有することも可能です。

利用を決定する前に

料金

Snowflakeは数多くあるクラウドMPPデータウェアハウスと同様に、オンデマンドと処理能力に基づいた2つの料金オプションを用意しています。オンデマンドの料金オプションは従量課金モデルで、長期の契約などはありません。大幅な割引を求める組織については、処理能力ベースの料金オプションで処理能力の契約条件に基づいて割引料金を提供しています。

また、Snowflakeには4つのエディションがあり、それぞれが若干異なる機能とSLAを提供しています。各エディションの詳細は以下の通りです。

Snowflakeの料金の詳細は料金のページをご覧ください。

Snowflakeの料金体系は、デプロイのロケーションによって異なるためご注意ください。

Snowflakeのアーキテクチャ

Snowflakeは、特許取得済みのマルチクラスタ型の共有データアーキテクチャを採用しており、他のクラウドMPPプロバイダーとこのデータウェアハウスが大きく異なる理由はそこにあります。「マルチクラスタ」というのは、Snowflakeでは共通のストレージレイヤー上に、複数のコンピューティングエンジンや仮想ウェアハウスを個別に構築できることを意味します。

Snowflakeのアーキテクチャには2つの異なるレベルがあります。

  • データストレージ - クエリに関連するテーブルデータと一時データを保存します。
  • コンピュート - 個々のユーザーが構築可能なコンピューティングエンジン
  • サービス - セキュリティやメタデータ、最適化、リソース管理などを担当するSnowflakeの「頭脳」

データストレージ

Snowflakeは、共有データのリポジトリとしてAmazon S3を使用します。S3は使いやすく、可用性と耐久性に優れているのがその理由です。SnowflakeはS3を使って、極めて大きくコストのかかるクエリに関連するテーブルデータと一時データを保存します。一時データをS3に保持することで、「メモリ不足」や「ディスク容量不足」などのエラーを引き起こすことなく、こうした大きなクエリを実行することができます。

仮想ウェアハウス

クエリを処理するため、Snowflakeはユーザーが仮想ウェアハウス(VW)というAmazon EC2インスタンスのクラスタをプロビジョニングできるようにしています。

仮想ウェアハウスを構成する個々のEC2インスタンスは、ユーザーから抽象化されます。ユーザーは、それぞれの仮想ウェアハウスに含まれるインスタンスの数を決めることはできません。その代わり、サイズの異なる仮想ウェアハウスから選択することが可能です。

仮想ウェアハウスは純粋なコンピューティングの機構で、オンデマンドで作成や破棄、サイズ変更が可能です。実行中のクエリがないときは、Snowflakeはユーザーに仮想ウェアハウスを停止するよう推奨しています(料金がかからないようにするため)。このアーキテクチャにより、Snowflakeは弾力性すなわち必要に応じてクエリを拡張する機能を実現しています。

それぞれの仮想ウェアハウスは完全に独立したコンピューティング用クラスタとして機能し、お互いにクエリやリソースを共有することはありません。そのため、クエリを実行できるのはひとつの仮想ウェアハウスのみで、仮想ウェアハウス間でクエリを共有することはできません。その結果、仮想ウェアハウス全体でパフォーマンスが確実に分離されるようになります。Snowflakeが威力を発揮するのは、複数の仮想ウェアハウスが構築され異なるタスクに同時に利用されるときで、この場合それぞれで複数の並列クエリが実行されます。「マルチクラスタ型ウェアハウス」機能を利用すると、クエリを並列処理するために仮想ウェアハウスを自動的にスケーリングするよう構成することが可能です。

サービス

Snowflakeのクラウドサービスレイヤーは、Snowflakeプラットフォームの管理と運用をすべて担います。オンデマンドで構築したり停止するコンピューティングリソースとは対照的に、Snowflakeのサービスレイヤーは常時稼働し、複数の仮想ウェアハウスについて管理プロセスを実行する仕様になっています。

Snowflakeのサービスレイヤーの役割は、クエリの管理や最適化、セキュリティ、ユーザー管理、メタデータの管理など、さまざまなプロセスを実行することです。

データの種類

Snowflakeは、テキスト(区切り)ファイル、JSON、Avro、Parquet、XML、列形式から派生した表形式のデータと半構造化データをどちらも取り込むことができます。

他の多くのデータベースとは違って、Snowflakeではデータセットを読み込む前の事前処理、フラット化、非正規化の要件は大きな問題ではありません。Snowflakeは読み込み時に自動的にデータを列形式に変換するため、半構造化データではなおさら問題ではなくなります。Snowflakeに読み込まれたデータは自動的に圧縮されます。

推奨される最大データサイズ

Snowflakeはデータ量に合わせてシームレスに拡張するS3上に構築されており、ストレージとコンピューティングを分離するそのコンピューティングアーキテクチャも手伝って、保存および処理するデータの量にアーキテクチャ上の制限はありません。

Snowflakeの導入

Snowflakeの導入

クラウドストレージの抽象化により、Snowflakeへの移行は簡単です。SnowflakeはAWSのリソースを使用することから、Amazon S3のバケットにデータを保存する顧客は容易にSnowflakeへデータを読み込むことができます。

つまり、組織のデータがすでにS3上にある場合、SnowflakeでS3リポジトリを指定するだけでデータをSnowflakeに読み込め(所要時間は数分)、クエリを開始することが可能です。

新規データの処理

新しいデータをSnowflakeにアップロードする方法は以下の通りです。

  • ウェブインターフェースは、フラットファイルの小さなセットからテーブルにデータを迅速に読み込むための便利なツールで、データ量に制限はありません。
  • コマンドラインインターフェースのSnowSQLを使って、データを読み込むことができます。 
    • 外部のAmazon S3バケットから4段階のプロセス(ファイルのステージング、ファイルのリスティング、テーブルへのファイルのコピー、読み込んだデータの検証)を実行します。
    • S3にあるファイルは、CSVやJSONなどサポートされている形式であればどれでも問題ありません。

また、Snowflakeにはデータの並列アップロードや並列クエリの機能もあり、これらは複数のコンピューティングクラスタを実行するためのオプションとセットになっています。これにより、並列処理に関する従来の問題を一掃する高パフォーマンス環境を実現します。

ETLパイプラインの構築に関するサポートが必要な場合は、Snowflakeとの統合が可能なETLベンダーを利用しましょう。詳しくはこちらからLookerにお問い合わせください。

メンテナンス

Snowflakeには監視ツールのほか、2週間にわたってウェアハウスの読み込みを示すチャートが用意されています。このチャートを利用すれば、追加のウェアハウスを構築して待ち行列にあるクエリをそれに移すか、現在のウェアハウス変更してクラスタを追加し、より高度な並列処理に対応するか決めることができます。また、クエリの実行パスとプロセスを確認することも可能です。

データの保護と可用性

SnowflakeがストレージレイヤーとしてS3を使用するため、Snowflakeに保存されたデータも万全の復元力を有します。また、Snowflakeプラットフォームは、タイムトラベル(定義した期間内のすべての履歴データにアクセス)やフェイルセーフ(ハードウェアの障害やセキュリティ侵害の際にデータを確実に保護)といった機能を追加することで、S3の復元力をさらに高めています。ファイルおよびトラフィックネットワークは転送中や休止の際、デフォルトで自動的に完全に暗号化されます。さらに、SnowflakeはSOC 2、PCI、HIPAAに完全に準拠しています。

追加のセキュリティ要件がある顧客については、Snowflakeは専用のコンピューティングリソースと補足的なセキュリティ機能を用意しています。Snowflakeはセキュリティ情報ツールとイベント管理ツールをプラットフォームに統合し、不審なアクティビティをユーザーが発見して顧客に知らせることができるようにしています。

アナリティクスを快適に

ビジネスインテリジェンス、ビッグデータ分析、顧客の360°ビュー。
Lookerはお客様のどんなニーズにもお応えします。当社のデータエキスパートにご相談ください。

デモをリクエスト