Snowflakeの重要な概念およびアーキテクチャ

Snowflakeは、自己管理によるサービスとして提供される高度なデータプラットフォームを利用しています。Snowflakeのデータプラットフォームは、従来の製品よりも高速で使いやすく、はるかに柔軟なデータストレージ、処理、および分析ソリューションをすべてもたらします。

Snowflakeは、まったく新しい SQL クエリエンジンと、クラウド用にネイティブに設計された革新的なアーキテクチャを組み合わせています。完全なエンタープライズ分析データベースの機能と、独自の機能を提供します。

自己管理によるサービスとしてのデータプラットフォーム

自己管理によるサービス として、Snowflakeには、次の利点があります。

  • ハードウェア(仮想または物理)の選択、インストール、構成、または管理は必要ありません。

  • インストール、構成、または管理するソフトウェアは事実上ありません。

  • 継続的なメンテナンス、管理、アップグレード、およびチューニングは、Snowflakeによって処理されます。

Snowflakeは、パブリッククラウドインフラストラクチャを使用して、仮想コンピューティングインスタンスと永続データストレージをホストします。Snowflakeがソフトウェアの更新とインフラストラクチャを管理するため、ユーザーがする必要はありません。オンプレミスまたはホストのいずれであっても、ローカルまたはプライベートクラウドインフラストラクチャ上でSnowflakeをインストールして実行することはできません。

Snowflakeアーキテクチャ

Snowflakeのアーキテクチャは、従来の共有ディスクデータベースアーキテクチャと非共有データベースアーキテクチャのハイブリッドです。共有ディスクアーキテクチャと同様に、Snowflakeは、データウェアハウス内のすべてのコンピュートノードからアクセス可能な、永続データ用の中央データリポジトリを使用します。ただし、シェアードナッシングアーキテクチャと同様に、Snowflakeは、クラスタ内の各ノードがデータセット全体の一部をローカルに格納する MPP (大規模並列処理)コンピュートクラスタを使用してクエリを処理します。次の図に示されているこのハイブリッドアーキテクチャは、共有ディスクアーキテクチャのデータ管理の簡易性に加えて、シェアードナッシングアーキテクチャのパフォーマンスとスケールアウトのメリットを備えています。

Snowflakeアーキテクチャの概要

Snowflakeの独自のアーキテクチャには、次の重要なレイヤーがあります。

データベースストレージ

Snowflakeは、次の種類のデータをサポートしています。

  • 構造化データ --- テーブルの行や列など --- 厳密な表形式スキーマに従います。

  • 半構造化データ --- JSON ファイルまたは XML ファイルなど --- 柔軟なスキーマを持ちます。

  • 非構造化データ --- ドキュメント、画像、音声ファイルなど --- 固有のスキーマはありません。

Snowflakeは、次のテーブル型を含む、データストレージ用の複数の型のテーブルをサポートしています。

Snowflakeテーブル

Snowflakeテーブルにデータがロードされると、Snowflakeはそのデータを内部の最適化された圧縮された列指向形式に再編成します。Snowflakeは、この最適化されたデータをクラウドストレージに保存します。Snowflakeテーブルはデータウェアハウスに最適です。

Snowflakeは、組織、ファイルサイズ、構造、圧縮、メタデータ、統計など、このデータの保存方法のすべての側面を管理します。Snowflakeテーブル内のすべてのデータは、連続したストレージ単位である マイクロパーティション に自動的に分割されます。マイクロパーティションは効率を向上させ、その他の利点を提供します。

Snowflakeテーブルを使用して、構造化データと半構造化データを格納できます。非構造化データの場合は FILE データ型 も使用できます。

Snowflakeテーブルの詳細については、 Snowflakeテーブル構造について をご参照ください。

Apache Iceberg™ テーブル

Snowflakeの Apache Iceberg™ テーブルは、一般的なSnowflakeテーブルのパフォーマンスとクエリセマンティクスに、管理する外部クラウドストレージを組み合わせたものです。Snowflakeに保存できない、または保存しないことを選択した既存のデータレイクおよびデータレイクハウスに最適です。

Icebergテーブルはデータとメタデータファイルを外部クラウドストレージ(例:Amazon S3、Google Cloud Storage、またはMicrosoft Azure Storage)に保存します。外部ストレージはSnowflakeの一部ではありません。

Icebergテーブルを使用して、構造化データと半構造化データを格納できます。

詳細については、 Apache Iceberg™ テーブル をご参照ください。

ハイブリッドテーブル

ハイブリッドテーブルは、インデックスベースのランダムな読み取りと書き込みを使用することにより、低レイテンシと高スループットに最適化されています。ハイブリッドテーブルは、行ロックをサポートし、トランザクションワークロードにとって重要な一意の制約と参照整合性制約を適用します。ハイブリッドテーブルを他のSnowflakeテーブルや機能と共に使用することで、トランザクションデータと分析データを単一のプラットフォームに統合する Unistoreワークロード を実現できます。

