【DWH】Snowflake の 特徴 と アーキテクチャ【ビッグデータ】


技術営業部の大原です。

本日はデータウェアハウス(DWH)の「Snowflake(スノーフレーク)」の特徴とアーキテクチャについて記載します。
有名なクラウド型のDWHだと、GCPであれば「Google BigQuery」や AWSだと「Amazon Redshift」がありますが、最近では この " Snowflake " も知名度が上がってきています。
また Snowflake では AWS や GCP・Azure のプラットフォームを指定して、それらのインフラ上で Snowflake のサービスを稼働させることできます。

※ 2020年9月時点での情報です。

Snowflake の 特徴

● 全てのデータを単一のソースで

Snowflakeでは、ほぼ無制限の低コストクラウドストレージを使用して、JSONやXMLを含むすべてのデータを効果的に管理できる、すぐにクエリ可能な単一のソースを作成します。また独自のプライベートデータ交換を介して、顧客・パートナーに共有データにアクセスし 提供することもできます。

● 完全なSQL互換 / マルチクラスター

ほぼ無制限で同時実行をおこなうマルチクラスターコンピューティングリソースで、無制限の同時ユーザー・クエリをサポートします。完全にANSI SQL互換・ネイティブでサポートされた半構造化データをSQLで直接クエリし、任意の分析ツール・機械学習ツールを活用することができます。

● ゼロに近いメンテナンス

計画的なダウンタイムなしの自動更新で、システム管理・メンテナンスを限りなくゼロにします。Snowflake の利用においても 1秒あたりの料金設定で 自動的に上下にスケーリングします。これにより、グローバル間でのデータアクセス・クロスクラウドでのデータ同期を可能とします。

Snowflake の アーキテクチャ

Snowflake アーキテクチャの特徴として、ストレージ・コンピューティング・クラウド サービスの各レイヤーを別々に使用した「3層設計」で構成されています。
コンピューティングリソースとストレージ リソースは物理的に分離されていますが、論理的に単一に統合されたデータプラットフォームシステムのなので、無停止のスケーリングを可能とするアーキテクチャになっています。

● サービス:

複数のアベイラビリティーゾーンで実行されるステートレスコンピューティングリソースで構成されています。
このレイヤーは、グローバル状態管理用の高可用性および分散型メタデータストアを提供し、データプルーニング・データ交換・クラウド間のデータレプリケーションなどのサービスを有効にします。

サービス層においては、以下のようなセキュリティおよび暗号化キー管理を提供し、全ての SQL・DML および DDL関数を有効にします。

・ユーザーセッションの認証
・管理の提供
・セキュリティ機能の適用
・クエリのコンパイルと最適化の実行
・すべてのトランザクションの調整

例えば、データのプルーニングを実行するために、サービス層はクエリを素早く完了するためにスキャンする必要があるマイクロパーティションを決定するためのクエリ・メタデータをコンパイルします。
これにより、クエリの完了に必要なデータのみがスキャンされるので、結果的にパフォーマンスが高くなります。

また、メタデータ自動処理は個別の統合サブシステムによって実行し、統計収集やその他のメタデータ操作がなされるので、ユーザーのコンピューティングリソースを必要としません。

● コンピュート:

計算レイヤーは Snowflake の基幹となる部分で、大量のデータを迅速かつ効率的に処理するように設計されたコンピューティングエンジンは、全てのデータ処理を実行します。

・Snowflake のデータプルーニングのアルゴリズムによって指示されるクエリを満たすために、ストレージ層から必要な最小データを取得する。
・Snowflake 固有の複数コンピューティングエンジンは、システム全体のトランザクション整合性と完全な ACID コンプライアンスで同じデータを同時に操作することで、
分離されたワークロードとして、常に一貫されたデータを読み取り操作(SELECT)で参照します。
(書き込み操作によって Reader がブロックされることはありません)

・データとクエリの結果をローカルにキャッシュし、パフォーマンスを大幅に向上させ、コストを削減します。
(キャッシュによるクエリ結果によるコンピューティング料金は発生しません)

● ストレージ:

ストレージレイヤーは、データ処理がおこなわれる際に、以下のような方法で実行されます。

・データをマイクロパーティションに分割し、データファイルごとに数十万のパーティションを作成
・メタデータ(タイムスタンプや最小 / 最大値など)を抽出して、効率的なクエリ処理を可能
・マイクロパーティションを圧縮して、ストレージとスペースのコストを節約
・セキュリティで保護されたキー階層を使用してデータを完全に暗号化

まとめ

Snowflake はクラウドプラットフォームのインフラを利用する前提のサービスで、
すでに AWS や GCP・Azure にはそれぞれ独自のDWHサービスが存在するため競合する部分もありますが、
Snowflake のデータクラウド専用のサービスなので用途に応じて使い分けてみるのも面白いです。


この記事をかいた人

About the author

大原 裕也

毎日Googleを巡回してます。