O que é o Snowflake?
Se alguém me pedisse para descrever o Snowflake com quantas palavras possível, eu escolheria estas:
- Data Warehouses
- Dados em escala grande
- Multi-Cloud
- Separação
- Escalável
- Flexível
- Simples
Se eles quisessem que eu expandisse, eu juntaria as palavras desta forma:
O Snowflake é uma plataforma de gerenciamento de data warehouse baseada em nuvem altamente popular. Ele se destaca de concorrentes por sua capacidade de lidar com dados e cargas de trabalho em escala grande de forma mais rápida e eficiente. Seu desempenho superior vem de sua arquitetura única, que usa camadas de armazenamento e cálculo separadas, permitindo que seja incrivelmente flexível e escalável. Além disso, integra-se nativamente com vários fornecedores de nuvem. Apesar destas funcionalidades avançadas, permanece fácil de aprender e implementar.
Se eles pedissem ainda mais detalhes, bem, então eu escreveria este tutorial. Se você estiver totalmente novo no assunto, o curso de Introdução ao Snowflake do DataCamp é um ótimo ponto de partida.
Por que usar o Snowflake?
O Snowflake serve mais de 8900 clientes em todo o mundo e processa 3,9 biliões de consultas por dia. Esses tipos de estatísticas de uso não são nada aleatórios.
Abaixo estão as melhores vantagens do Snowflake que têm muito apelo:
1. Arquitetura baseada em nuvem
A Snowflake opera em nuvens, permitindo que as empresas escalem recursos de acordo com a demanda sem se preocupar com a infraestrutura física (hardware). A plataforma também gerencia tarefas de manutenção rotineira, como atualizações de software, gerenciamento de hardware e ajustes de performance. Isto alivia a sobrecarga de manutenção, permitindo que as organizações se concentrem no que importa: obter valor dos dados.
2. Elasticidade e escalabilidade
A Snowflake separa camadas de armazenamento e computação, permitindo que os usuários escalem seus recursos de computação independentemente de suas necessidades de armazenamento. Esta elasticidade permite a manipulação eficiente de diversas cargas de trabalho com desempenho ótimo e sem custos desnecessários.
3. Concorrência e desempenho
A Snowflake gerencia facilmente altas concorrências: vários usuários podem acessar e fazer consultas aos dados sem perda de desempenho.
4. Compartilhamento de dados
As medidas de segurança da Snowflake permitem o compartilhamento de dados com outras organizações, departamentos internos, parceiros externos, clientes ou outros interessados. Não há necessidade de transferências de dados complexas.
5. Viagem no tempo
A Snowflake usa o termo engenhoso “Viagem no Tempo” para a versão de dados. Sempre que uma mudança é feita no banco de dados, a Snowflake tira uma snapshot. Isso permite que usuários acessem dados históricos em vários momentos.
6. Eficiência de custo
A Snowflake oferece um modelo de pagamento conforme uso, graças à sua capacidade de escalar recursos de forma dinâmica. Você pagará apenas por aquilo que usa.
Todos esses benefícios combinados tornam a Snowflake uma ferramenta de gerenciamento de data warehouse altamente desejável.
Agora, vamos olhar para a arquitetura subjacente da Snowflake que desbloqueia esses recursos.
O que é um Data Warehouse?
Antes de mergulharmos na arquitetura da Snowflake, vamos rever os data warehouses para garantir que estamos todos na mesma página.
Um data warehouse é um repositório centralizado que armazena grandes quantidades de dados estruturados e organizados de várias fontes para uma empresa. Pessoas diferentes (funcionários) em organizações usam os dados para derivar diferentes insights.
Por exemplo, analistas de dados, em colaboração com a equipe de marketing, podem executar um teste A/B para uma nova campanha de marketing usando a tabela de vendas. Especialistas em RH podem consultar as informações dos funcionários para rastrear o desempenho.
Estes são alguns exemplos de como as empresas globais usam data warehouses para impulsionar o crescimento. Mas sem uma implementação e gerenciamento adequados usando ferramentas como a Snowflake, data warehouses permanecem como conceitos elaborados.
Você pode aprender mais sobre o assunto com nosso curso em Gerenciamento de Data Warehouses.
Arquitetura da Snowflake
A arquitetura única da Snowflake, projetada para consultas analíticas mais rápidas, vem de sua separação das camadas de armazenamento e computação. Essa distinção contribui para os benefícios mencionados anteriormente.
Camada de armazenamento
Na Snowflake, a camada de armazenamento é um componente crítico, armazenando dados de forma eficiente e escalável. Aqui estão algumas características chave dessa camada:
- Baseado na nuvem:O Snowflake integra-se de forma fluida com os principais fornecedores de nuvem, como AWS, GCP e Microsoft Azure.
- Formato de coluna:O Snowflake armazena dados em um formato de coluna, otimizado para consultas analíticas. Ao contrário dos formatos de linha usados por ferramentas como o Postgres, o formato de coluna é bem-sucedido para agregação de dados. No armazenamento de colunas, as consultas acessam apenas as colunas específicas que são necessárias, tornando-se mais eficiente. Por outro lado, os formatos de linha exigem o acesso a todas as linhas na memória para operações simples como calcular médias.
- Micro-particionamento:O Snowflake usa uma técnica chamada micro-particionamento que armazena as tabelas em memória em pequenos pedaços. Cada pedaço é típicamente imutável e apenas alguns megabytes em tamanho, o que torna a otimização e execução de consultas muito rápidas.
- Clonagem zero-copy:O Snowflake tem uma funcionalidade única que permite criar cópias virtuais de dados. A clonagem é instantânea e não consome memória adicional até que mudanças sejam feitas na nova cópia.
- Escala e elástica:A camada de armazenamento escala horizontalmente, o que significa que ela pode lidar com volumes de dados crescentes adicionando mais servidores para distribuir a carga. Além disso, essa escalabilidade acontece independentemente dos recursos de processamento, o que é ideal quando se deseja armazenar grandes volumes de dados mas analisar apenas uma pequena fração.
Agora, vamos olhar para a camada de processamento.
Camada de processamento
Como o nome sugere, a camada de computação é o motor que executa suas consultas. Ela funciona em conjunto com a camada de armazenamento para processar dados e realizar várias tarefas de cálculo. A seguir, há mais detalhes sobre como esta camada opera:
- Virtual Warehouses:Você pode pensar em Virtual Warehouses como times de computadores (nós de computação) projetados para lidar com o processamento de consultas. Cada membro do time se encarrega de uma parte diferente da consulta, tornando a execução impressionantemente rápida e paralelizada. A Snowflake oferece Virtual Warehouses em diferentes tamanhos, e consequentemente, a preços diferentes (os tamanhos incluem XS, S, M, L, XL).
- Arquitetura multi-cluster, multi-node:A camada de computação usa vários clusters com vários nós para alta concorrência, permitindo que vários usuários acessem e realizem consultas em dados simultaneamente.
- Otimização de consulta automática: O sistema da Snowflake analisa todas as consultas e identifica padrões para otimizar usando dados históricos. As otimizações comuns incluem o recorte de dados desnecessários, uso de metadados e escolha do caminho de execução mais eficiente.
- Cache de resultados:A camada de computação inclui um cache que armazena os resultados das consultas executadas frequentemente. Quando a mesma consulta é executada novamente, os resultados são retornados quase instantaneamente.
Estes princípios de projeto da camada de computação contribuem para a capacidade da Snowflake de lidar com diferentes e demandantes cargas de trabalho na nuvem.
Camada de serviços de nuvem
A camada final é os serviços em nuvem. Como esta camada integra-se a cada componente da arquitetura do Snowflake, há muitos detalhes sobre sua operação. Além das funcionalidades relacionadas às outras camadas, ela tem as seguintes responsabilidades adicionais:
- Segurança e controle de acesso: Esta camada aplica medidas de segurança, incluindo autenticação, autorização e criptografia. Administradores usam o Controle de Acesso baseado em Funções (RBAC) para definir e gerenciar papéis de usuário e permissões.
- Compartilhamento de dados: Esta camada implementa protocolos de compartilhamento de dados seguros entre diferentes contas e até organizações terceiras. Os consumidores de dados podem acessar os dados sem a necessidade de mover dados, promovendo colaboração e monetização de dados.
- Suporte a dados semi-estruturados: Outro benefício único do Snowflake é sua capacidade de lidar com dados semi-estruturados, como JSON e Parquet, mesmo sendo uma plataforma de gerenciamento de armazenamentos de dados. Ele pode facilmente consultar dados semi-estruturados e integrar os resultados com tabelas existentes. Esta flexibilidade não é vista em outras ferramentas RDBMS.
Agora que temos uma imagem de alto nível da arquitetura do Snowflake, vamos escrever algum SQL na plataforma.
Configurando o SnowflakeSQL
O Snowflake tem sua própria versão do SQL chamada SnowflakeSQL. A diferença entre ela e outras dialetos de SQL é semelhante à diferença entre osacentos ingleses.
Muitas das consultas analíticas que você executa em dialetos como o PostgreSQL não mudam, mas existem algumas discrepâncias em comandos de DDL (Linguagem de Definição de Dados).
O Snowflake fornece dois interfaces para executar o SnowSQL:
- Snowsight: Uma interface web para interagir com a plataforma.
- SnowSQL: Um cliente de linha de comando (CLI) para gerenciar e consultar bancos de dados.
Vamos ver como configurar ambos e executar algumas consultas!
Snowsight: Interface web
Para começar com Snowsight, acesse a página inicial do Snowflake e selecione “Iniciar grátis.” Insira suas informações pessoais e selecione qualquer provedor de nuvem listado. A escolha realmente não importa, pois a avaliação gratuita inclui créditos de valor de US$ 400 para qualquer opção (você não será obrigado a configurar as credenciais de nuvem por conta própria).
Após verificar seu email, você será redirecionado para a página de Planilhas. Planilhas são ambientes interativos de programação em tempo real onde você pode escrever, executar e visualizar os resultados de suas consultas SQL.
Para executar algumas consultas, precisamos de um banco de dados e uma tabela (nós não usaremos os dados de exemplo no Snowsight). O GIF abaixo mostra como você pode criar um novo banco de dados chamado “test_db” e uma tabela chamada “diamonds” usando um arquivo CSV local. Você pode baixar o arquivo CSV executando o código em este gist do GitHub no seu terminal.
No GIF, o Snowsight nos informa que há um problema com um dos nomes de colunas. since a palavra “table” é uma palavra-reservada, eu a envolvi em aspas duplas.
A seguir, você será direcionado para uma nova planilha onde você pode executar qualquer consulta SQL que desejar. Como mostrado na GIF, a interface da planilha é bem simples e altamente funcional. Dedique alguns minutos para familiarizar-se com os painéis, os botões e seus respectivos locais.
SnowSQL: CLI
Nada se compara com a emoção de gerenciar e consultar um banco de dados completo através do seu terminal. É por isso que existe o SnowSQL!
No entanto, para o iniciar, precisamos seguir alguns passos, o que é normalmente um processo mais lento do que o de início com o Snowsight.
Como primeiro passo, baixe o instalador do SnowSQL da página Download do Snowflake Developers. Baixe o arquivo relevante. Como estou usando WSL2, eu escolheria a versão Linux:
No terminal, eu baixo o arquivo usando o link copiado e executo-o com bash
:
$ curl -O https://sfc-repo.snowflakecomputing.com/snowsql/bootstrap/1.2/linux_x86_64/snowsql-1.2.31-linux_x86_64.bash $ bash snowsql-1.2.31-linux_x86_64.bash
Para outros ambientes, você pode seguir os passos de instalação da página destas documentações do Snowflake.
Uma vez instalado com sucesso, você deveria obter a seguinte mensagem:
Nota: Em sistemas semelhantes ao Unix, é importante garantir que o comando snowsql
esteja disponível em todas as sessões do terminal. Para isso, você deve adicionar o diretório /home/username/bin
à sua variável $PATH. Você pode fazer isso adicionando a seguinte linha aos seus arquivos .bashrc
, .bash_profile
ou .zshrc
: export PATH=/home/yourusername/bin:$PATH
. Lembre-se de substituir yourusername
pelo seu nome de usuário real.
A mensagem nos está pedindo para configurar as configurações da conta para se conectar ao Snowflake. Existem duas maneiras de fazer isso:
- Passar os detalhes da conta interativamente no terminal.
- Configurar as credenciais em um arquivo de configuração global do Snowflake.
Como é mais permanente e seguro, vamos prosseguir com a segunda opção. Para instruções específicas da plataforma, leia a página Connecting through SnowSQL da documentação. As instruções abaixo são para sistemas semelhantes ao Unix.
Primeiro de tudo, vá para seu endereço de email e encontre o email de boas-vindas do Snowflake. Ele contém o nome da sua conta no link de login: account-name.snowflakecomputing.com
. Copie-o.
Em seguida, abra o arquivo ~/.snowsql/config
com um editor de texto como VIM ou VSCode. Na seção connections
, descomente os seguintes três campos:
- Nome da conta
- Nome de usuário
- Senha
Substitua os valores padrão pelo nome da conta que você copiou e pela senha e nome de usuário que você forneceu durante o cadastro. Após fazer isso, salve e feche o arquivo.
Depois, volte ao seu terminal e digite snowsql
. O cliente deverá se conectar automaticamente e fornecer um editor SQL que inclui recursos como realce de código e completação de tabulação. Aqui está como deve ser:
Conectando a um banco de dados existente no SnowSQL
No momento, não estamos conectados a nenhum banco de dados. Vamos corrigir isso conectando ao banco de dados test_db
que criamos com o Snowsight. Primeiro, verifique os bancos de dados disponíveis com SHOW DATABASES
:
$ SHOW DATABASES $ USE DATABASE TEST_DB
Em seguida, especifique que você vai usar o banco de dados test_db
(não diferencia maiúsculas de minúsculas) a partir de agora. Então, você pode executar qualquer consulta SQL nas tabelas do banco de dados conectado.
$ SELECT COUNT(*) FROM DIAMONDS
Criando um novo banco de dados e tabela no SnowSQL
Se você faz parte de uma grande organização, pode haver casos onde a responsabilidade de criar um banco de dados e preenchê-lo com dados existentes recai sobre você. Para praticar para esse cenário, vamos tentar carregar o conjunto de dados de Diamantes como uma tabela no SnowSQL dentro de um novo banco de dados. Aqui estão as etapas que você pode seguir:
1. Crie um novo banco de dados:
CREATE DATABASE IF NOT EXISTS new_db;
2. Use o banco de dados:
USE DATABASE new_db;
3. Crie um formato de arquivo para CSV:
CREATE OR REPLACE FILE FORMAT my_csv_format -- Pode ser nomeado de qualquer forma TYPE = CSV FIELD_DELIMITER = ',' SKIP_HEADER = 1; -- Assumindo que a primeira linha é um cabeçalho
Precisamos manualmente definir um formato de arquivo e nomeá-lo, pois a Snowflake não pode inferir o esquema e a estrutura de arquivos de dados como CSV, JSON ou XML. O formato de arquivo que definimos acima é adequado para o arquivo diamonds.csv
que nós temos (é separado por vírgulas e inclui um cabeçalho).
4. Crie um estágio interno:
CREATE OR REPLACE STAGE my_local_files;
Um estágio no Snowflake é uma área de armazenamento onde você pode carregar seus arquivos locais. Estes podem ser arquivos de dados estruturados e semi-estruturados. Acima, estamos criando um estágio chamado my_local_files
.
5. Coloque o arquivo CSV no estágio:
PUT file:///home/bexgboost/diamonds.csv @my_local_files;
6. Crie a tabela:
CREATE TABLE diamonds ( carat FLOAT, cut VARCHAR(255), color VARCHAR(255), clarity VARCHAR(255), depth FLOAT, table FLOAT, price INTEGER, x FLOAT, y FLOAT, z FLOAT );
7. Carregue os dados do estágio para a tabela:
COPY INTO diamonds FROM @my_local_files/diamonds.csv FILE_FORMAT = my_csv_format;
8. Verifique:
SELECT COUNT(*) FROM diamonds;
Essas etapas criarão uma nova base de dados Snowflake, definirão um formato de arquivo CSV, criará um estágio para armazenar arquivos locais, carregarão um arquivo CSV no estágio, criarão uma nova tabela, carregarão os dados do CSV na tabela e, finalmente, verificarão a operação contando o número de linhas na tabela.
Se o resultado retornar a contagem de linhas, parabéns, você criou com sucesso uma base de dados e carregou dados locais nela com o SnowSQL. Agora, você pode consultar a tabela da maneira que quiser.
Conclusão e aprendizado adicional
Ufa! Começamos com alguns conceitos simples, mas ao final, realmente mergulhamos nos detalhes complexos. Bem, essa é minha ideia de um tutorial decente.
Você provavelmente já imaginou que há muito mais no Snowflake do que o que cobrimos. Na verdade, a documentação do Snowflake inclui guias de iniciação rápida que na verdade são de 128 minutos de duração! Mas antes de se aventurar nesses, recomendo começar a mexer com alguns outros recursos. Que tal esses:
- Curso de Introdução ao Snowflake
- Um webinar sobre modernização de análise de vendas com o Snowflake
- Análise de dados no Snowflake usando um código Python acompanhado
- Guias de usuário oficiais do Snowflake
- Recursos para desenvolvedores do Snowflake
Obrigado por ler!
Source:
https://www.datacamp.com/tutorial/introduction-to-snowflake-for-beginners