Vergleich zwischen klassischem SDK und leistungsstarkem SDK¶
In diesem Abschnitt werden die Hauptunterschiede zwischen den klassischen und leistungsstarken SDKs zusammengefasst.
Client- und Kanalverwaltung
OpenClient: Das leistungsstarke SDK erfordert die Angabe von
DB,SCHEMAundPIPE. Beim klassischen SDK müssen Sie nur einen Client-NAMEangeben.OpenChannel: Das leistungsstarke SDK vereinfacht dies, da nur der Kanalname angegeben werden muss. Das klassische SDK erfordert die Angabe von
DB,SCHEMA,TABLEund einer:code:ERROR_OPTION. Das neue SDK gibt ebenfalls einOpenChannelResultzurück, das die Entität und den Status des Kanals enthält, sodass kein separater RPC-Aufruf mehr erforderlich ist, um das letzte übertragene Offset-Token zu erhalten.Unterstützung für OffsetToken: Die neue
openChannel-Methode verfügt jetzt über einen optionalenoffsetToken-Parameter, mit dem Sie einen Kanal an einer bestimmten Position öffnen können.openChannel(String channelName, (optional) String offsetToken).
Datenaufnahme
InsertRows umbenannt: Die
InsertRows-Methode heißt jetztAppendRowsim leistungsstarken SDK.AppendResult entfernt: Die Methoden
appendRowundappendRowsgeben keinAppendResultmehr zurück. Ihre Signaturen haben sich in geändert invoid appendRow(Map<String, Object> row, String offsetToken)undvoid appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken).
Neue asynchrone und Dienstprogramm-Methoden
GetChannelStatus: Dies ist eine neue API, die für das
Channel-Objekt verfügbar ist.waitForFlush: Neue
waitForFlush-Methoden wurden sowohl den Client- als auch den Kanalobjekten hinzugefügt.Client:
void close(boolean waitForFlush, Duration timeoutDuration)Kanal und Client:
void waitForFlush((optional) Duration timeoutDuration)
waitForCommit: Eine neue Methode,
CompletableFuture<Boolean> waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration), ermöglicht es Ihnen, auf die Bestätigung eines Commits zu warten.initiateFlush: Diese neue
void initiateFlush()-Methode ruft asynchron einen Flush für einen Kanal oder Client auf. Dies ist nützlich, um Daten zu leeren, ohne auf ein Timeout oder Größenbeschränkungen warten zu müssen.
Sonstige Änderungen
GetLatestCommittedOffsetTokens: Diese API wurde verbessert. Im leistungsstarken SDK kann sie nun Offset-Token für Kanäle abrufen, die nicht vom Client geöffnet wurden, was teilweise Ausfälle zulässt.
isValid entfernt: Die Methode
isValidwurde aus dem leistungsstarken SDK entfernt.
Die folgenden Tabellen zeigen die API-Änderungen des klassischen SDK im Vergleich zum leistungsstarken SDK:
SnowflakeStreamingIngestClientFactory und SnowflakeStreamingIngestClientFactory.Builder¶
Klassisch |
Leistungsstark |
Anmerkungen |
|---|---|---|
|
|
|
N/A |
|
Eine neue Methode. Ermöglicht es Ihnen, den |
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.
SnowflakeStreamingIngestChannelopenChannel(OpenChannelRequest-Anfrage)
OpenChannelResultopenChannel(String channelName, (optional) String offsetToken)Unterschiedliche Anfrage-Argumente und Rückgabewerte.
Map<String,String> getLatestCommittedOffsetTokens(List<SnowflakeStreamingIngestChannel> channels)
Map<Zeichenfolge, Zeichenfolge> getLatestCommittedOffsetTokens(List<Zeichenfolge> channelNames)Verschiedene Anforderungsargumente. Das leistungsstarke SDK ermöglicht es der API, den Status des Kanals abzurufen, der von anderen Clients geöffnet wird und möglicherweise nicht zum Client gehört.
N/A
ChannelStatusBatch getChannelStatus(List<String> channelNames)Neue API.
Void dropChannel(DropChannelRequest request)
Void dropChannel(String channelName)Anderes Argument für die Anfrage.
Void setRefreshToken(String refreshToken)N/A
Entfernt
N/A
CompletableFuture<Void> close(boolean waitForFlush, Duration timeoutDuration)Eine neue
close-Methode für den Client, die mehr Kontrolle über den Prozess des Herunterfahrens hat.waitForFlush: Ein boolescher Parameter, der angibt, ob der Client warten soll, bis alle Kanäle geleert sind, bevor er heruntergefahren wird.timeoutDuration:Duration, die angibt, wie lange der Client auf den Abschluss des Flushes warten soll, bevor ein erzwungenes Herunterfahren erfolgt.N/A
CompletableFuture<Void> waitForFlush((optional) Duration timeoutDuration)Eine neue Methode, die auf den Abschluss des Flushes wartet.
timeoutDuration: Gibt an, wie lange der Client warten soll, bevor ein Timeout eintritt.N/A
void initiateFlush()Eine neue Methode für Clients, um asynchron einen Flush auszulösen und sofort zurückzukehren.
SnowflakeStreamingIngestChannel¶
Klassisch
Leistungsstark
Anmerkungen
getLatestCommittedOffsetToken
getLatestCommittedOffsetTokenDiese API wurde verbessert. Im leistungsstarken SDK kann sie nun Offset-Token für Kanäle abrufen, die nicht vom Client geöffnet wurden, was teilweise Ausfälle zulässt.
isValidN/A
Entfernt
N/A
String getDBName()Neue API.
N/A
String getSchemaName()Neue API.
N/A
String getPipeName()Neue API.
N/A
String getFullyQualifiedPipeName()Neue API.
InsertValidationResponse insertRow(Map<Zeichenfolge, Objekt> row, String offsetToken)
void appendRow(Map<String, Object> row, @Nullable String offsetToken)API-Name geändert. Der Antworttyp hat sich geändert, da es keine Validierung auf dem Client mehr gibt.
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-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 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 close(boolean waitForFlush, Duration timeoutDuration)API-Name wurde geändert, aber die Verhaltensweise ist dieselbe.
Boolean isValid()N/A
Entfernt
N/A
CompletableFuture<Void> waitForFlush((optional)Duration timeoutDuration)Eine neue Methode, die auf den Abschluss des Flushes wartet.
timeoutDuration: Gibt an, wie lange der Kanal warten soll, bevor ein Timeout eintritt.N/A
void waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)Eine neue Methode, die asynchron ausgelöst wird und darauf wartet, dass alle gepufferten Daten innerhalb dieses speziellen Kanals per Flush an den Snowflake Server geleert werden. Diese Methode stellt sicher, dass alle ausstehenden Daten erfolgreich geschrieben werden und die Flush-Operation abgeschlossen ist, bevor Sie fortfahren.
N/A
void initiateFlush()Es gibt eine neue Methode für Kanäle, um asynchron einen Flush auszulösen.