Snowflakeのアーキテクチャの構成要素・機能・特徴とは?(vol.13)

  • 公開日:2023年08月14日(月)

Snowflakeは、クラウド用にネイティブに設計された革新的なアーキテクチャが組み合わさったデータプラットフォームです。

本ブログ記事では、Snowflakeのアーキテクチャの構成要素(レイヤー)と各レイヤーの主要な機能・特徴について解説します。

Snowflakeのアーキテクチャの構成要素(レイヤー)

Snowflakeのアーキテクチャは、3つの重要なレイヤーで構成されています。

  1. データベースストレージ(ストレージ層)
    Snowflakeのストレージ層は、データの物理的な格納を担当します。ここでは、データはマイクロパーティションと呼ばれる小さなサイズに分割され、Amazon S3(Simple Storage Service)などのSnowflakeを構築する際に選択した、クラウドサービスのストレージに格納されます。
  2. クエリ処理(コンピューティング層)
    Snowflakeのコンピューティング層は、クエリの実行やデータ処理を担当します。コンピューティングリソースは、Snowflakeの仮想ウェアハウス(Virtual Warehouse)と呼ばれる単位で提供されます。仮想ウェアハウスは、コンピューティングリソースを動的にスケーリングすることができるため、負荷に応じて適切なリソースを割り当てることができます。
    また、コンピューティングリソースは独立しており、複数の仮想ウェアハウスが同時に実行されても互いに影響を及ぼすことはありません。
  3. クラウドサービス
    クエリの実行を最適化するための重要な要素が含まれています。Snowflakeは、クエリを実行する際に自動的に最適化を行い、クエリパフォーマンスを向上させることができます。
    例えば、自動メタデータ管理、データのスキャンの最適化、クエリの並列実行、キャッシングなどがあります。

Snowflakeは、データを保管する①ストレージ層と、クエリ処理を実行する②コンピュート層(仮想ウェアハウス)がそれぞれ分離独立しているため、データは集約して一箇所で保管しつつ、複数の処理を同時に実行可能となります。また、全体のアクティビティを調整する③クラウドサービスがパフォーマンスを向上してくれます。

Snowflakeのアーキテクチャ①データベースストレージの特徴

Snowflakeのデータベースストレージ(ストレージ層)の主な機能・特徴は次の通りです。

  1. データの分離とスケーラビリティ
    Snowflakeは、ストレージと計算処理を分離しています。データはスケーラブルなストレージに格納されます。このアーキテクチャにより、ストレージの容量と計算リソースを独立してスケーリングできるため、データの増加に応じて柔軟に対応できます。
  2. クエリパフォーマンスの最適化
    Snowflakeのストレージ層は、クエリのパフォーマンスを最適化するために、データを圧縮し、列指向ストレージを使用します。これにより、データのスキャン速度が向上し、クエリの実行が高速化されます。
  3. ACID準拠のトランザクションサポート
    SnowflakeはACID(Atomicity / Consistency / Isolation / Durability)準拠のトランザクションをサポートしています。これにより、データの整合性と信頼性が確保され、データの正確性が保たれます。
  4. 自動データ分散
    Snowflakeは、データを自動的に複数のストレージノードに分散します。これにより、データへのアクセスが並列化され、高い並行性とスケーラビリティが実現されます。
  5. ストレージの堅牢性とバックアップ
    Snowflakeは、データの耐障害性を確保するために、ストレージの冗長性と自動バックアップを提供します。データは複数のデータセンターに複製され、万が一の障害に備えます。
  6. セキュリティとアクセス制御
    Snowflakeのストレージ層は、高度なセキュリティ対策を提供しています。データは暗号化され、アクセス制御は厳密に管理されます。ロールベースのアクセス制御により、データへのアクセス権限を細かく設定できます。

Snowflakeのアーキテクチャ②クエリ処理の特徴

