O Snowflake Data Platform, é um serviço de armazenamento e análise de dados baseado em nuvem que rapidamente ganhou destaque no setor. A abordagem inovadora do Snowflake para gerenciamento de dados atende às demandas da era moderna e vem equipada com uma infinidade de recursos e capacidades que o diferenciam de seus concorrentes. Neste artigo, apresentarei as principais facetas da Snowflake Data Platform, destacando sua capacidade de transformar a maneira como as organizações lidam com seus dados
Quer saber como tenho usado algumas delas?
Agendamento de Tarefas:
As tarefas Snowflake simplificam a automação e orquestração de fluxos de trabalho de dados. Os usuários podem agendar, gerenciar e monitorar processos relacionados a dados, garantindo que atualizações de dados, transformações e tarefas de relatórios sejam executadas sem problemas e dentro do cronograma.
CDC:
Change Data Capture (CDC) é crucial para integração e análise de dados em tempo real. Snowflake Streams permite que as organizações capturem e repliquem alterações nos dados conforme elas acontecem, oferecendo suporte a atualizações quase instantâneas e análises em tempo real.
Muitas empresas recorrem a ferramentas terceiras para usar o CDC, mas uma vez que o dado é copiado ou referenciado dentro do snowflake, ele ja te entrega essa ferramenta de CDC nativa.
Utilizar o CDC tem me salvo uma boa quantidade de dinheiro, uma vez que apenas processo os dados diferenciais de outras cargas.
Snowsight, para Dashboards:
Snowsight, a ferramenta integrada de visualização e análise de dados do Snowflake, permite que os usuários criem, personalizem e compartilhem painéis e relatórios interativos com facilidade. Esse recurso de análise de autoatendimento permite que os usuários obtenham insights e colaborem sem a necessidade de ferramentas externas.
Não tenho usado o snowsight como uma reporting tool, mas mais como uma ferramenta de controle. Consigo criar dashboards de observabilidade para governança, consumo entre outros, e fica tudo centralizado no snowflake e as queries eu mesmo crio =D.
Mas sim, tenho colegas que usam para criar analises iniciais e depois migrar parar outras ferramentas mais apropriadas.
SDK do Snowpark:
O Snowpark SDK é o sonho de qualquer desenvolvedor, permitindo que os usuários escrevam aplicativos e códigos personalizados em linguagens de programação familiares, como Scala, Java e Python. Essa extensibilidade aprimora os recursos do Snowflake, permitindo que as organizações adaptem a plataforma às suas necessidades específicas de processamento e análise de dados.
Ou seja, escreva python ou spark na própria UI do snowflake ou baixe o pacote da SDK para executar externamente pela API. Lembrando que a ENGINE de processamento é o SNOWFLAKE.
Veja como é simples pegar dados de uma tabela e trazer para um datarame:
import snowflake.snowpark as snowpark
from snowflake.snowpark.functions import col
def main(session: snowpark.Session):
df_table = session.table("sample_product_data")
SaaS (Software como Serviço):
Snowflake opera como uma solução SaaS totalmente gerenciada, tirando o fardo do gerenciamento da infraestrutura dos ombros das organizações. Isso significa que os usuários não precisam se preocupar com provisionamento de hardware, atualizações de software ou manutenção de servidores. Snowflake cuida de tudo, permitindo que os usuários se concentrem em extrair valor de seus dados, em vez de gerenciar a infraestrutura subjacente.
Logicamente, um uso controlado e gerenciado é recomendado, pois como assim qualquer serviço SaaS, a cobrança por uso de storage e warehouse pode explodir se mal utilizado.
Criptografia Automática:
Snowflake emprega uma abordagem multicamadas para segurança de dados. Os dados em trânsito são criptografados usando TLS (Transport Layer Security) padrão do setor, enquanto os dados em repouso são criptografados automaticamente usando criptografia AES-256 forte. Esta criptografia garante que, mesmo no caso improvável de violação ou acesso não autorizado, os dados permaneçam protegidos e ilegíveis.
Esta feature ja resolve muitos problemas de governança que sua empresa possa levantar, pois o snowflake praticamente gerencia pra voce.
Se quiser mais segurança, voce mesmo pode gerenciar a sua própria chave de criptografia para acesso aos dados. Tenho usado parte das aplicações sendo gerenciadas por chaves na Amazon KMS.
Time Travel (até 90 dias):
O recurso de viagem no tempo no Snowflake é uma ferramenta crucial para análise e recuperação de dados históricos. Ele permite que os usuários acessem versões anteriores de seus dados por até 90 dias, mesmo depois de terem sido modificados ou excluídos. Isso é extremamente útil para conformidade, auditoria e compreensão da evolução dos dados ao longo do tempo.
Exemplo de uso, considerando que voce quer ver o dado como estava no dia 5 de abril:
SELECT * FROM my_table AT(TIMESTAMP => 'Fri, 05 April 2024 16:20:00 -0700'::timestamp_tz);
Também requer analise de uso, pois voce paga os dados extras salvos. O recurso pode ser desativado para tabelas que voce não deseja, e por padrão, tabelas materializadas são criadas com 1 dias de time travel.
Disaster Recovery:
A distribuição de dados do Snowflake em diversas regiões e seus recursos de failover instantâneo o tornam altamente resiliente a desastres. No caso de uma interrupção regional ou catástrofe imprevista, o Snowflake garante que os dados permaneçam acessíveis, o tempo de inatividade seja minimizado e a continuidade dos negócios seja mantida.
Outra feature que facilita o seu plano de governança e recuperação!
Snowpipe
Feature automatica de ingest de dados em quase tempo real de provedores de nuvem baseada em eventos. Isso significa que a medida que novos arquivos chegam ao seu data lake, como S3, GCS ou Blob Storage, um evento integrado entre a cloud e o snowflake é disparado e os dados sao ingeridos automaticamente para dentro do no Snowflake, na tabela que voce designou como destino.
Eu acredito que esta feature, que executa um comando SQL chamado COPY INTO, é de longe a feature eu que mais utilizo.
Compartilhamento seguro de dados:
Esse recurso permite o compartilhamento seguro e controlado de dados através das fronteiras organizacionais. Ele permite que as organizações compartilhem dados com parceiros externos, clientes ou outras divisões da empresa, mantendo o controle sobre quem pode acessar os dados e o que pode fazer com eles. Este é um recurso inestimável para promover a colaboração e a tomada de decisões baseada em dados.
Tenho usado os shares para compartilhar dados através de departamentos com dois grandes benefícios:
Centralização da verdade: A fonte de dados original é única e exclusivamente minha. A partir da minha origem, outros setores podem trabalhar com a fonte sem interferir no dado central.
Custo reduzido: Uma vez que os dados que compartilho com outro setor são apenas ponteiros de metadados, o custo acontece apenas sobre os dados alterados, pois o dados iguais a fonte são cobrados uma vez.
Processamento Multi Cluster automatico:
Os Warehouses multicluster da Snowflake permitem que as empresas dimensionem de forma elástica seus recursos de computação. Os usuários podem adicionar ou remover clusters conforme necessário para acomodar cargas de trabalho flutuantes, garantindo que o desempenho seja mantido durante picos de demanda e que os custos sejam otimizados durante períodos de menor atividade.
Basicamente, auto escalonamento horizontal do seu cluster de processamento, de forma automatica. Pode ser configurado tanto pela UI quanto pelo código.
Otimização de dados: Particionamento automático de dados e Clustering:
Snowflake gerencia automaticamente o particionamento de dados, um elemento crítico para otimizar o desempenho da consulta. Isso significa que, à medida que os dados aumentam, o Snowflake os redistribui automaticamente entre as partições, eliminando a necessidade de ajuste manual e reduzindo a sobrecarga operacional.
Essa feature tem funcionado para mim perfeitamente, me poupando tempo demais em pensar em partições e cria-las no momento de criar a tabela. Normalmente, ele seleciona automaticamente a coluna de data com melhor distribuição. Voce pode trocar depois.
Também é possível adicional cluster keys em sua table no caso de voce ter queries especificas que precisam de uma otimização diferente, onde apenas o particionamento por data não é suficiente.
Suporte para dados semi-estruturados e não estruturados:
O suporte nativo do Snowflake para dados semiestruturados e não estruturados, como JSON, Avro e Parquet, o torna uma plataforma versátil para lidar com uma ampla variedade de tipos de dados. Esta flexibilidade é particularmente benéfica para organizações que lidam com diversas fontes e formatos de dados.
Essa flexibilidade é fantástica, poder cruzar dados tabulares com dados semi-estruturados usando SQL, com comandos simples, agiliza o processo. Sem contar que também poder deixar os dados armazenados em formatos semi-estruturados em colunas te proporciona novos use cases e também uma compactação de dados maior.
Agnóstico em nuvem:
A natureza agnóstica da nuvem do Snowflake significa que as organizações têm a flexibilidade de escolher seu provedor de nuvem preferido, seja AWS, Azure ou GCP. Esta liberdade permite que as empresas alinhem a sua estratégia de dados com a sua infraestrutura e experiência existentes na nuvem.
Container Service:
O serviço de contêiner do Snowflake simplifica a implantação de cargas de trabalho do Snowflake em ambientes em contêineres. Este é um recurso poderoso para organizações que adotaram a conteinerização e desejam aproveitar seus benefícios para processamento e análise de dados.
Esta é uma feature muito nova, e no momento estou estudando mais a fundo. Mas ja consegui por exemplo, executar um container de DBT e hospedar ele no próprio Snowflake. Outro uso muito comum, seria para hospedar modelos de machine learning em container.
Integração de aplicativos Streamlit:
A integração do Snowflake com Streamlit, uma biblioteca Python popular para construção de aplicativos da web, permite que os usuários criem aplicativos e painéis personalizados que são totalmente integrados aos seus dados do Snowflake. Isso melhora a interatividade e a acessibilidade dos insights de dados.
Tenho alguns stakeholders que estão explorando fortemente essa feature, principalmente pois ao contrário de usar uma ferramenta de VIZ, ela oferece tambem a opção de escrever dados no snowflake, facilitando a interação do usuário e parametrização de tabelas.
Outras Features:
Precisaria de muitos mais artigos para falar sobre todas as features, entao segue uma lista de outras features interessantes que valem a pena a pesquisa:
Search Optimization
Warehouse mais eficiente para ML
Dynamic data masking
Row Level Security
Integração nativa com AWS, GCP e Azure
Ingest em Streaming do Kafka e Spark Streaming (via conectores)
Concluindo, a ampla gama de recursos e capacidades do Snowflake Data Platform o torna uma solução versátil e abrangente para gerenciamento de dados moderno. Esteja você procurando segurança, escalabilidade, flexibilidade ou desempenho, o Snowflake tem tudo, fornecendo uma base sólida para que as organizações extraiam insights valiosos de seus dados no mundo atual, orientado por dados.