Snowflake key concepts and architecture¶
Snowflake is powered by an advanced data platform that is provided to you as a self-managed service. Snowflake's data platform brings together data storage, processing, and analytic solutions that are faster, easier to use, and far more flexible than traditional offerings.
Snowflake combines a completely new SQL query engine with an innovative architecture that is natively designed for the cloud. It offers full enterprise analytic database functionality, and unique features and capabilities.
Data platform as a self-managed service¶
自己管理によるサービス として、Snowflakeには、次の利点があります。
There is no hardware (virtual or physical) for you to select, install, configure, or manage.
There is virtually no software for you to install, configure, or manage.
継続的なメンテナンス、管理、アップグレード、およびチューニングは、Snowflakeによって処理されます。
Snowflakeは、パブリッククラウドインフラストラクチャを使用して、仮想コンピューティングインスタンスと永続データストレージをホストします。Snowflakeがソフトウェアの更新とインフラストラクチャを管理するため、ユーザーがする必要はありません。オンプレミスまたはホストのいずれであっても、ローカルまたはプライベートクラウドインフラストラクチャ上でSnowflakeをインストールして実行することはできません。
Snowflake architecture¶
Snowflake's architecture is a hybrid of traditional shared-disk and shared-nothing database architectures. Similar to shared-disk architectures, Snowflake uses a central data repository for persisted data that is accessible from all compute nodes in the platform. But similar to shared-nothing architectures, Snowflake processes queries using massively parallel processing (MPP) compute clusters, where each node in the cluster stores a portion of the entire data set locally. This hybrid architecture, which is shown in the following diagram, offers the data management simplicity of a shared-disk architecture, but with the performance and scale-out benefits of a shared-nothing architecture:
Snowflake's unique architecture has the following key layers:
Database storage¶
Snowflakeは、次の種類のデータをサポートしています。
構造化データ --- テーブルの行や列など --- 厳密な表形式スキーマに従います。
半構造化データ --- JSON ファイルまたは XML ファイルなど --- 柔軟なスキーマを持ちます。
非構造化データ --- ドキュメント、画像、音声ファイルなど --- 固有のスキーマはありません。
Snowflakeは、次のテーブル型を含む、データストレージ用の複数の型のテーブルをサポートしています。
Snowflake tables¶
When data is loaded into a Snowflake table, Snowflake reorganizes that data into its internally optimized, compressed, columnar format. Snowflake stores this optimized data in cloud storage. Snowflake tables are ideal for data warehouses.
Snowflakeは、組織、ファイルサイズ、構造、圧縮、メタデータ、統計など、このデータの保存方法のすべての側面を管理します。Snowflakeテーブル内のすべてのデータは、連続したストレージ単位である マイクロパーティション に自動的に分割されます。マイクロパーティションは効率を向上させ、その他の利点を提供します。
Snowflakeテーブルを使用して、構造化データと半構造化データを格納できます。非構造化データの場合は FILE データ型 も使用できます。
For more information about Snowflake tables, see Snowflakeテーブル構造について.
Apache Iceberg™ テーブル¶
Snowflakeの Apache Iceberg™ テーブルは、一般的なSnowflakeテーブルのパフォーマンスとクエリセマンティクスに、管理する外部クラウドストレージを組み合わせたものです。Snowflakeに保存できない、または保存しないことを選択した既存のデータレイクおよびデータレイクハウスに最適です。
Icebergテーブルはデータとメタデータファイルを外部クラウドストレージ(例:Amazon S3、Google Cloud Storage、またはMicrosoft Azure Storage)に保存します。外部ストレージはSnowflakeの一部ではありません。
Icebergテーブルを使用して、構造化データと半構造化データを格納できます。
For more information, see Apache Iceberg™ テーブル.
ハイブリッドテーブル¶
ハイブリッドテーブルは、インデックスベースのランダムな読み取りと書き込みを使用することにより、低レイテンシと高スループットに最適化されています。ハイブリッドテーブルは、行ロックをサポートし、トランザクションワークロードにとって重要な一意の制約と参照整合性制約を適用します。ハイブリッドテーブルを他のSnowflakeテーブルや機能と共に使用することで、トランザクションデータと分析データを単一のプラットフォームに統合する Unistoreワークロード を実現できます。
ハイブリッドテーブルを使用して、構造化データと半構造化データを格納できます。
For more information, see ハイブリッドテーブル.
コンピュート¶
仮想ウェアハウスは、Snowflakeのコンピューティングリソースのクラスターです。仮想ウェアハウスは SQL ステートメントを処理し、 Snowpark を使用して、Java、Python、Scalaなどの言語でコードを実行します。Spark用Snowpark Connect を使用して、仮想ウェアハウスでApache Spark™ワークロードを実行することもできます。
Each virtual warehouse is an independent compute cluster that doesn't share compute resources with other virtual warehouses. As a result, each virtual warehouse has no effect on the performance of other virtual warehouses.
詳細については、 仮想ウェアハウス をご参照ください。
Cloud services¶
The cloud services layer is a collection of services that coordinate activities across Snowflake. These services tie together all of the different components of Snowflake in order to process user requests, from sign-in to query dispatch. The cloud services layer also runs on compute instances that are provisioned by Snowflake from the cloud provider.
Services managed in this layer include the following:
ワークロード向けの統合機能¶
異なるシステムにデータを移動して異なるチームが特定の操作やタスクを完了できるようにする代わりに、統合された機能セットを使用してすべてのワークロードをデータに直接持ち込むことができます。
これらの機能は、次のデータ統合および開発の幅広い領域をサポートしています。
データエンジニアリング¶
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にコードを変換できます。
For more information, see データのロードの概要.
分析¶
Snowflakeを使用すると、需要に基づいて動的にワークロードをスケーリングし、構造化、半構造化、非構造化データなどのさまざまな型のデータにアクセスし、データを簡単に共有できます。これらの機能により、Snowflakeに保存されたデータを分析して、ビジネスインテリジェンスや予測モデリングなどの分析ユースケースのために有意義な洞察、パターン、傾向を抽出することができます。
Snowflakeは、次のオプションを含む、データを分析するためのいくつかの方法を提供します。
システム関数および SQL 構成 --- 次のSnowflakeシステム関数および SQL 構成を使用して計算と統計分析を実行します。
集計関数 --- 関連する行のセットで計算を実行し、単一の値を返すことにより、データを要約します。
ウィンドウ関数 --- パーティション内の関連する行のセットで計算を実行し、実行合計や移動平均の計算など、各パーティションの行のサブセットに対してローリング演算を行います。
共通テーブル式( CTEs ) --- データ変換の複数のステップを実行する可能性のある複雑なクエリの判読性と再利用性を向上させます。
Snowflake Cortex AISQL --- OpenAI 、Anthropic、Meta、Mistral AI および DeepSeek から大規模言語モデル( LLMs )を使用して、テキストと画像に対して非構造化分析を実行します。
セマンティックビュー --- セマンティックビジネス概念をデータベースに直接格納して、ビジネスメトリックとモデルビジネスエンティティとその関係を定義します。
AI および ML¶
Snowflakeは、人工知能( AI )および機械学習( ML )機能の使用を簡素化し、Snowflakeデータを使用して AI および ML 機能のエンジニアリング、トレーニング、推論を実行できます。モデルは、安全な環境で最新のデータにアクセスできます。Snowflakeを使用すると、 AI および ML タスクのためにデータを別のプラットフォームに移動するためのコストや複雑さを回避できます。
Snowflakeは AI および ML 機能を2つの広範な機能スイートで提供します。
Snowflake Cortex --- LLMs を使用して非構造化データを理解し、自由形式の質問に答え、インテリジェントなサポートを提供する AI 機能 です。 AISQL 関数 は、シンプルな要約やクィック翻訳などのルーチンタスクを自動化することができます。
Snowflake ML --- 独自のモデルを構築するために使用できる機能。 ML 関数 は ML を使用してデータの自動予測やインサイトを提供します。Snowflake ML は ML 開発のための統合環境です。
For more information, see 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で以下の目標を達成できます。
リスト およびその他の コラボレーション機能 を使用して、Amazon Web Services( AWS )、Microsoft AzureおよびGoogle Cloudなど、さまざまなクラウドリージョンやプロバイダーでデータエコシステムを接続します。
一貫した クラウドとリージョン全体のセキュリティとガバナンスポリシー を適用します。
複製 を使用して、リージョン全体の災害復旧とビジネス継続性の能力を実現します。
詳細については、 Snowgrid をご参照ください。
Snowflakeへの接続¶
Snowflake supports multiple ways for you to connect to the service:
Snowsight, a web-based UI that you can use to access all aspects of managing and using Snowflake can be accessed.
Command-line clients that you can also use to access all aspects of managing and using Snowflake; for example, Snowflake CLI.
Snowflakeのリソースをプログラムで作成および管理するために使用できるネイティブ APIs (例: Snowflake Python APIs および Snowflake RESTAPIs )。
Snowflakeに接続するために他のアプリケーションが使用できる ドライバー (例: JDBC および ODBC )。
Native connectors that you can use to develop applications for connecting to Snowflake; for example, Apache Kafka and Apache Spark.
アプリケーションをSnowflakeに接続するために使用できる サードパーティテクノロジー (例:Informaticaなどの抽出、変換、ロード( ETL )ツールや ThoughtSpot などのビジネスインテリジェンス( BI )ツール)
詳細については、 Snowflakeへのログイン をご参照ください。