高性能のSnowpipe Streamingと従来の SDKs の比較¶
このセクションでは、従来および高性能の SDKs の主な違いをまとめています。
クライアントおよびチャネル管理
OpenClient:高性能 SDK では、
DB、SCHEMAおよびPIPEを指定する必要があります。従来の SDK では、クライアントNAMEのみを指定する必要があります。OpenChannel:高性能 SDK は、チャネル名のみを要求することによって、これを簡素化しています。従来の SDK では、
DB、SCHEMA、TABLEおよびERROR_OPTIONを指定する必要があります。新しい SDK は、チャネルのエンティティとステータスを含むOpenChannelResultも返すため、別の RPC 呼び出しで最後にコミットされたオフセットトークンを取得する必要がありません。オフセットトークンのサポート:新しい
openChannelメソッドにはオプションのoffsetTokenパラメーターがあり、これにより特定の位置でチャネルを開くことができます。openChannel(String channelName, (optional) String offsetToken)。
データ統合
InsertRows の名称変更:
InsertRowsメソッドは高性能 SDK でAppendRowsと呼ばれるようになりました。AppendResult の削除
appendRowおよびappendRowsメソッドはAppendResultを返さなくなりました。署名がvoid appendRow(Map <String, Object> row, String offsetToken)およびvoid appendRows(Iterable<Map<String, Object>> row、String startOffsetToken、String endOffsetToken)に変更されました。
新しい非同期およびユーティリティメソッド
GetChannelStatus:これは
Channelオブジェクトで利用可能な新しい API です。waitForFlush:新しい
waitForFlushメソッドがクライアントオブジェクトとチャネルオブジェクトの両方に追加されました。クライアント:
void close(boolean waitForFlush, Duration timeoutDuration)チャネルおよびクライアント:
void waitForFlush((optional) Duration timeoutDuration)
waitForCommit: 新しいメソッドである
CompletableFuture<Boolean> waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)を使用すると、コミットが確認されるのを待つことができます。initialFlash:この新しいメソッド
void initiateFlush()は、チャネルまたはクライアントでフラッシュを非同期的に呼び出します。このメソッドは、タイムアウトまたはサイズ制限を待たずにデータをフラッシュする際に活用できます。
データ型と解析
高性能アーキテクチャには、ARRAY 列および VARIANT 列のネイティブオブジェクトが必要であり、文字列リテラルを自動解析しません。
列タイプ |
クラシック |
ハイパフォーマンス |
|---|---|---|
OBJECT |
JSON 文字列を自動解析します。 |
変更なし。JSON 文字列を自動解析します。 |
ARRAY |
文字列を暗黙的に解析します。たとえば、"[1,2]"は[1,2]になります。 |
型制限。文字列をリテラルとして扱います。たとえば、"[1,2]"は["[1,2]"]になります。 |
VARIANT |
文字列を暗黙的に解析します。たとえば、"true"はtrueになります。 |
型制限。文字列をリテラルとして扱います。例えば、"true"は"true"になります。 |
半構造化データが高性能アーキテクチャに正しく格納されるようにするには、シリアル化された JSON 文字列の代わりに、ネイティブ言語オブジェクト(例: Java List/MapまたはPython list/dict)を渡します。
その他の変更
GetLatestCommittedOffsetTokens:この API は改善されています。高性能 SDK では、クライアントによって開かれていないチャネルのオフセットトークンを取得でき、部分的失敗を可能にします。
isValidの削除:
isValidメソッドは高性能 SDK から削除されました。スキーマの進化のサポート:高性能 SDK は スキーマの進化 をサポートします。これは、変化するデータスキーマを自動的に処理するための重要な機能です。
次のテーブルは従来の SDK から高性能 SDK での API の変更を示しています。
SnowflakeStreamingIngestClientFactory および SnowflakeStreamingIngestClientFactory.Builder¶
クラシック |
ハイパフォーマンス |
メモ |
|---|---|---|
|
|
従来のバージョンの |
N/A |
|
新しいメソッド。SDK がバックグラウンドタスクに使用する |
SnowflakeStreamingIngestClient¶
クラシック
ハイパフォーマンス
メモ
String getName()
String getClientName()API 名の変更のみで、同じ情報が返されます。
N/A
String getDBName()新規 API.
N/A
String getPipeName()新規 API.
N/A
String getSchemaName()新規 API.
SnowflakeStreamingIngestChannelopenChannel (OpenChannelRequest リクエスト)
OpenChannelResultopenChannel(String channelName, (optional) String offsetToken)リクエストの引数と返り値が異なります。
Map<文字列,文字列> getLatestCommittedOffsetTokens(List<SnowflakeStreamingIngestChannel> channels)
Map<文字列、文字列> getLatestCommittedOffsetTokens(List<文字列> channelNames)異なるリクエスト引数。高性能 SDK では、API は他のクライアントによって開かれ、クライアントに属していない可能性のあるチャネルのステータスを取得できます。
N/A
ChannelStatusBatch getChannelStatus(List<String> channelNames)新規 API.
Void dropChannel(DropChannelRequest request)
Void dropChannel(String channelName)リクエストの引数が違います。
Void setRefreshToken(String refreshToken)N/A
削除済み。
N/A
CompletableFuture<Void> close(boolean waitForFlush, Duration timeoutDuration)シャットダウンプロセスをより細かく制御する新しいクライアントの
closeメソッド。waitForFlush:クライアントがシャットダウンする前にすべてのチャネルがフラッシュされるのを待つ必要があるかどうかを示すブール値のパラメーター。timeoutDuration:強制的なシャットダウンの前にクライアントがフラッシュの完了を待機する時間を指定するDuration。N/A
CompletableFuture<Void> waitForFlush((optional) Duration timeoutDuration)フラッシュの完了を待つ新しいメソッド。
timeoutDuration:クライアントがタイムアウトするまでの待機時間を指定します。N/A
void initiateFlush()クライアントが非同期的にフラッシュをトリガーし、すぐに返すための新しいメソッド。
SnowflakeStreamingIngestChannel¶
クラシック
ハイパフォーマンス
メモ
getLatestCommittedOffsetToken
getLatestCommittedOffsetTokenこの API は改善されました。高性能 SDK では、クライアントによって開かれていないチャネルのオフセットトークンを取得でき、部分的失敗を可能にします。
isValidN/A
削除済み。
N/A
String getDBName()新規 API.
N/A
String getSchemaName()新規 API.
N/A
String getPipeName()新規 API.
N/A
String getFullyQualifiedPipeName()新規 API.
InsertValidationResponse insertRow(Map<文字列, オブジェクト> row, String offsetToken)
void appendRow(Map<String, Object> row, @Nullable String offsetToken)API 名が変わりました。クライアントでのバリデーションがなくなったため、レスポンスタイプが変更されました。
InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, @Nullable String startOffsetToken, @Nullable String endOffsetToken)
void appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)API 名が変わりました。クライアントでのバリデーションがなくなったため、レスポンスタイプが変更されました。
InsertValidationResponse insertRow(Iterable<マップ<文字列, オブジェクト>> row, String offsetToken)N/A
削除済み。
String getTableName()N/A
削除済み。
String getFullyQualifiedTableName()N/A
削除済み。
N/A
String getPipeName()新規 API.
N/A
String getFullyQualifiedPipeName()新規 API.
String getName()
String getChannelName()API 名変更
String getFullyQualifiedName()
String getFullyQualifiedChannelName()API 名変更
Map<文字列、 ColumnProperties> getTableSchema()N/A
削除済み。
N/A
ChannelStatus getChannelStatus()新規 API.
CompletableFuture<無効> close()
Void close()戻り値のタイプは変わりましたが、動作は同じです。
CompletableFuture<無効> close(boolean drop)
Void close(boolean waitForFlush, Duration timeoutDuration)API 名が変更されていますが、動作は同じです。
Boolean isValid()N/A
削除済み。
N/A
CompletableFuture<Void> waitForFlush((optional)Duration timeoutDuration)フラッシュの完了を待つ新しいメソッド。
timeoutDuration:チャネルがタイムアウトするまでの待機時間を指定します。N/A
void waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)非同期的にトリガーして、この特定のチャネル内のすべてのバッファーされたデータがSnowflakeサーバーにフラッシュされるのを待機する新しい メソッド。このメソッドは、続行する前に保留中のデータがすべて正常に書き込まれ、フラッシュ操作が完了するようにします。
N/A
void initiateFlush()チャネルが非同期的にフラッシュをトリガーするための新しいメソッド。