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 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.
Requisitos de software¶
Java
Requer Java 11 ou posterior.
Repositório Maven do SDK: SDK Java com Snowpipe Streaming
Referência da API: Referência do SDK Java
Python
Requer a versão Python 3.9 ou posterior.
Repositório PyPI do SDK: SDKPython com Snowpipe Streaming
Referência da API: Referência do SDK Python
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 e Python SDK: use o novo
snowpipe-streamingSDK, com um núcleo de cliente baseado em Rust para melhorar o desempenho no cliente e diminuir o uso de recursos.REST API: Fornece um caminho de ingestão direta, simplificando a integração para cargas de trabalho leve, dados de dispositivos IoT e implantações de borda.
Nota
Recomendamos que você comece com oSDK do Snowpipe Streaming sobre API REST para se beneficiar do melhor desempenho e da experiência de introdução.
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_STATUSAPI.
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 das transformações: permite a manipulação de dados em andamento (por exemplo, filtragem, reordenação de colunas, expressões simples) incorporando a sintaxe de transformação do comando COPY.
Suporte a recursos de tabela: lida com a ingestão em tabelas com chaves de clustering definidas, colunas de valor DEFAULT e colunas AUTOINCREMENT (ou IDENTITY).
Gerenciamento de esquemas: ajuda a definir o esquema esperado dos dados de streaming recebidos e seu mapeamento para as colunas da tabela de destino, permitindo a validação do esquema no lado do servidor.
Pré-clustering de dados durante a ingestão¶
O Snowpipe Streaming pode fazer um clustering de dados em uso durante a ingestão, o que melhora o desempenho das consultas em suas tabelas de destino. Esse recurso classifica seus dados diretamente durante a ingestão antes de serem confirmados. Essa classificação dos dados otimiza a organização para acelerar as consultas.
Para aproveitar o pré-clustering, sua tabela de destino deve ter chaves de clustering definidas. Depois, você pode ativar esse recurso definindo o parâmetro CLUSTER_AT_INGEST_TIME como TRUE na instrução COPY INTO ao criar ou substituir o canal do Snowpipe Streaming.
Para obter mais informações, consulte CLUSTER_AT_INGEST_TIME. Esse recurso só está disponível na arquitetura de alto desempenho.
Importante
Ao usar o recurso de pré-clustering, não desative o recurso de clustering automático na tabela de destino. Desativar o clustering automático pode levar à degradação do desempenho da consulta ao longo do tempo.
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-streamingSDK (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.