Comparaison entre le SDK classique et le SDK haute performance

Voici un résumé de ce qui a changé entre le SDK classique et le SDK haute performance :

  • OpenClient : vous devez spécifier les DB, SCHEMA et PIPE pour la nouvelle version. Auparavant, il suffisait de spécifier le NAME.

  • OpenChannel :

    • Il vous suffit de spécifier le nom du canal pour la nouvelle version. Auparavant, vous deviez spécifier les DB, SCHEMA, TABLE et ERROR_OPTION.

    • Dans la nouvelle version, un OpenChannelResult contenant à la fois l’entité du canal et le channelStatus lors de l’ouverture du canal vous est renvoyé. Vous n’aurez pas besoin de récupérer le dernier jeton engagé par le biais d’un autre appel à RPC dans Snowflake, contrairement à l’ancienne version.

  • InsertRows est renommé AppendRows.

  • CloseChannel : auparavant, Snowpipe Streaming passait un appel asynchrone pour attendre que le jeton soit entièrement engagé et renvoyer un objet futur pour que l’utilisateur puisse récupérer le résultat. Cette fonction n’est actuellement pas prise en charge dans la nouvelle version.

  • GetLatestCommittedOffsetTokens : il s’agit de l’API du lot pour obtenir les derniers jetons de décalage des canaux ouverts par ce client et n’autorise pas les échecs partiels dans le SDK classique. Dans le nouveau SDK, il est permis de récupérer les derniers jetons de décalage qui n’ont pas été ouverts par le client et cette API autorise également les échecs partiels.

  • isValid est supprimé dans la nouvelle version.

Les tableaux suivants montrent les différences d’API entre le SDK classique et le SDK haute performance :

SnowflakeStreamingIngestClientFactory et SnowflakeStreamingIngestClientFactory.Builder

Classique

Haute performance

Remarques

builder(String name)

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

Notez que name dans la version classique = clientName dans la version haute performance.

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.

SnowflakeStreamingIngestChannel openChannel(OpenChannelRequest request)

OpenChannelResult openChannel(String channelName, 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. Il permet désormais de récupérer le statut des canaux qui ont été ouverts par d’autres clients et qui n’appartiennent potentiellement pas au client.

N/A

ChannelStatusBatch getChannelStatuses(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

Uniquement requis pour OAuth.

SnowflakeStreamingIngestChannel

Classique

Haute performance

Remarques

InsertValidationResponse insertRow(Map<String, Object> row, String offsetToken)

AppendResult appendRow(Map<String, Object> row, 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, String startOffsetToken, String endOffsetToken)

AppendResult appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)

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 drop()

Changement du nom de l’API, mais le comportement est le même.

Boolean isValid()

N/A

Supprimé.