Snowflakeのクエリ処理(コンピューティング層)の主な機能・特徴は次の通りです。

  1. 仮想ウェアハウス
    Snowflakeのコンピューティング層は、仮想的なウェアハウスとして機能します。これにより、ユーザーは必要に応じて異なるデータベースやスキーマを作成し、データを分離して管理できます。複数のビジネスユースケースに対応することが容易になります。
  2. 需要に応じた計算リソース
    Snowflakeは、クエリ実行時に必要な計算リソースを自動的に割り当てるため、スケーリングが可能です。必要に応じてコンピューティングリソースを拡張し、クエリの高速化やパフォーマンス向上を図ることができます。同様に、負荷が減少した場合には自動的にリソースを縮小してコストを削減します。
  3. マルチクラウドサポート
    Snowflakeは複数のクラウドプロバイダー(AWS、Azure、Google Cloud)をサポートしており、クラウドプロバイダーの選択によらずにコンピューティングリソースを利用できます。これにより、ユーザーは、自由なクラウド戦略を実現できます。
  4. SQL互換性
    Snowflakeのコンピューティング層は、標準SQLをサポートしています。これにより、既存のSQLスキルを活用してクエリを実行し、データの操作や分析を行うことができます。SQLの互換性により、簡単に移行して新しいデータウェアハウス環境を構築できます。
  5. ジョブスケジューリングとモニタリング
    Snowflakeは、ジョブスケジューリングとモニタリング機能を提供しています。これにより、バックグラウンドで実行されるタスクやETL(Extract, Transform, Load)処理を自動化し、ジョブの進行状況を監視することができます。
  6. セキュリティとアクセス制御
    コンピューティング層でも、Snowflakeは高度なセキュリティ対策を提供しています。データの暗号化、ロールベースのアクセス制御、シングルサインオン(SSO)など、データへのアクセスを厳格に管理します。

Snowflakeのアーキテクチャ③クラウドサービスの特徴

Snowflakeのクラウドサービスレイヤーの主な機能・特徴は次の通りです。

  1. マルチテナントアーキテクチャ
    Snowflakeはマルチテナントアーキテクチャを採用しています。これは、複数の顧客(テナント)が同じインフラストラクチャを共有して利用することを意味します。各テナントのデータは論理的に分離されており、高いセキュリティとデータプライバシーが確保されています。
  2. クエリ最適化とパフォーマンス
    クラウドサービスレイヤーは、クエリの実行において最適化を行う重要な機能を備えています。クエリプランナーは、クエリの処理に最適な方法を決定し、計算リソースの効率的な使用を支援します。これにより、高速かつパフォーマンスの良いクエリ実行が可能となります。
  3. セキュリティとアクセス管理
    Snowflakeは、クラウドサービスレイヤーで高度なセキュリティ対策を提供しています。データの暗号化、ロールベースのアクセス制御、マルチファクタ認証(MFA)など、データへのアクセスを厳格に管理します。また、データの転送と保存においてもセキュリティが確保されています。
  4. バックアップと復元
    クラウドサービスレイヤーは、データの定期的な自動バックアップと復元をサポートしています。これにより、データの安全性と信頼性が確保されます。データの復元は、誤った操作やデータの損失時に非常に役立ちます。

まとめ

さてここまで、Snowflakeのアーキテクチャの構成要素(レイヤー)と各レイヤーの主要な機能・特徴について解説して参りました。アーキテクチャとしての特徴をご理解いただいたうえで、Snowflakeをご活用いただければと思います。

弊社電通総研は、データマネジメントの専門家として、お客様のデータ一元管理やデータ活用における戦略策定、データドリブン経営の実現に向けた真の“使える”データマネジメント基盤構築のご支援をしております。
データ分析基盤の豊富な構築実績に基づくノウハウを体系化したサービスをご提供しておりますので、データ活用でお悩みの際は、是非、電通総研までお声掛けください。

◆ お問い合わせページ:https://itsol.dentsusoken.com/snowflake/inquiry/

*本記事は、2023年8月1日時点の情報を基に作成しています。
 製品・サービスに関する詳しいお問い合わせは、電通総研のWebサイトからお問い合わせください。