Snowpipe Streaming: 高性能アーキテクチャ¶
Snowpipeストリーミングのハイパフォーマンスアーキテクチャは、ほぼリアルタイムのインサイトを必要とするデータ集約型の最新組織向けに設計されています。この次世代アーキテクチャは、Snowflakeへのリアルタイムインジェストのスループット、効率性、柔軟性を大幅に向上させます。
クラシック建築に関する情報は、 Snowpipe ストリーミング - クラシックアーキテクチャ をご参照ください。クラシック SDK とハイパフォーマンス SDK の違いについては、 クラシック SDK とハイパフォーマンス SDK の比較 をご参照ください。
主要な機能¶
スループットとレイテンシ:
高いスループット:1テーブルあたり最大10 GB/sのインジェスト速度をサポートするように設計されています。
ほぼリアルタイムのインサイト:エンド・ツー・エンドのインジェストからクエリまでのレイテンシを5~10秒以内に実現。
請求:
簡素化された透明性の高いスループットベースの請求。詳細については、 Snowpipeストリーミング・ハイパフォーマンス・アーキテクチャ: コストを理解する をご参照ください。
柔軟なインジェスチョン:
Java SDK:新しい
snowpipe-streaming
SDK を使用し、Rust ベースのクライアントコアにより、クライアントサイドのパフォーマンス向上とリソース使用量の削減を実現しています。REST API: 直接インジェストするパスを提供し、軽量ワークロード、 IoT デバイスデータ、エッジデプロイメントの統合を簡素化します。
データ処理の最適化:
インフライト変換: PIPE オブジェクト内の COPY コマンド構文を使用して、インジェスチョン中のデータクレンジングとリシェーピングをサポートします。
チャンネルの可視性の向上:主に、Snowsightの チャンネル履歴 の表示と、新しい
GET_CHANNEL_STATUS
API を通して、インジェストのステータスを把握できるようになりました。
このアーキテクチャは、以下のような場合にお勧めします。
大容量ストリーミングワークロードの一貫したインジェスチョン。
一刻を争う意思決定のためのリアルタイム分析とダッシュボードを提供します。
IoT デバイスやエッジデプロイメントからのデータの効率的な統合。
透明性が高く、予測可能な、スループットベースの価格設定をストリーミング・インジェスチョンに求める企業。
新しいコンセプト PIPE オブジェクト¶
チャンネルやオフセットトークンなどのコアコンセプトをSnowpipe Streaming Classicから継承しつつ、このアーキテクチャでは中心的なコンポーネントとして PIPE オブジェクトを導入しています。
PIPE オブジェクトは、すべての取り込まれたストリーミングデータのエントリーポイントおよび定義レイヤーとして機能する名前付き Snowflake オブジェクトです。プロバイダーは以下の通り:
データ処理の定義:変換やスキーママッピングのためのサーバー側バッファリングなど、ストリームデータがターゲットテーブルにコミットされる前にどのように処理されるかを定義します。
変換の有効化: COPY コマンド変換構文を組み込むことで、飛行中のデータ操作(フィルター、列の並べ替え、簡単な式など)を可能にします。
テーブル機能のサポート:定義されたクラスタリングキー、 DEFAULT 値列、 AUTOINCREMENT (または IDENTITY) 列を持つテーブルへのインジェスチョンを処理します。
スキーマ管理:入力されるストリームデータのスキーマとターゲットテーブル列へのマッピングを定義し、サーバーサイドでのスキーマ検証を可能にします。
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、システムにglibcライブラリのバージョン2.18以上がインストールされている必要があります。
デプロイ環境: AWS のデプロイメントのみがサポートされています。
Private Link: PrivateLink はサポートされていません。
クラスタリング・テーブル(インジェスト):クラスタリングテーブル(インジェスト):クラスタリングテーブルをターゲット・テーブルとすることはできますが、インジェスト処理中にクラスタリングは行われません。
複製:複製はサポートされていません。
ALTER PIPE SET PIPE_EXECUTION_PAUSED = true
: openChannelは一時停止すると失敗しますが、インジェストはすぐには停止しないかもしれません。認証ロール:既定のロールが認証に使用されます。将来的には、他のロールを指定できるようにする予定です。
タイムゾーン: SDK は自動的に UTC を使用します。ユーザーはこの設定を変更することはできません。
空のペイロードの制限: SDK と REST API は、空のペイロードを含む行セットの提出をサポートしていません。インジェスチョンに成功するためには、少なくとも1つのデータ行が含まれている必要があります。
エラーメッセージの表示:エラーメッセージはチャンネルステータスのレスポンスでは利用可能ですが、新しいチャンネル履歴表示では表示されません。