Migração para a arquitetura de high performance do Snowpipe Streaming

Os dados em tempo real não se resumem mais apenas à velocidade; trata-se de throughput massivo, escala previsível e dados que chegam prontos para serem consultados. Os agentes de IA e as aplicações inteligentes precisam raciocinar continuamente sobre dados atualizados e contexto quase em tempo real, e isso nos inspirou a reimaginar nossa arquitetura de streaming de high performance. Os clientes já estão aproveitando as mais recentes inovações do Snowpipe Streaming para desbloquear casos de uso críticos. Enquanto o Snowpipe Streaming Classic tem sido o mecanismo de ingestão de baixa latência diretamente nas tabelas do Snowflake, a próxima geração de nossa arquitetura de streaming viabiliza cargas de trabalho de IA mais pesadas e complexas à medida que crescem de milhares de eventos por segundo para milhões.
Esta publicação aborda dois aspectos: explicar o imenso valor da nova arquitetura de High Performance do Snowpipe Streaming e mostrar exatamente como é fácil realizar a migração. Desenvolvemos esta arquitetura para desbloquear até 10 GB/s de throughput por tabela em configurações compatíveis, reduzir a latência de ponta a ponta e simplificar o gerenciamento do streaming em escala — tudo isso mantendo uma estrutura de preços direta que transmite confiança mesmo com o crescimento das cargas de trabalho.
Appian, líder em automação de processos low-code, migrou para a arquitetura de High Performance para substituir um pipeline de ingestão rígido e com muito código. Anteriormente, as alterações de esquema exigiam atualizações complexas de código para lidar com DDLs manualmente. Com o Snowpipe Streaming High Performance, a Appian desacoplou a estrutura da tabela de sua lógica de ingestão, permitindo gerenciar pipes via Terraform de forma transparente para sua aplicação Java. De acordo com a Appian, seu mecanismo personalizado "Snowblower" agora ingere quase meio petabyte de dados de log por mês em 27 regiões, com performance de baixa latência em seu ambiente.
“A migração do Snowpipe Streaming Classic para o High Performance foi tranquila, e o SDK simplificado, junto com a infraestrutura, melhorou significativamente nossa experiência geral. Atualmente, estamos lidando com meio petabyte de dados por mês em nosso maior ambiente e ainda não atingimos um limite de throughput.”
Aboubacar Toure
Veja por que você deve migrar para o Snowpipe Streaming High Performance e como fazê-lo.
Por que fazer a atualização? A vantagem do High Performance
Performance em escala
O Snowpipe Streaming High Performance transfere o trabalho pesado de análise e validação de arquivos do cliente para o servidor. Ao desacoplar o caminho de ingestão usando um objeto Pipe, desbloqueamos uma escalabilidade massiva. Agora você pode alcançar até 10 GB/s por tabela e, normalmente, latência de ponta a ponta de 5 a 10 segundos em cargas de trabalho compatíveis. Graças a melhores otimizações de análise de dados, nossos testes internos mostraram que layouts de arquivos otimizados podem resultar em até 50% de performance mais rápida em consultas downstream, em comparação com o Snowpipe Streaming Classic, dependendo da carga de trabalho e das características dos dados.
Desbloqueando casos de uso de baixa latência com Interactive Tables
A performance não se resume apenas à velocidade de ingestão; trata-se da latência de consulta em escala. Ao combinar o Snowpipe Streaming High Performance com o Snowflake Interactive Tables, agora você pode alimentar aplicações de alta simultaneidade diretamente do Snowflake. Isso permite evitar a transferência de dados "quentes" para armazenamentos de dados operacionais externos.
Enquanto as tabelas padrão se destacam em varreduras analíticas massivas, as Interactive Tables são otimizadas para análise de dados de baixa latência e alta simultaneidade, frequentemente alcançando tempos de resposta abaixo de um segundo em cargas de trabalho compatíveis. Você pode transmitir dados diretamente para elas com atualização quase em tempo real. Isso permite criar mecanismos de personalização em tempo real, dashboards voltados ao cliente e aplicações de análise de dados incorporada que atendem a milhares de usuários simultâneos. Essa arquitetura unificada simplifica o seu stack ao reduzir o custo e a complexidade de manter camadas de serviço separadas apenas para velocidade.
Preços previsíveis e fixos
Um dos maiores pontos de atrito com o Classic era o modelo de custo vinculado ao tempo de conexão do cliente, uma variável que poderia escalar de forma imprevisível se você tivesse muitos clientes ociosos. O Snowpipe Streaming High Performance simplifica isso. Agora você paga uma taxa fixa de 0,0037 créditos por gigabyte não comprimido. Você paga pelos dados que move, não pelo tempo que seus clientes permanecem conectados.
Capacidade multilíngue e eficiência
Quebramos a barreira do Java exclusivo. O Snowpipe Streaming High Performance é lançado com SDKs de primeira classe para Java e Python, juntamente com uma API REST. Internamente, esses SDKs foram reconstruídos sobre um núcleo Rust de high performance. Isso não apenas os torna rápidos; os torna leves, e alguns clientes relatam reduções de até 30% na utilização de CPU e memória do lado do cliente, dependendo da carga de trabalho e da implementação.
Novos recursos: Poder sem complexidade
O Snowpipe Streaming High Performance apresenta recursos que anteriormente eram difíceis de implementar no Classic.
Pré-clustering: Classificar dados em trânsito
Os dados de streaming frequentemente chegam sem classificação, levando a uma manutenção em segundo plano dispendiosa ou a consultas lentas até que o autoclustering entre em ação. Com o Snowpipe Streaming High Performance, você pode habilitar CLUSTER_AT_INGEST_TIME = TRUE. Isso classifica e agrupa seus dados em trânsito antes de serem gravados no armazenamento, o que significa que os dados chegam em um formato altamente otimizado para performance imediata de consultas.
Tipos de dados complexos
O streaming moderno não se resume a texto simples. O Snowpipe Streaming High Performance adiciona suporte sólido para formatos de dados complexos, incluindo suporte nativo para os tipos GEOMETRY e GEOGRAPHY. Também adicionamos suporte para valores de coluna de até 128 MB, o que é essencial para blobs JSON pesados ou dados variantes complexos que excediam os limites do Classic.
Transformações em Trânsito Sem Estado
O Snowpipe Streaming High Performance apresenta o objeto Pipe para habilitar transformações em trânsito sem estado diretamente no caminho de ingestão. Agora você pode aplicar a lógica padrão do comando COPY, como conversão de tipo de dados, extração de JSON e reordenação de colunas, antes que os dados cheguem à sua tabela de destino.
Essa abordagem pode reduzir tanto a latência quanto os custos de infraestrutura. Ao transformar os dados à medida que entram, você elimina a necessidade de tabelas de staging intermediárias e os recursos de processamento necessários para o processamento pós-carregamento. Os dados chegam à sua tabela final prontos para análise imediata, eliminando o atraso associado a jobs de transformação secundários.
Evolução de esquema nativa
No Classic, uma alteração no esquema dos dados de origem frequentemente resultava em um pipeline interrompido. O Snowpipe Streaming High Performance oferece suporte nativo a ENABLE_SCHEMA_EVOLUTION = TRUE. Novas colunas são detectadas e adicionadas automaticamente, e as restrições NOT NULL são removidas dinamicamente, mantendo seu pipeline em execução mesmo à medida que seus dados evoluem.
O pipe padrão
Para facilitar a migração, apresentamos o pipe padrão. Você não precisa criar manualmente um objeto Pipe para começar a usar o Snowpipe Streaming High Performance. Se o seu código aponta para uma tabela, mas direciona para a API de High Performance, o Snowflake lida automaticamente com o roteamento. Isso significa que, se o seu código Classic gravava em Table_A, o seu código do Snowpipe Streaming High Performance pode simplesmente gravar em Table_A (via pipe padrão) sem configuração adicional.
Guia de migração: O caminho para o High Performance
A migração foi projetada para ser um processo simples e sem perda de dados.
Etapa 1: Garantir os pré-requisitos
Certifique-se de que sua conta do Snowflake está em uma região compatível. A partir de novembro de 2025, o Snowpipe Streaming High Performance está disponível ao público em implantações comerciais da AWS, Azure e GCP.
Para obter mais informações sobre como começar, incluindo referências de SDK e exemplos de código, consulte a documentação.
Etapa 2: Atualizar seu código
Atualize as dependências da sua aplicação para a versão mais recente do SDK snowflake-streaming.
Há duas alterações importantes na API a serem observadas. Primeiro, o builder agora requer contexto de esquema. Em vez de apenas builder(channelName), você usará builder(channelName, dbName, schemaName). Segundo, o método de ingestão muda de insertRow(...) para appendRow(...).
Etapa 3: Realizar a transição sem perda de dados
Para alternar do Classic para o Snowpipe Streaming High Performance sem descartar ou duplicar registros, basta transferir o token de offset.
Pause sua aplicação de ingestão Classic.
Recupere o último token de offset confirmado do cliente Classic usando getLatestCommittedOffsetToken().
Inicialize o canal do Snowpipe Streaming High Performance usando esse token.
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClient;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestClientFactory;
import com.snowflake.ingest.streaming.SnowflakeStreamingIngestChannel;
import java.util.Properties;
import java.util.Map;
import java.util.UUID;
// 1. Configure your client properties
Properties props = new Properties();
props.put("user", "my_user");
props.put("private_key", "MII...");
props.put("role", "my_role");
props.put("warehouse", "my_warehouse");
// 2. Create the client
SnowflakeStreamingIngestClient client = SnowflakeStreamingIngestClientFactory.builder(
"MY_CLIENT_NAME",
"MY_DATABASE",
"MY_SCHEMA",
"MY_PIPE" // TABLENAME-STREAMING can be used by default for any table
).setProperties(props).build();
// 3. Open a channel
// We use getChannel() to unwrap the response object
SnowflakeStreamingIngestChannel channel = client.openChannel("MY_CHANNEL_NAME", "0").getChannel();
// 4. Ingest a row
Map<String, Object> row = Map.of("c1", 123, "c2", "test_data");
// appendRow adds the row to the buffer
// "001" is the offset token tracking this specific record
channel.appendRow(row, "001");
Exemplo em Java mostrando o novo fluxo da API
Etapa 4: Verificar
Depois que sua aplicação do Snowpipe Streaming High Performance estiver em execução, use o ponto de extremidade getChannelStatus ou faça uma consulta à sua tabela de destino para confirmar que o last_committed_offset_token está avançando e que o seu throughput se estabilizou.
Conclusão
O Snowpipe Streaming High Performance é mais do que uma simples atualização de versão; é a arquitetura que dará suporte às suas cargas de trabalho em tempo real pela próxima década. Com performance de 10 GB/s, evolução de esquema nativa e preços simplificados, nunca houve um momento melhor para fazer a atualização. Ao simplesmente atualizar o SDK do cliente, abrir um novo canal e alternar o fluxo de ingestão, você desbloqueia um salto massivo em throughput e eficiência com tempo de inatividade mínimo.
Mas o valor real desta atualização vai muito além das métricas de ingestão. Na era da IA generativa e dos Large Language Models, a latência é fundamental. Os agentes de IA e os modelos preditivos são tão inteligentes quanto os dados que os alimentam; se seus dados estiverem desatualizados, seus insights serão irrelevantes. O Snowpipe Streaming High Performance ajuda a tornar sua arquitetura pronta para IA, fornecendo o contexto atualizado e de baixa latência que seus modelos precisam para oferecer resultados precisos e acionáveis no momento certo.
O futuro dos dados é o streaming, e o combustível para esse futuro é o tempo real. Certifique-se de que sua plataforma está pronta para lidar com isso.

