Snowpipeストリーミングのハイパフォーマンスアーキテクチャへの移行

リアルタイムデータは、もはやスピードだけではありません。大量のスループット、予測可能な規模、クエリ可能なデータが求められるようになっています。AIエージェントやインテリジェントアプリケーションは、新鮮なデータとニアリアルタイムのコンテキストを継続的に推論する必要があります。このことから、当社の高性能ストリーミングアーキテクチャを再考することにしました。お客様はすでに、Snowpipeストリーミングの最新のイノベーションを活用して重要なユースケースを活用しています。Snowpipe Streaming Classicは、Snowflakeテーブルに直接低レイテンシーで取り込むためのエンジンでしたが、次世代のストリーミングアーキテクチャでは、1秒あたり数千件から数百万件へと増加するにつれて、より重く複雑なAIワークロードが可能になります。
この記事では、新しいSnowpipe Streaming High Performanceアーキテクチャの膨大な価値を説明し、移行がいかに簡単かを正確に示します。このアーキテクチャは、サポートされている構成でテーブルあたり最大10 GB/秒のスループットを実現し、エンドツーエンドのレイテンシーを削減し、ストリーミングを大規模に管理する方法を簡素化するために構築されました。同時に、ワークロードが増加しても信頼できるシンプルな料金体系を維持しています。
Appianは、硬直したコード負荷の高い取り込みパイプラインを置き換えるために高パフォーマンスアーキテクチャに移行した、ローコードプロセスの自動化におけるリーダー企業です。これまで、スキーマの変更には複雑なコード更新が必要でした。Appianは、Snowpipe Streaming High Performanceを使用してテーブル構造を取り込みロジックから分離し、Terraformを介してJavaアプリケーションに対して透過的にパイプを管理できるようにしました。Appian氏によると、同社のカスタム「Snowblower」エンジンは、現在、27のリージョンにわたって毎月0.5ペタバイト近くのログデータを取り込んでおり、環境内の低レイテンシーのパフォーマンスを実現しているといいます。
「Snowpipe Streaming ClassicからHigh Performanceへの移行は非常にスムーズで、簡素化されたSDKとインフラストラクチャによって、全体的な使い勝手が大幅に向上しました。現在、最大規模の環境では月間0.5ペタバイトものデータを処理していますが、スループットの限界を感じることはまだありません」
—Aboubacar Toure氏
Snowpipe Streaming High Performanceに移行する理由とその方法について説明します。
アップグレードする理由:高パフォーマンスのメリット
大規模なパフォーマンス
Snowpipe Streaming High Performanceは、ファイルの解析と検証の負荷をクライアントからサーバーに移します。Pipeオブジェクトを使用して取り込みパスを分離することで、非常に優れたスケーラビリティを実現しました。サポートされているワークロードでは、テーブルあたり最大10 GB/秒、通常は5~10秒のエンドツーエンドレイテンシーを達成できるようになりました。社内テストでは、データ解析の最適化が改善したことで、ファイルレイアウトの最適化は、ワークロードとデータ特性に応じてSnowpipe Streaming Classicと比較してダウンストリームクエリのパフォーマンスを最大50%高速化できることが示されました。
低レイテンシーの実現がインタラクティブテーブルでのユースケースに貢献
パフォーマンスは取り込み速度だけではありません。クエリレイテンシーも大規模に変化します。Snowpipe Streaming High PerformanceとSnowflake Interactive Tablesを組み合わせることで、同時実行性の高いアプリケーションをSnowflakeから直接実行できます。これにより、「ホット」データを外部の運用データストアにオフロードする必要がなくなります。
標準テーブルは膨大な分析スキャンに優れていますが、インタラクティブテーブルは低レイテンシーで同時実行性の高い分析用に最適化されており、多くの場合、サポートされているワークロードでは1秒未満の応答時間を達成します。ほぼリアルタイムの鮮度でデータを直接ストリーミングできます。これにより、リアルタイムのパーソナライゼーションエンジン、顧客向けダッシュボード、数千の同時ユーザーに対応する組み込み分析アプリケーションを構築できます。この統合されたアーキテクチャは、スピードのために別々のサービングレイヤーを維持することでコストと複雑さを軽減し、スタックを簡素化します。
予測可能な定額料金
Classicの最大の問題点の1つは、クライアント接続時間に関連付けられたコストモデルです。このモデルは、アイドル状態のクライアントが多数ある場合に予測不可能なスケーリングを引き起こす可能性があります。Snowpipe Streaming High Performanceは、これを簡素化します。これ以降は、非圧縮の1ギガバイトあたり0.0037クレジットの定額料金をお支払い頂きます。移動したデータの料金を支払うだけで、クライアントが接続している時間はありません。
多言語機能と効率性
Javaのみという障壁を取り払いました。Snowpipe Streaming High Performanceは、JavaとPythonのためのファーストクラスのSDKとREST APIをリリースします。内部では、これらのSDKは高パフォーマンスのRustコア上で再構築されます。単に高速というだけでなく、軽量なります。ワークロードや実装によっては、クライアントサイドのCPUとメモリの使用率が最大30%削減されたというお客様もいます。
新機能:複雑さのないパワー
Snowpipe Streaming High Performanceは、これまでClassicでは実装が困難だった機能をもたらします。
プリクラスタリング:転送中のデータのソート
ストリーミングデータはソートされずに届くことが多く、バックグラウンドメンテナンスにコストがかかることや、自動クラスタリングが実行されるまでクエリが遅延することがありました。Snowpipe Streaming High Performanceでは、CLUSTER_AT_INGEST_TIME = TRUEを有効にできます。これにより、データがストレージに書き込まれる前に転送中のデータのソートとクラスタリングが行われます。つまり、データは高度に最適化された形式で格納され、即時のクエリパフォーマンスが実現します。
複雑なデータ型
モダンストリーミングは単なるテキストではありません。Snowpipe Streaming High Performanceは、ジオメトリとジオグラフのタイプのネイティブサポートなど、複雑なデータシェイプに対する堅牢なサポートを追加します。また、最大128MBのカラム値もサポートしました。これは、Classicの制限を超えた重いJSONブロブや複雑なバリアントデータにとって不可欠です。
ステートレスなインフライト変換
Snowpipe Streaming High Performanceは、パイプオブジェクトを導入して、取り込みパス内でステートレスなインフライト変換を直接実行できるようにします。データがターゲットテーブルに到達する前に、データ型のキャスト、JSONの抽出、列の並べ替えなどの標準的なCOPYコマンドロジックを適用できるようになりました。
このアプローチにより、レイテンシーとインフラストラクチャのコストの両方を削減できます。データが入ったら変換することで、中間ステージングテーブルやロード後の処理に必要なコンピュートリソースが不要になります。データは最終テーブルに格納され、すぐに分析できます。これにより、二次変換ジョブに関連する遅延が解消されます。
ネイティブスキーマの進化
Classicでは、ソースデータスキーマの変更がパイプラインの破損につながることがよくありました。Snowpipe Streaming High Performanceは、ENABLE_SCHEMA_EVOLUTION = TRUEをネイティブでサポートします。新しい列は自動的に検出され、追加されます。NOT NULL制約はオンザフライで削除されるため、データが変化してもパイプラインは実行され続けます。
デフォルトパイプ
移行を容易にするため、デフォルトパイプを導入しました。Snowpipe Streaming High Performanceの使用を開始するために、手動でPipeオブジェクトを作成する必要はありません。コードがテーブルをターゲットとしているが、High Performance APIを指している場合、Snowflakeは自動的にルーティングを処理します。つまり、ClassicコードがTable_Aに書き込んだ場合、Snowpipe Streaming High Performanceコードは追加の設定なしに(デフォルトパイプ経由で)Table_Aに書き込むことができます。
移行ガイド:ハイパフォーマンスへの道
移行は、データロス・ゼロのシンプルなプロセスであるように設計されています。
ステップ 1:前提条件の確認
Snowflakeアカウントがサポートされているリージョン内にあることを確認します。2025年11月現在、Snowpipe Streaming High Performanceは、AWS、Azure、GCPの商用展開で一般提供されています。
SDKリファレンスやコード例など、入門について詳しくは、ドキュメントを参照してください。
ステップ 2:コードの更新
アプリケーションの依存関係を、SnowflakeストリーミングSDKの最新バージョンに更新します。
注目すべきAPI変更は2つあります。まず、ビルダーにスキーマコンテキストが必要になりました。builder(channelName)だけでなく、builder(channelName, dbName, schemaName)を使用します。2つ目は、取り込み方法がinsertRow ( . . . )からappendRow ( . . . )に変わることです。
ステップ 3:データロスゼロのカットオーバーを実行する
レコードのドロップや複製なしに、クラシックからSnowpipe Streaming High Performanceに切り替えるには、オフセットトークンを渡すだけです。
Classic取り込みアプリケーションを一時停止します。
getLatestCommittedOffsetToken() を使用して、Classic クライアントから最後にコミットされたオフセット トークンを取得します。
そのトークンを使用して、Snowpipe Streaming High Performanceチャネルを初期化します。
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClient;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClientFactory;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestChannel;
import java.util.Properties;
import java.util.Map;
import java.util.UUID;
// 1. Configure your client properties
Properties props = new Properties();
props.put("user", "my_user");
props.put("private_key", "MII...");
props.put("role", "my_role");
props.put("warehouse", "my_warehouse");
// 2. Create the client
SnowflakeStreamingIngestClient client = SnowflakeStreamingIngestClientFactory.builder(
"MY_CLIENT_NAME",
"MY_DATABASE",
"MY_SCHEMA",
"MY_PIPE" // TABLENAME-STREAMING can be used by default for any table
).setProperties(props).build();
// 3. Open a channel
// We use getChannel() to unwrap the response object
SnowflakeStreamingIngestChannel channel = client.openChannel("MY_CHANNEL_NAME", "0").getChannel();
// 4. Ingest a row
Map<String, Object> row = Map.of("c1", 123, "c2", "test_data");
// appendRow adds the row to the buffer
// "001" is the offset token tracking this specific record
channel.appendRow(row, "001");
新しいAPIフローを示すJavaの例
ステップ 4:検証
Snowpipe Streaming High Performanceアプリケーションが実行されたら、getChannelStatusエンドポイントを使用するか、ランディングテーブルにクエリを実行し、last_committed_offset_tokenが進行中であること、スループットが安定していることを確認します。
結論
Snowpipe Streaming High Performanceは単なるバージョン改良ではありません。今後10年間、リアルタイムワークロードをサポートするアーキテクチャです。10GB/秒のパフォーマンス、ネイティブスキーマの進化、フラットな料金設定により、アップグレードに最適なタイミングが到来しています。クライアントSDKを更新し、新しいチャネルを開設し、取り込みフローを切り替えるだけで、ダウンタイムを最小限に抑えながらスループットと効率性を大幅に向上させることができます。
しかし、このアップグレードの真の価値は、取り込みメトリクスだけではありません。生成AIと大規模言語モデルの時代は、レイテンシーが最優先です。AIエージェントや予測モデルは、データが与えてくれることで初めて賢くなります。データが古い場合、インサイトは意味がありません。Snowpipe Streaming High Performanceは、アーキテクチャをAI対応にし、モデルが正確かつアクション可能な結果を瞬時に提供するために必要な、新鮮で低レイテンシーのコンテキストを提供します。
データの未来はストリーミングであり、その燃料はリアルタイムです。使用しているプラットフォームで対応できることを確認してください。

