従来の SDK と高性能 SDK との比較¶
このセクションでは、従来および高性能の 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()は、チャネルまたはクライアント上でフラッシュを非同期的に呼び出します。これは、タイムアウトやサイズ制限を待たずにデータをフラッシュするのに便利です。
その他の変更
GetLatestCommittedOffsetTokens:この API は改善されました。高性能 SDK では、クライアントによって開かれていないチャネルのオフセットトークンを取得でき、部分的失敗を可能にします。
isValidの削除:
isValidメソッドは高性能 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()チャネルが非同期的にフラッシュをトリガーするための新しいメソッド。