Comparação entre o SDK clássico e o SDK de alto desempenho¶
Esta seção resume as principais diferenças entre os SDKs clássico e de alto desempenho.
Gerenciamento de clientes e canais
OpenClient: o SDK de alto desempenho exige que você especifique
DB,SCHEMAePIPE. No SDK clássico, você só precisa especificar oNAMEde um cliente.OpenChannel: o SDK de alto desempenho simplifica isso exigindo somente o nome do canal. O SDK clássico exige que você especifique
DB,SCHEMA,TABLEeERROR_OPTION. O novo SDK também retorna umOpenChannelResultque contém a entidade e o status do canal, eliminando a necessidade de uma chamada RPC separada para obter o último token de offset confirmado.Suporte para offsetToken: o novo método
openChannelagora tem um parâmetrooffsetTokenopcional, permitindo abrir um canal em uma posição específica.openChannel(String channelName, (optional) String offsetToken).
Ingestão de dados
InsertRows renomeado: o método
InsertRowsagora é chamadoAppendRowsno SDK de alto desempenho.AppendResult removido: os métodos
appendRoweappendRowsnão retornam mais umAppendResult. Suas assinaturas mudaram paravoid appendRow(Map<String, Object> row, String offsetToken)evoid appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken).
Novos métodos assíncronos e utilitários
GetChannelStatus: esta é uma nova API disponível no objeto
Channel.waitForFlush: os novos métodos
waitForFlushforam adicionados aos objetos do cliente e ao canal.Cliente:
void close(boolean waitForFlush, Duration timeoutDuration)Canal e cliente:
void waitForFlush((optional) Duration timeoutDuration)
waitForCommit: um novo método,
CompletableFuture<Boolean> waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration), permite que você aguarde uma confirmação.initiateFlush: esse novo método
void initiateFlush()chama de forma assíncrona uma liberação em um canal ou cliente, o que é útil para liberar dados sem esperar pelo tempo limite ou pelos limites de tamanho.
Outras mudanças
GetLatestCommittedOffsetTokens: essa API foi melhorada. No SDK de alto desempenho, ele agora pode buscar tokens de offset para canais não abertos pelo cliente e permite falhas parciais.
isValid removido: O método
isValidfoi removido do SDK de alto desempenho.
As tabelas a seguir mostram as mudanças da API do SDK clássico para o SDK de alto desempenho:
SnowflakeStreamingIngestClientFactory e SnowflakeStreamingIngestClientFactory.Builder¶
Clássico |
Alto desempenho |
Notas |
|---|---|---|
|
|
|
N/A |
|
Um novo método. Permite que você especifique o |
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.
SnowflakeStreamingIngestChannelopenChannel (solicitação OpenChannelRequest)
OpenChannelResultopenChannel(String channelName, (optional) String offsetToken)Diferentes argumentos de solicitação e valores de retorno.
Map<String,String> getLatestCommittedOffsetTokens(List<SnowflakeStreamingIngestChannel> channels)
Map<String, String> getLatestCommittedOffsetTokens(List<String> channelNames)Diferentes argumentos de solicitação. O SDK de alto desempenho ativa a API para obter o status do canal aberto por outros clientes e potencialmente não pertence ao cliente.
N/A
ChannelStatusBatch getChannelStatus(List<String> channelNames)Nova API.
Void dropChannel(DropChannelRequest request)
Void dropChannel(String channelName)Argumento de solicitação diferente.
Void setRefreshToken(String refreshToken)N/A
Removido.
N/A
CompletableFuture<Void> close(boolean waitForFlush, Duration timeoutDuration)Um novo método
closedo cliente que tem mais controle sobre o processo de desligamento.waitForFlush: um parâmetro booleano para indicar se o cliente deve esperar que todos os canais sejam liberados antes de serem desligados.timeoutDuration: umDurationpara especificar quanto tempo o cliente deve esperar para que a liberação seja concluída antes de um desligamento forçado.N/A
CompletableFuture<Void> waitForFlush((optional) Duration timeoutDuration)Um novo método para esperar a liberação ser concluída.
timeoutDuration: especifica quanto tempo o cliente deve esperar antes de atingir o tempo limite.N/A
void initiateFlush()Um novo método para os clientes acionador de forma assíncrona uma liberação e retornarem imediatamente.
SnowflakeStreamingIngestChannel¶
Clássico
Alto desempenho
Notas
getLatestCommittedOffsetToken
getLatestCommittedOffsetTokenessa API foi melhorada. No SDK de alto desempenho, ele agora pode buscar tokens de offset para canais não abertos pelo cliente e permite falhas parciais.
isValidN/A
Removido.
N/A
String getDBName()Nova API.
N/A
String getSchemaName()Nova API.
N/A
String getPipeName()Nova API.
N/A
String getFullyQualifiedPipeName()Nova API.
InsertValidationResponse insertRow(Map<String, Object> row, String offsetToken)
void appendRow(Map<String, Object> row, @Nullable 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, @Nullable String startOffsetToken, @Nullable String endOffsetToken)
void appendRows(Iterable<Map<String, Object>> row, String startOffsetToken, String endOffsetToken)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 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 close(boolean waitForFlush, Duration timeoutDuration)O nome da API é alterado, mas o comportamento é o mesmo.
Boolean isValid()N/A
Removido.
N/A
CompletableFuture<Void> waitForFlush((optional)Duration timeoutDuration)Um novo método para esperar a liberação ser concluída.
timeoutDuration: Especifica quanto tempo o canal deve esperar antes de atingir o tempo limite.N/A
void waitForCommit(Predicate<String> tokenChecker, Duration timeoutDuration)Um novo método que aciona de forma assíncrona e aguarda a liberação de todos os dados em buffer dentro deste canal específico para o servidor Snowflake. Esse método garante que todos os dados pendentes sejam gravados com sucesso e que a operação de liberação seja concluída antes de prosseguir.
N/A
void initiateFlush()Um novo método para canais para acionador uma liberação de forma assíncrona.