ハイブリッドテーブルを使用して、構造化データと半構造化データを格納できます。

詳細については、 ハイブリッドテーブル をご参照ください。

コンピュート

仮想ウェアハウスは、Snowflakeのコンピューティングリソースのクラスターです。仮想ウェアハウスは SQL ステートメントを処理し、 Snowpark を使用して、Java、Python、Scalaなどの言語でコードを実行します。Spark用Snowpark Connect を使用して、仮想ウェアハウスでApache Spark™ワークロードを実行することもできます。

各仮想ウェアハウスは、コンピューティングリソースを他の仮想ウェアハウスと共有しない独立したコンピュートクラスタです。その結果、各仮想ウェアハウスは他の仮想ウェアハウスのパフォーマンスに影響を与えません。

詳細については、 仮想ウェアハウス をご参照ください。

クラウドサービス

クラウドサービスレイヤーは、Snowflake全体のアクティビティを調整するサービスのコレクションです。これらのサービスは、サインインからクエリディスパッチまでのユーザーリクエストを処理するために、Snowflakeのさまざまなコンポーネントをすべて結び付けます。クラウドサービスレイヤーは、クラウドプロバイダーからSnowflakeによってプロビジョニングされた、コンピューティングインスタンスでも実行されます。

このレイヤーで管理されるサービスは次のとおりです。

ワークロード向けの統合機能

異なるシステムにデータを移動して異なるチームが特定の操作やタスクを完了できるようにする代わりに、統合された機能セットを使用してすべてのワークロードをデータに直接持ち込むことができます。

これらの機能は、次のデータ統合および開発の幅広い領域をサポートしています。

データエンジニアリング

Snowflakeはストレージとコンピューティングを分離し、インフラストラクチャ管理やパフォーマンスチューニングなど、データエンジニアリングの従来の課題を簡素化します。データエンジニアは、データの取り込み、変換、配信を行うパイプラインの実装に集中できます。

Snowflakeは、次のオプションを含む、データを取り込むためのいくつかの方法を提供します。

  • COPY INTO <テーブル> コマンド --- ファイルからテーブルにデータをロードします。

  • Snowpipe --- ファイルがステージで利用可能になり次第、ファイルからデータをロードします。

  • Snowpipe Streaming --- Snowflake SDKs または REST API を使用して、行レベルのデータを継続的に低レイテンシでロードします。ファイルからデータを読み込む代わりに、SnowflakeテーブルおよびSnowflakeが管理するIcebergテーブルに直接ロードします。

  • Openflowコネクタ --- Microsoft SharepointやGoogle DriveなどのApache NiFi に構築されたコネクタを使用して、特定のソースからデータを取り込みます。

  • Snowflakeコネクタ --- 外部アプリケーションやシステムから接続し、Snowflakeにデータをストリーミングします。

Snowflakeは、次のオプションを含む、データを変換するいくつかの方法も提供します。

  • 動的テーブル --- ターゲットの鮮度とデータ変換を実行するクエリに基づいて、自動的にリフレッシュするテーブルを定義します。

  • ストリームおよびタスク --- ストリームでベースオブジェクトに加えられた変更をキャプチャし、データ変換を実行するタスクを定義します。

  • Snowpark---Python、Java、Scalaなどのプログラミング言語を使用して、より複雑な変換を実行します。

  • dbt--- オープンソースのデータ変換ツールとフレームワークを使用して、 SQL 変換を定義、テスト、デプロイします。

さらに、 SnowConvert AI はデータの取り込みと変換ができ、Snowpark Migration Accelerator は、さまざまなプラットフォームからSnowflakeにコードを変換できます。

詳細については、 データのロードの概要 をご参照ください。

分析

Snowflakeを使用すると、需要に基づいて動的にワークロードをスケーリングし、構造化、半構造化、非構造化データなどのさまざまな型のデータにアクセスし、データを簡単に共有できます。これらの機能により、Snowflakeに保存されたデータを分析して、ビジネスインテリジェンスや予測モデリングなどの分析ユースケースのために有意義な洞察、パターン、傾向を抽出することができます。

Snowflakeは、次のオプションを含む、データを分析するためのいくつかの方法を提供します。

  • システム関数および SQL 構成 --- 次のSnowflakeシステム関数および SQL 構成を使用して計算と統計分析を実行します。

    • 集計関数 --- 関連する行のセットで計算を実行し、単一の値を返すことにより、データを要約します。

    • ウィンドウ関数 --- パーティション内の関連する行のセットで計算を実行し、実行合計や移動平均の計算など、各パーティションの行のサブセットに対してローリング演算を行います。

    • 共通テーブル式( CTEs ) --- データ変換の複数のステップを実行する可能性のある複雑なクエリの判読性と再利用性を向上させます。

  • Cortex AI Functions --- Run unstructured analytics on text and images with large language models (LLMs) from OpenAI, Anthropic, Meta, Mistral AI, and DeepSeek.

  • セマンティックビュー --- セマンティックビジネス概念をデータベースに直接格納して、ビジネスメトリックとモデルビジネスエンティティとその関係を定義します。

