Snowpipe Streaming: 高性能アーキテクチャ¶
Snowpipeストリーミングのハイパフォーマンスアーキテクチャは、ほぼリアルタイムのインサイトを必要とするデータ集約型の最新組織向けに設計されています。この次世代アーキテクチャは、Snowflakeへのリアルタイムインジェストのスループット、効率性、柔軟性を大幅に向上させます。
クラシック建築に関する情報は、 Snowpipe ストリーミング - クラシックアーキテクチャ をご参照ください。クラシック SDK とハイパフォーマンス SDK の違いについては、 クラシック SDK とハイパフォーマンス SDK の比較 をご参照ください。
主要な機能¶
スループットとレイテンシ:
高いスループット:1テーブルあたり最大10 GB/sのインジェスト速度をサポートするように設計されています。
ほぼリアルタイムのインサイト:エンド・ツー・エンドのインジェストからクエリまでのレイテンシを5~10秒以内に実現。
請求:
簡素化された透明性の高いスループットベースの請求。詳細については、 Snowpipeストリーミング・ハイパフォーマンス・アーキテクチャ: コストを理解する をご参照ください。
柔軟なインジェスチョン:
Java SDK およびPython SDK:クライアント側のパフォーマンスを向上させ、リソースの使用量を削減するためのRustベースのクライアントコアを備えた、新しい :code:`snowpipe-streaming`SDKを利用しています。
REST API: 直接インジェストするパスを提供し、軽量ワークロード、 IoT デバイスデータ、エッジデプロイメントの統合を簡素化します。
注釈
プライマリおよびデフォルトの選択肢として
snowpipe-streaming
SDK の使用をお勧めします。RESTAPI は高スループットのシナリオに最適化されていません。データ処理の最適化:
インフライト変換: PIPE オブジェクト内の COPY コマンド構文を使用して、インジェスチョン中のデータクレンジングとリシェーピングをサポートします。
チャンネルの可視性の向上:主に、Snowsightの チャンネル履歴 の表示と、新しい
GET_CHANNEL_STATUS
API を通して、インジェストのステータスを把握できるようになりました。
このアーキテクチャは、以下のような場合にお勧めします。
大容量ストリーミングワークロードの一貫したインジェスチョン。
一刻を争う意思決定のためのリアルタイム分析とダッシュボードを提供します。
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-streaming
SDK (Java SDK と REST API) が必要で、移行のためにクライアントコードの更新が必要です。PIPE オブジェクトの要件: データのインジェスチョン、構成(変換など)、スキーマ定義はすべてサーバー側の PIPE オブジェクトで管理され、クラシックのクライアント主導の構成から移行します。
チャンネルの関連付け:クライアントアプリケーションは、ターゲットテーブルに対して直接ではなく、特定の PIPE オブジェクトに対してチャンネルタブを開きます。
スキーマ検証:主にクライアントサイド(Classic SDK)から、 PIPE オブジェクトに基づく Snowflake によるサーバーサイドの実施に移行。
移行要件:新しい SDK 用にクライアントアプリケーションコードを修正し、Snowflake で PIPE オブジェクトを定義する必要があります。
制限と考慮事項¶
Snowpipe ON_ERROR オプション:STREAMING Snowpipe ON_ERROR オプションは CONTINUE にのみ対応しています。
対応アーキテクチャ(Rust Core):Arm64 Mac、ウィンドウズ、Arm64-Linux、X86_64-Linux。
Linux要件:Linuxで SDK を使用するには、システムに少なくともバージョン2.28のglibcライブラリがインストールされている必要があります。
デプロイ環境: AWS のデプロイメントのみがサポートされています。
クラスタリング・テーブル(インジェスト):クラスタリングテーブル(インジェスト):クラスタリングテーブルをターゲット・テーブルとすることはできますが、インジェスト処理中にクラスタリングは行われません。
複製:複製はサポートされていません。
ALTER PIPE SET PIPE_EXECUTION_PAUSED = true
: openChannelは一時停止すると失敗しますが、インジェストはすぐには停止しないかもしれません。認証ロール:既定のロールが認証に使用されます。将来的には、他のロールを指定できるようにする予定です。
タイムゾーン: SDK は自動的に UTC を使用します。ユーザーはこの設定を変更することはできません。
空のペイロード制限:SDK および RESTAPI は、空のペイロードを含む行セットの送信をサポートしていません。インジェスチョンを成功させるには、送信に少なくとも1つのデータ行が含まれている必要があります。
エラーメッセージの可視性:チャネル ステータスの応答ではエラーメッセージは利用できますが、新しいチャネル履歴ビューには表示されません。