Vergleich zwischen dem klassischen SDK und dem leistungsstarken SDK

Hier finden Sie eine Zusammenfassung dessen, was sich vom klassischen SDK zum leistungsstarken SDK geändert hat:

  • OpenClient: Sie müssen die DB, SCHEMA und PIPE für die neue Version angeben. Zuvor mussten Sie nur NAME angeben.

  • OpenChannel:

    • Sie müssen nur den Kanalnamen für die neue Version angeben. Zuvor mussten Sie die Felder DB, SCHEMA, TABLE und ERROR_OPTION angeben.

    • In der neuen Version erhalten Sie ein OpenChannelResult zurück, das sowohl die Kanalentität als auch den channelStatus enthält, wenn der Kanal geöffnet wird. Im Vergleich zur alten Version müssen Sie das letzte übertragene Token nicht durch einen weiteren RPC-Aufruf in Snowflake abrufen.

  • InsertRows wird in AppendRows umbenannt.

  • CloseChannel: Zuvor hat Snowpipe Streaming einen asynchronen Aufruf durchgeführt, um darauf zu warten, dass der Token vollständig übergeben wird und ein Future-Objekt zurückgibt, damit der Benutzer das Ergebnis abrufen kann. Dies wird in der neuen Version derzeit nicht unterstützt.

  • GetLatestCommittedOffsetTokens: Dies ist ein API-Batch, um die letzten Offset-Token der von diesem Client geöffneten Kanäle zu erhalten, und erlaubt keine Teilausfälle im klassischen SDK. Im neuen SDK ist es erlaubt, die letzten Offset-Token zu holen, die nicht vom Client geöffnet wurden, und diese API erlaubt auch Teilausfälle.

  • isValid wird in der neuen Version entfernt.

Die folgenden Tabellen zeigen die API-Unterschiede zwischen dem klassischen SDK und dem leistungsstarken SDK:

SnowflakeStreamingIngestClientFactory und SnowflakeStreamingIngestClientFactory.Builder

Klassisch

Leistungsstark

Anmerkungen

builder(String name)

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

Beachten Sie, dass name in der klassischen Version = clientName in der leistungsstarken Version.

SnowflakeStreamingIngestClient

Klassisch

Leistungsstark

Anmerkungen

String getName()

String getClientName()

Nur Änderung des API-Namens; es werden die gleichen Informationen zurückgegeben.

N/A

String getDBName()

Neue API.

N/A

String getPipeName()

Neue API.

N/A

String getSchemaName()

Neue API.

SnowflakeStreamingIngestChannel openChannel(OpenChannelRequest-Anfrage)

OpenChannelResult openChannel(String channelName, String offsetToken)

Unterschiedliche Anfrage-Argumente und Rückgabewerte.

Map<String,String> getLatestCommittedOffsetTokens (List<SnowflakeStreamingIngestChannel> channels)

Map<Zeichenfolge, Zeichenfolge> getLatestCommittedOffsetTokens (List<Zeichenfolge> channelNames)

Verschiedene Anfrage-Argumente. Sie können nun den Status von Kanälen abrufen, die von anderen Clients geöffnet wurden und möglicherweise nicht zu Ihrem Client gehören.

N/A

ChannelStatusBatch getChannelStatuses(List<Zeichenfolge> channelNames)

Neue API.

Void dropChannel(DropChannelRequest request)

Void dropChannel(String channelName)

Anderes Argument für die Anfrage.

Void setRefreshToken(String refreshToken)

N/A

Nur erforderlich für OAuth.

SnowflakeStreamingIngestChannel

Klassisch

Leistungsstark

Anmerkungen

InsertValidationResponse insertRow(Map<Zeichenfolge, Objekt> row, String offsetToken)

AppendResult appendRow(Map<Zeichenfolge, Objekt> row, String offsetToken)

API-Name geändert. Der Antworttyp hat sich geändert, da es keine Validierung auf dem Client mehr gibt.

InsertValidationResponse insertRow(Iterable<Zuordnung<Zeichenfolge, Objekt>> row, String startOffsetToken, String endOffsetToken)

AppendResult appendRows(Iterable<Zuordnung<Zeichenfolge, Objekt>> row, String startOffsetToken, String endOffsetToken)

Der Antworttyp hat sich geändert, da es keine Validierung auf dem Client mehr gibt.

InsertValidationResponse insertRow(Iterable<Zuordnung<Zeichenfolge, Objekt>> row, String offsetToken)

N/A

Entfernt

String getTableName()

N/A

Entfernt

String getFullyQualifiedTableName()

N/A

Entfernt

N/A

String getPipeName()

Neue API.

N/A

String getFullyQualifiedPipeName()

Neue API.

String getName()

String getChannelName()

API-Namensänderung.

String getFullyQualifiedName()

String getFullyQualifiedChannelName()

API-Namensänderung.

Map<Zeichenfolge, ColumnProperties> getTableSchema()

N/A

Entfernt

N/A

ChannelStatus getChannelStatus()

Neue API.

CompletableFuture<Void> close()

Void close()

Der Rückgabetyp wurde geändert, aber die Verhaltensweise ist dieselbe.

CompletableFuture<Void> close(boolean drop)

Void drop()

API-Name wurde geändert, aber die Verhaltensweise ist dieselbe.

Boolean isValid()

N/A

Entfernt