Snowpipe Streaming: 高性能アーキテクチャ¶
Snowpipeストリーミングのハイパフォーマンスアーキテクチャは、ほぼリアルタイムのインサイトを必要とするデータ集約型の最新組織向けに設計されています。この次世代アーキテクチャは、Snowflakeへのリアルタイムインジェストのスループット、効率性、柔軟性を大幅に向上させます。
従来のアーキテクチャについては、Snowpipe ストリーミング - クラシックアーキテクチャ をご参照ください。従来の SDK と高性能 SDK の違いについては、従来の SDK と高性能 SDK との比較 をご参照ください。
ソフトウェア要件¶
Java
Java 11以降が必要です。
- SDK Mavenリポジトリ: snowpipe-streaming Java SDK 
- API リファレンス:Java SDK リファレンス 
Python
Pythonバージョン3.9以降が必要です。
- SDK PyPI リポジトリ: snowpipe-streaming Python SDK 
- API リファレンス:Python SDK リファレンス 
主要な機能¶
- スループットとレイテンシ: - 高いスループット:1テーブルあたり最大10 GB/sのインジェスト速度をサポートするように設計されています。 
- ほぼリアルタイムのインサイト:エンド・ツー・エンドのインジェストからクエリまでのレイテンシを5~10秒以内に実現。 
 
- 請求: - 簡素化された透明性の高いスループットベースの請求。詳細については、 Snowpipeストリーミング・ハイパフォーマンス・アーキテクチャ: コストを理解する をご参照ください。 
 
- 柔軟なインジェスチョン: - Java SDK およびPython SDK:クライアント側のパフォーマンスを向上させ、リソースの使用量を削減するためのRustベースのクライアントコアを備えた、新しい :code:`snowpipe-streaming`SDKを利用しています。 
- REST API:直接的なインジェスチョンパスを提供し、軽量なワークロードの統合、IoT デバイスデータ、およびエッジのデプロイメントを簡素化します。 
 - 注釈 - RESTAPI でSnowpipe Streaming SDK を始めて、パフォーマンスと使用開始のエクスペリエンスの向上を実感することをお勧めします。 
- データ処理の最適化: - インフライト変換: PIPE オブジェクト内の COPY コマンド構文を使用して、インジェスチョン中のデータクレンジングとリシェーピングをサポートします。 
- チャンネルの可視性の向上:主に、Snowsightの チャンネル履歴 の表示と、新しい - GET_CHANNEL_STATUSAPI を通して、インジェストのステータスを把握できるようになりました。
 
このアーキテクチャは、以下のような場合にお勧めします。
- 大容量ストリーミングワークロードの一貫したインジェスチョン。 
- 一刻を争う意思決定のためのリアルタイム分析とダッシュボードを提供します。 
- IoT デバイスやエッジデプロイメントからのデータの効率的な統合。 
- 透明性が高く、予測可能な、スループットベースの価格設定をストリーミング・インジェスチョンに求める企業。 
新しいコンセプト PIPE オブジェクト¶
チャンネルやオフセットトークンなどのコアコンセプトをSnowpipe Streaming Classicから継承しつつ、このアーキテクチャでは中心的なコンポーネントとして PIPE オブジェクトを導入しています。
PIPE オブジェクトは、すべての取り込まれたストリーミングデータのエントリーポイントおよび定義レイヤーとして機能する名前付き Snowflake オブジェクトです。プロバイダーは以下の通り:
- データ処理定義:変換やスキーママッピングのためのサーバー側のバッファリングなど、ターゲットテーブルにコミットされる前のストリーミングデータの処理方法を定義します。 
- 変換の有効化:COPY コマンド変換構文を組み込むことで、フライト中のデータ操作(例: フィルタリング、列の並べ替え、単純式)を可能にします。 
- テーブル機能のサポート:定義されたクラスタリングキー、DEFAULT 値列、および AUTOINCREMENT (または IDENTITY)列を使用して、テーブルへのインジェスチョンを処理します。 
- スキーマ管理:受信ストリーミングデータの予想されるスキーマと、ターゲットテーブル列へのマッピングの定義に役立ち、サーバー側のスキーマ検証を可能にします。   
インジェスチョン中のデータの事前クラスタリング¶
Snowpipe Streamingは、インジェスチョン中にインフライトデータをクラスターできるため、ターゲットテーブルでのクエリパフォーマンスが向上します。この機能は、インジェスチョン中にデータがコミットされる前に直接ソートします。この方法でデータを並べ替えると、より高速なクエリのために組織が最適化されます。
事前クラスタリングを活用するには、ターゲットテーブルにクラスタリングキーが定義されている必要があります。この機能を有効にするには、Snowpipe Streamingパイプを作成または交換する際に、 COPYINTO ステートメント内のパラメーター CLUSTER_AT_INGEST_TIME を TRUE に設定します。
詳細については、 :ref:`CLUSTER_AT_INGEST_TIME <label-copy_into_table_copyoptions> ` をご参照ください。この機能はハイ パフォーマンス アーキテクチャでのみ利用可能です。
重要
事前クラスタリング機能を使用する場合は、宛先テーブルで自動クラスタリング機能を無効にしていないことを確認してください。自動クラスタリングを無効にすると、時間の経過とともにクエリのパフォーマンスが低下する可能性があります。
Snowpipe Streaming Classicとの違い¶
クラシック・アーキテクチャに慣れ親しんだユーザーにとって、ハイパフォーマンス・アーキテクチャは以下のような変更をもたらします。
- 新しい SDK と APIs: 新しい - snowpipe-streamingSDK (Java SDK と REST API) が必要で、移行のためにクライアントコードの更新が必要です。
- PIPE オブジェクトの要件: データのインジェスチョン、構成(変換など)、スキーマ定義はすべてサーバー側の PIPE オブジェクトで管理され、クラシックのクライアント主導の構成から移行します。 
- チャンネルの関連付け:クライアントアプリケーションは、ターゲットテーブルに対して直接ではなく、特定の PIPE オブジェクトに対してチャンネルタブを開きます。 
- スキーマ検証:主にクライアントサイド(Classic SDK)から、 PIPE オブジェクトに基づく Snowflake によるサーバーサイドの実施に移行。 
- 移行要件:新しい SDK 用にクライアントアプリケーションコードを修正し、Snowflake で PIPE オブジェクトを定義する必要があります。