Snowpipe Streaming: arquitetura de alto desempenho¶
A arquitetura de alto desempenho do Snowpipe Streaming foi projetada para organizações modernas e com uso intensivo de dados que exigem insights quase em tempo real. Essa arquitetura de última geração aumenta significativamente o rendimento, a eficiência e a flexibilidade da ingestão em tempo real no Snowflake.
Para obter informações sobre a arquitetura clássica, consulte Snowpipe Streaming – Arquitetura clássica. Para saber as diferenças entre o SDK clássico e o SDK de alto desempenho, consulte Comparação entre o SDK clássico e o SDK de alto desempenho.
Principais recursos¶
Taxa de transferência e latência:
Alto rendimento: desenvolvido para oferecem suporte a velocidades de ingestão de até 10 GB/s por tabela.
Insights quase em tempo real: obtém latências de ingestão de ponta a ponta para consulta dentro de 5 a 10 segundos.
Faturamento:
Faturamento simplificado, transparente e baseado na taxa de transferência. Para obter mais informações, consulte Arquitetura de alto desempenho do Snowpipe Streaming: entendendo seus custos.
Ingestão flexível:
Java SDK: utiliza o novo
snowpipe-streaming
SDK, com um núcleo de cliente baseado em Rust para melhorar o desempenho do lado do cliente e reduzir o uso de recursos.REST API: fornece um caminho de ingestão direta, simplificando a integração para cargas de trabalho leves, dados de dispositivos IoT e implementações de borda.
Manuseio otimizado de dados:
Transformações em trânsito: oferece suporte à limpeza e à remodelagem de dados durante a ingestão usando a sintaxe de comando COPY no objeto PIPE.
Visibilidade aprimorada do canal: melhor percepção do status de ingestão principalmente por meio da exibição do histórico do canal no Snowsight e de uma nova
GET_CHANNEL_STATUS
API.
Essa arquitetura é recomendada para:
Ingestão consistente de cargas de trabalho de streaming de alto volume.
Alimentação de análises e painéis em tempo real para a tomada de decisões urgentes.
Integração eficiente de dados de dispositivos IoT e implementações de borda.
Organizações que buscam preços transparentes, previsíveis e baseados na taxa de transferência para ingestão de streaming.
Novos conceitos: o objeto PIPE¶
Ao mesmo tempo em que herda os principais conceitos, como canais e tokens de deslocamento, do Snowpipe Streaming Classic, essa arquitetura apresenta o objeto PIPE como um componente central.
O objeto PIPE é um objeto Snowflake nomeado que atua como ponto de entrada e camada de definição para todos os dados de streaming ingeridos. Ele fornece o seguinte:
Definição de processamento de dados: define como os dados de streaming são processados antes de serem confirmados na tabela de destino, incluindo buffer no lado do servidor para transformações ou mapeamento de esquema.
Habilitação de transformações: permite a manipulação de dados em trânsito (por exemplo, filtragem, reordenação de colunas, expressões simples) ao incorporar a sintaxe de transformação do comando COPY.
Suporte a recursos de tabela: trata a ingestão em tabelas com chaves de clustering definidas, colunas de valor DEFAULT e colunas AUTOINCREMENT (ou IDENTITY).
Gerenciamento de esquema: ajuda a definir o esquema esperado dos dados de streaming de entrada e seu mapeamento para as colunas da tabela de destino, permitindo a validação do esquema no lado do servidor.
Diferenças em relação ao Snowpipe Streaming Classic¶
Para os usuários familiarizados com a arquitetura clássica, a arquitetura de alto desempenho apresenta as seguintes alterações:
Novos SDK e APIs: requer o novo
snowpipe-streaming
SDK (Java SDK e REST API), exigindo atualizações do código de cliente para migração.Requisito de objeto PIPE: todas as definições de ingestão, configurações (por exemplo, transformações) e esquemas de dados são gerenciadas por meio do objeto PIPE no lado do servidor, uma mudança em relação à configuração mais orientada pelo cliente do Classic.
Associação de canais: os aplicativos clientes abrem canais em um objeto PIPE específico, não diretamente em uma tabela de destino.
Validação de esquema: passa do lado do cliente (SDK clássico) para a aplicação no lado do servidor pelo Snowflake, com base no objeto PIPE.
Requisitos de migração: é necessário modificar o código do aplicativo cliente para o novo SDK e definir objetos PIPE no Snowflake.
Limitações e considerações¶
Opção Snowpipe ON_ERROR: a opção STREAMING Snowpipe ON_ERROR apenas oferece suporte para CONTINUE.
Arquiteturas compatíveis (Rust Core): Arm64 Mac, Windows, Arm64-linux e X86_64-linux.
Requisitos do Linux: se estiver usando o SDK no Linux, seu sistema precisa ter pelo menos a versão 2.18 da biblioteca glibc instalada.
Ambiente de implementação: somente as implementações no AWS são compatíveis.
Link privado: PrivateLink não é compatível.
Tabelas agrupadas (ingestão): embora as tabelas agrupadas possam ser tabelas de destino, nenhum clustering ocorrerá durante o processo de ingestão.
Replicação: não há suporte para replicação.
ALTER PIPE SET PIPE_EXECUTION_PAUSED = true
: embora o openChannel falhe quando pausado, a ingestão pode não parar imediatamente.Função de autorização: a função padrão é usada para autorização. A capacidade de especificar outras funções está planejada para o futuro.
Fuso horário: o SDK usará automaticamente o UTC. Os usuários não poderão alterar essa configuração.
Restrição de carga útil vazia: o SDK e a REST API não aceitam o envio de conjuntos de linhas que contenham uma carga útil vazia. Os envios devem incluir pelo menos uma linha de dados para que a ingestão seja bem-sucedida.
Visibilidade da mensagem de erro: embora as mensagens de erro estejam disponíveis na resposta de status do canal, elas não são exibidas na nova exibição do histórico do canal.