Comparaison entre le SDK classique et le SDK hautes performances¶
Cette section résume les principales différences entre les SDKs classique et hautes performances.
Gestion des clients et des canaux
OpenClient : Le SDK hautes performances exige que vous spécifiez
DB,SCHEMAetPIPE. Dans le SDK classique, il vous suffit de spécifier un clientNAME.OpenChannel : Le SDK hautes performances simplifie cela en n’exigeant que le nom du canal. Le SDK classique exige que vous spécifiez
DB,SCHEMA,TABLEet uneERROR_OPTION. Le nouveau SDK renvoie également unOpenChannelResultqui contient l’entité et l’état du canal, supprimant ainsi la nécessité d’un appel RPC distinct pour obtenir le dernier jeton de décalage validé.Prise en charge de offsetToken : La nouvelle méthode
openChanneldispose désormais d’un paramètreoffsetTokenfacultatif, vous permettant d’ouvrir un canal à un endroit spécifique.openChannel(String channelName, (optional) String offsetToken).
Ingestion des données
InsertRows renommée : La méthode
InsertRowsest désormais appeléeAppendRowsdans le SDK hautes performances.AppendResult supprimé : Les méthodes
appendRowetappendRowsne renvoient plus unAppendResult. Leurs signatures ont été modifiées envoid appendRow(Map<String, Object> row, String offsetToken)etvoid appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken).
Nouvelles méthodes asynchrones et utilitaires
GetChannelStatus : Il s’agit d’une nouvelle API disponible sur l’objet
Channel.waitForFlush : De nouvelles méthodes
waitForFlushont été ajoutées aux objets client et canal.Client :
void close(boolean waitForFlush, Duration timeoutDuration)Canal et client :
void waitForFlush((optional) Duration timeoutDuration)
waitForCommit : Une nouvelle méthode,
CompletableFuture<Boolean> waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration), vous permet d’attendre la confirmation d’une validation.initiateFlush : Cette nouvelle méthode
void initiateFlush()appelle de manière asynchrone un vidage sur un canal ou un client, ce qui est utile pour vider les données sans attendre les limites du délai d’attente ou de la taille.
Autres changements
GetLatestCommittedOffsetTokens : Cette API a été améliorée. Dans le SDK hautes performances, elle peut désormais récupérer des jetons de décalage pour les canaux non ouverts par le client et permet des échecs partiels.
isValid supprimé : La méthode
isValida été supprimée du SDK hautes performances.
Les tableaux suivants présentent les changements d’API entre le SDK classique et le SDK hautes performances :
SnowflakeStreamingIngestClientFactory et SnowflakeStreamingIngestClientFactory.Builder¶
Classique |
Haute performance |
Remarques |
|---|---|---|
|
|
|
N/A |
|
Une nouvelle méthode. Permet de spécifier le |
SnowflakeStreamingIngestClient¶
Classique
Haute performance
Remarques
String getName()
String getClientName()Changement du nom de l’API uniquement ; les mêmes informations sont renvoyées.
N/A
String getDBName()Nouvelle API.
N/A
String getPipeName()Nouvelle API.
N/A
String getSchemaName()Nouvelle API.
SnowflakeStreamingIngestChannelopenChannel(OpenChannelRequest request)
OpenChannelResultopenChannel(String channelName, (optional) String offsetToken)Différents arguments de requête et valeurs de retour.
Map<String,String> getLatestCommittedOffsetTokens(List<SnowflakeStreamingIngestChannel> channels)
Map<String, String> getLatestCommittedOffsetTokens(List<String> channelNames)Différents arguments de requête. Le SDK hautes performances active l’API pour récupérer l’état du canal qui est ouvert par d’autres clients et qui n’appartient potentiellement pas au client.
N/A
ChannelStatusBatch getChannelStatus(List<String> channelNames)Nouvelle API.
Void dropChannel(DropChannelRequest request)
Void dropChannel(String channelName)L’argument de la requête est différent.
Void setRefreshToken(String refreshToken)N/A
Supprimé.
N/A
CompletableFuture<Void> close(boolean waitForFlush, Duration timeoutDuration)Une nouvelle méthode cliente
closequi a plus de contrôle sur le processus d’arrêt.waitForFlush: Un paramètre Booléen indiquant si le client doit attendre que tous les canaux soient vidés avant l’arrêt.timeoutDuration: UneDurationpour spécifier la durée pendant laquelle le client doit attendre que le vidage se termine avant un arrêt forcé.N/A
CompletableFuture<Void> waitForFlush((optional) Duration timeoutDuration)Une nouvelle méthode pour attendre la fin du vidage
timeoutDuration: Spécifie la durée pendant laquelle le client doit attendre avant l’expiration.N/A
void initiateFlush()Une nouvelle méthode permettant aux clients de déclencher de manière asynchrone un vidage et de le renvoyer immédiatement.
SnowflakeStreamingIngestChannel¶
Classique
Haute performance
Remarques
getLatestCommittedOffsetToken
getLatestCommittedOffsetTokenCette API a été améliorée. Dans le SDK hautes performances, elle peut désormais récupérer des jetons de décalage pour les canaux non ouverts par le client et permet des échecs partiels.
isValidN/A
Supprimé.
N/A
String getDBName()Nouvelle API.
N/A
String getSchemaName()Nouvelle API.
N/A
String getPipeName()Nouvelle API.
N/A
String getFullyQualifiedPipeName()Nouvelle API.
InsertValidationResponse insertRow(Map<String, Object> row, String offsetToken)
void appendRow(Map<String, Object> row, @Nullable String offsetToken)Nom de l’API modifié. Le type de réponse a changé parce qu’il n’y a plus de validation sur le client.
InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, @Nullable String startOffsetToken, @Nullable String endOffsetToken)
void appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)Nom de l’API modifié. Le type de réponse a changé parce qu’il n’y a plus de validation sur le client.
InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, String offsetToken)N/A
Supprimé.
String getTableName()N/A
Supprimé.
String getFullyQualifiedTableName()N/A
Supprimé.
N/A
String getPipeName()Nouvelle API.
N/A
String getFullyQualifiedPipeName()Nouvelle API.
String getName()
String getChannelName()Changement de nom d’API.
String getFullyQualifiedName()
String getFullyQualifiedChannelName()Changement de nom d’API.
Map<String, ColumnProperties> getTableSchema()N/A
Supprimé.
N/A
ChannelStatus getChannelStatus()Nouvelle API.
CompletableFuture<Void> close()
Void close()Le type de retour est modifié, mais le comportement est le même.
CompletableFuture<Void> close(boolean drop)
Void close(boolean waitForFlush, Duration timeoutDuration)Changement du nom de l’API, mais le comportement est le même.
Boolean isValid()N/A
Supprimé.
N/A
CompletableFuture<Void> waitForFlush((optional)Duration timeoutDuration)Une nouvelle méthode pour attendre la fin du vidage
timeoutDuration: Spécifie la durée pendant laquelle le canal doit attendre avant l’expiration.N/A
void waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)Une nouvelle méthode qui déclenche et attend de manière asynchrone le vidage de toutes les données mises en mémoire tampon dans ce canal spécifique vers le serveur Snowflake. Cette méthode permet de s’assurer que toutes les données en attente ont été écrites avec succès et que l’opération de vidage est terminée avant de poursuivre.
N/A
void initiateFlush()Une nouvelle méthode permettant aux canaux de déclencher un vidage de manière asynchrone.