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:

  • 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.