従来の SDK と高性能 SDK との比較

このセクションでは、従来および高性能の SDKs の主な違いをまとめています。

クライアントおよびチャネル管理

  • OpenClient:高性能 SDK では、DBSCHEMA および PIPE を指定する必要があります。従来の SDK では、クライアント NAME のみを指定する必要があります。

  • OpenChannel:高性能 SDK は、チャネル名のみを要求することによって、これを簡素化しています。従来の SDK では、DBSCHEMATABLE および 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

クラシック

ハイパフォーマンス

メモ

builder(String name)

builder(String clientName, String dbName, String schemaName, String pipeName)

従来のバージョンの name = 高性能バージョンの clientName

N/A

setExecutorService(ExecutorService executorService)

新しいメソッド。SDK がバックグラウンドタスクに使用する ExecutorService を指定できます。

SnowflakeStreamingIngestClient

クラシック

ハイパフォーマンス

メモ

String getName()

String getClientName()

API 名の変更のみで、同じ情報が返されます。

N/A

String getDBName()

新規 API.

N/A

String getPipeName()

新規 API.

N/A

String getSchemaName()

新規 API.

SnowflakeStreamingIngestChannel openChannel (OpenChannelRequest リクエスト)

OpenChannelResult openChannel(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 では、クライアントによって開かれていないチャネルのオフセットトークンを取得でき、部分的失敗を可能にします。

isValid

N/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()

チャネルが非同期的にフラッシュをトリガーするための新しいメソッド。