Comparação entre o SDK clássico e o SDK de alto desempenho

Aqui está um resumo do que mudou do SDK clássico para o SDK de alto desempenho:

  • OpenClient: você precisa especificar DB, SCHEMA e PIPE para a nova versão. Anteriormente, você só precisava especificar NAME.

  • OpenChannel:

    • Você só precisa especificar o nome do canal para a nova versão. Anteriormente, você precisava especificar DB, SCHEMA, TABLE e ERROR_OPTION.

    • Na nova versão, um OpenChannelResult é retornado a você contendo a entidade do canal e o channelStatus quando o canal é aberto. Você não precisará buscar o último token confirmado por meio de outra chamada RPC para o Snowflake, em comparação com a versão antiga.

  • InsertRows é renomeado para AppendRows.

  • CloseChannel: anteriormente, o Snowpipe Streaming fazia uma chamada assíncrona para aguardar a confirmação completa do token e retornava um objeto future para que o usuário recuperasse o resultado. No momento, isso não é compatível com a nova versão.

  • GetLatestCommittedOffsetTokens: esta é uma API em lote para obter os tokens de deslocamento mais recentes dos canais abertos por este cliente e não permite falhas parciais no SDK clássico. No novo SDK, é permitido buscar os tokens de deslocamento mais recentes que não foram abertos pelo cliente e essa API também permite falhas parciais.

  • isValid foi removido na nova versão.

As tabelas a seguir mostram as diferenças da API entre o SDK clássico e o SDK de alto desempenho:

SnowflakeStreamingIngestClientFactory e SnowflakeStreamingIngestClientFactory.Builder

Clássico

Alto desempenho

Notas

builder(String name)

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

Observe que name na versão clássica = clientName na versão de alto desempenho.

SnowflakeStreamingIngestClient

Clássico

Alto desempenho

Notas

String getName()

String getClientName()

Mudança de nome de API apenas; as mesmas informações são retornadas.

N/A

String getDBName()

Nova API.

N/A

String getPipeName()

Nova API.

N/A

String getSchemaName()

Nova API.

SnowflakeStreamingIngestChannel openChannel (solicitação OpenChannelRequest)

OpenChannelResult openChannel (cadeia de caracteres channelName, cadeia de caracteres offsetToken)

Diferentes argumentos de solicitação e valores de retorno.

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

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

Argumentos de solicitação diferentes. Agora é possível buscar o status dos canais abertos por outros clientes e que potencialmente não pertencem ao cliente.

N/A

ChannelStatusBatch getChannelStatuses(List<Cadeia de caracteres> channelNames)

Nova API.

Void dropChannel(DropChannelRequest request)

Void dropChannel(String channelName)

Argumento de solicitação diferente.

Void setRefreshToken(String refreshToken)

N/A

Necessário apenas para OAuth.

SnowflakeStreamingIngestChannel

Clássico

Alto desempenho

Notas

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

AppendResult appendRow(Map<String, Object> row, String offsetToken)

Nome da API alterado. O tipo de resposta foi alterado porque não há mais validação no cliente.

InsertValidationResponse insertRow(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)

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

O tipo de resposta foi alterado porque não há mais validação no cliente.

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

N/A

Removido.

String getTableName()

N/A

Removido.

String getFullyQualifiedTableName()

N/A

Removido.

N/A

String getPipeName()

Nova API.

N/A

String getFullyQualifiedPipeName()

Nova API.

String getName()

String getChannelName()

Alteração do nome da API.

String getFullyQualifiedName()

String getFullyQualifiedChannelName()

Alteração do nome da API.

Map<Cadeia de caracteres, ColumnProperties> getTableSchema()

N/A

Removido.

N/A

ChannelStatus getChannelStatus()

Nova API.

CompletableFuture<Void> close()

Void close()

O tipo de retorno é alterado, mas o comportamento é o mesmo.

CompletableFuture<Void> close(boolean drop)

Void drop()

O nome da API é alterado, mas o comportamento é o mesmo.

Boolean isValid()

N/A

Removido.