Snowflake Overview - Architecture, Features & Key Concepts
Introdução ao Snowflake
O que é o Snowflake?
- O Snowflake é definido como uma plataforma de dados baseada em nuvem, oferecida como uma solução conveniente de software como serviço (SaaS).
- A natureza nativa da nuvem do Snowflake permite a integração com uma ampla gama de outros serviços em nuvem.
- Embora frequentemente categorizado como um armazém de dados, suas capacidades vão além das funcionalidades tradicionais, posicionando-o como uma plataforma de dados sofisticada.
Funcionalidades e Estrutura
Armazenamento e Processamento de Dados
- O Snowflake permite a configuração de um ambiente abrangente para armazenamento de diversos tipos de dados, incluindo estruturados e não estruturados, sem necessidade de definir esquemas previamente.
- Suporta formatos populares como JSON, Avro, ORC, Parquet e XML, facilitando a execução interna de cargas de trabalho relacionadas à engenharia e ciência dos dados.
Integração e Eficiência
- Com recursos como snowpipe, streams e tasks, o Snowflake possibilita carregamentos eficientes e transformações robustas em pipelines ETL e ELT.
- A operação do Snowflake como SaaS elimina preocupações com planejamento da infraestrutura, armazenamento de dados ou otimizações técnicas.
Arquitetura do Snowflake
Tipos de Arquitetura
- Existem duas principais arquiteturas para processamento paralelo: compartilhamento por disco (shared disk) e compartilhamento por nada (shared nothing).
- Na arquitetura shared disk, múltiplos processadores compartilham os mesmos recursos; já na arquitetura shared nothing cada processador possui seus próprios recursos dedicados.
Abordagem Híbrida
- O Snowflake adota uma abordagem híbrida que combina as vantagens das duas arquiteturas mencionadas.
- A camada única do sistema inclui armazenamento em colunas otimizadas no cloud storage e serviços que gerenciam consultas SQL eficientemente.
Arquitetura do Snowflake
Conexão e Arquiteturas
- O Snowflake é conectado através de uma rede de alta largura de banda, funcionando como uma única plataforma. Existem duas arquiteturas principais: a arquitetura de disco compartilhado e a arquitetura "shared nothing".
- A arquitetura de disco compartilhado oferece recursos acoplados, facilitando a configuração e gestão, além de ser econômica. No entanto, não é tão escalável ou tolerante a falhas quanto a arquitetura "shared nothing".
- Na arquitetura "shared nothing", o armazenamento e os processadores estão agrupados em cada máquina, o que impede a escalabilidade independente; se um componente precisar ser escalado, ambos devem ser aumentados.
Abordagem Híbrida do Snowflake
- A arquitetura única do Snowflake adota uma abordagem híbrida chamada "multi-cluster shared data architecture", onde a camada de armazenamento de dados é desacoplada da camada de processamento.
- O armazenamento pode escalar independentemente com base no tamanho dos dados hospedados na plataforma. É possível acessar e processar esses dados usando motores de processamento disponíveis em tamanhos variados conforme a carga de trabalho.
Estrutura da Arquitetura do Snowflake
- Quando os dados são carregados no Snowflake, eles são reorganizados em um formato columnar otimizado proprietário e armazenados em serviços de nuvem como AWS S3 ou Azure Blob Storage.
- O gerenciamento do armazenamento dos dados é totalmente responsabilidade do Snowflake, incluindo particionamento e compressão. Os objetos de dados não são acessíveis diretamente pelos clientes; o acesso ocorre apenas por meio das operações SQL.
Camadas Operacionais
- Cada armazém virtual opera como um cluster computacional independente; assim, o desempenho de um armazém não é afetado pelas atividades dos outros.
- A camada de serviços em nuvem atua como o cérebro do Snowflake, coordenando atividades desde o login até o despacho das consultas. Serviços críticos incluem gerenciamento da infraestrutura e controle de acesso.
Vantagens da Arquitetura Única
- Essa arquitetura distinta confere ao Snowflake forças únicas que fazem dele uma escolha poderosa para diversas aplicações relacionadas a dados.