AI および ML

Snowflakeは、人工知能( AI )および機械学習( ML )機能の使用を簡素化し、Snowflakeデータを使用して AI および ML 機能のエンジニアリング、トレーニング、推論を実行できます。モデルは、安全な環境で最新のデータにアクセスできます。Snowflakeを使用すると、 AI および ML タスクのためにデータを別のプラットフォームに移動するためのコストや複雑さを回避できます。

Snowflakeは AI および ML 機能を2つの広範な機能スイートで提供します。

  • Snowflake Cortex --- LLMs を使用して非構造化データを理解し、自由形式の質問に答え、インテリジェントなサポートを提供する AI 機能 です。 Cortex AI 関数 は、シンプルな要約やクィック翻訳などのルーチンタスクを自動化することができます。

  • Snowflake ML --- 独自のモデルを構築するために使用できる機能。 ML 関数 は ML を使用してデータの自動予測やインサイトを提供します。Snowflake ML は ML 開発のための統合環境です。

詳細については、 Snowflake AI と ML をご参照ください。

アプリケーションおよびコラボレーション

Snowflakeは、アプリケーションを構築し、チーム、パートナー、カスタマーと共有する多くの方法を提供します。Snowflakeを使用してデータを共有すると、データへのアクセスを制御し、さまざまな場所でデータを同期し続けるという問題を回避できます。

次のリストは、Snowflakeでアプリケーションを構築、デプロイ、管理するために使用できるツールとサービスの一部を示しています。

  • Streamlit --- オープンソースのPythonライブラリを使用して、 ML やデータサイエンスのためのインタラクティブなユーザーインターフェース( UI )を持つカスタムWebアプリを作成、共有できます。

  • Snowpark Container Services --- Snowflake内から直接コンテナ化されたアプリケーションをデプロイ、管理、スケーリングします。

  • Snowflake Native App Framework --- データと関連するビジネスロジックを他のSnowflakeアカウントと共有して、他のSnowflake機能の能力を拡張するアプリケーションを構築します。アプリケーションのビジネスロジックには、Streamlitアプリ、ストアドプロシージャ、そしてSnowpark API 、 JavaScript 、 SQL を使用して記述された関数が含まれている可能性があります。Snowflake Native Appは、Snowpark Container Servicesでコンテナーワークロードを実行することもできます。

Snowflakeには、次の種類のコラボレーションのサポートが含まれています。

  • Secure Data Sharing --- アカウントのデータベースで選択したオブジェクトを他のSnowflakeアカウントと共有します。

  • リスト --- データやその他の情報を他のSnowflakeユーザーに提供したり、Snowflakeプロバイダーが共有するデータやその他の情報にアクセスしたりできます。プライベートで、または Snowflake Marketplace 上でリストを探索、アクセスし、コンシューマーに提供できます。

  • データクリーンルーム --- 共有データに対してどのような分析を実行できるかを定義することで、コンシューマーはデータに無制限にアクセスすることなく、データからインサイトを得ることができます。

Snowgrid

SnowgridはSnowflakeのクロスリージョン、クロスクラウドテクノロジーレイヤーです。Snowgridで以下の目標を達成できます。

詳細については、 Snowgrid をご参照ください。

Snowflakeへの接続

Snowflakeは、サービスに接続する複数の方法をサポートしています。

  • Snowsight (Snowflakeの管理と使用のすべての側面にアクセスするために使用できるウェブベースの UI )にアクセスできます。

  • Snowflakeの管理と使用のすべての側面にアクセスするために使用することもできるコマンドラインクライアント(例: Snowflake CLI )。

  • Snowflakeのリソースをプログラムで作成および管理するために使用できるネイティブ APIs (例: Snowflake Python APIs および Snowflake RESTAPIs )。

  • Snowflakeに接続するために他のアプリケーションが使用できる ドライバー (例: JDBC および ODBC )。

  • Snowflakeに接続するためのアプリケーションを開発するために使用できるネイティブ コネクタ (例:Apache KafkaやApache Spark)。

  • アプリケーションをSnowflakeに接続するために使用できる サードパーティテクノロジー (例:Informaticaなどの抽出、変換、ロード( ETL )ツールや ThoughtSpot などのビジネスインテリジェンス( BI )ツール)

詳細については、 Sign in to Snowflake をご参照ください。