Conhecendo a Plataforma Snowflake

Neste artigo irei apresentar minhas primeiras percepções sobre a plataforma Snowflake. A ideia é contextualizar o que é a Plataforma Snowflake e depois apresentar a arquitetura da solução.

Conforme o blog da Interworks, Snowflake foi construída sob conceitos arquitetônicos que se alinham perfeitamente com os objetivos de um Data Lake. Snowflake é uma plataforma que tem por objetivo aproveitar as vantagens do armazenamento barato disponível na nuvem, fornecer o poder de computação sob demanda necessário para o big data e oferecer a capacidade de armazenar dados semiestruturados e estruturados em um só lugar. Como um diferencial, o autor comenta que a arquitetura única da Snowflake se encaixa perfeitamente no requisito de um Data Lake e simplifica tudo através de uma interface SQL que é familiar para engenheiros e administradores de banco de dados.

De acordo com o blog da Snowflake, a arquitetura de dados da solução é única, construída para funcionar em nuvem (cloud-built) com multi-cluster compartilhado e, de acordo com a referência, “torna o sonho do Data Lake moderno uma realidade”. Eles veem seus clientes implementando a solução com o objetivo de ser a única fonte de seus dados analíticos. A arquitetura está representada na figura 1 abaixo:

Figura 1 – Arquitetura Snowflake

A solução inicia com a captura dos dados. A captura de dados ocorre através de uma camada agnóstica de nuvem. Os dados de origem podem estar armazenados em AWS S3, Azure Data Lake Storage ou Google Cloud Storage e podem ser acessados através de simples apontamentos. Uma vez que o dado é acessado, ele é carregado para a próxima camada chamada de “CENTRALIZED STORAGE”, para depois ser processado na segunda camada, “MULTI-CLUSTER COMPUTE”, por clusters compartilhados e por fim ser disponibilizado pela terceira camada chamada de “CLOUD SERVICES”.

O blog Hevodata explica as três camadas da arquitetura da solução:

  1. Storage Layer
  2. Compute Layer
  3. Cloud Services Layer

Vamos entender melhor cada camada:

1) Arquitetura – Storage Layer

Snowflake organiza os dados capturados das origens em várias micro partições que são otimizadas e compactadas internamente. Utiliza um formato colunar para armazenar os dados com tecnologia de armazenamento em nuvem e funcionam como um modelo de disco compartilhado, proporcionando simplicidade no gerenciamento de dados. Isso garante que os usuários não precisem se preocupar com a distribuição de dados através dos vários nós em modelo sem compartilhamento[2]. Os dados armazenados podem ser estruturados ou semiestruturados[4], alguns exemplos de armazenamentos de dados de acordo com a Snowflake são JSON, CSV, Parquet e ORC.

Os nós do cluster se conectam à camada de armazenamento para buscar os dados para processamento de consulta. Como a camada de armazenamento é independente, paga-se apenas pelo armazenamento médio mensal usado. Como o cluster Snowflake é provisionado na nuvem, o armazenamento é elástico e cobrado de acordo com o uso por mês.

A plataforma também permite que as organizações coletem e combinem dados de várias fontes de dados numa camada de armazenamento centralizada.

2) Arquitetura – Compute Layer

Snowflake usa Virtual Warehouse ou em português “Armazém Virtual” para executar as consultas. Além de separar a camada de processamento do armazenamento em disco, assim como as boas práticas de Data Lake sugerem.

Estes Virtual Warehouse são clusters de computação MPP que consistem em vários nós com CPU e memória provisionada na nuvem pela Snowflake[2]. Vários Virtual Warehouse podem ser criados no Snowflake para vários requisitos, dependendo das cargas de trabalho e das necessidades do projeto. Cada Virtual Warehouse pode trabalhar com uma camada de armazenamento específica. E de acordo com o blog, geralmente, um Virtual Warehouse tem seu próprio cluster de computação independente e não interage com outros Virtual Warehouses, porém não foi encontrada referência afirmando que a interação entre os Virtual Warehouse seja possível.

Hevodata também apresenta algumas das vantagens do Virtual Warehouse:

  1. Os Virtual Warehouses podem ser iniciados ou interrompidos a qualquer momento e também podem ser escalados a qualquer momento sem impactar as consultas em execução.
  2. Os Virtual Warehouses também podem ser configurados para suspender ou retomar automaticamente. Podendo utilizar esses comportamentos em casos onde os Virtual Warehouses sejam suspensos após um período específico de tempo e, em seguida, quando uma consulta for enviada, sejam retomados.
  3. Os Virtual Warehouses também podem ser configurados para escalonamento automático (auto-scale) com tamanho mínimo e máximo do cluster. Por exemplo, podemos definir no mínimo 1 e no máximo 3 para que, dependendo da carga de trabalho, o Snowflake possa provisionar entre 1 a 3 nós do clusters.

3) Arquitetura – Cloud Services Layer

Todas as atividades como autenticação, segurança, gerenciamento de metadados dos dados carregados, otimizador de consulta, entre outros que se envolvem com a Snowflake estão nesta camada. Hevodata traz exemplo de uso de serviços tratados por esta camada:

  1. Quando uma solicitação de login é feita, ela deve passar por essa camada;
  2. A consulta enviada à Snowflake será enviada ao otimizador nesta camada e, em seguida, encaminhada à Compute Layer para processamento da consulta.
  3. Os metadados necessários para otimizar uma consulta ou filtrar dados são armazenados nesta camada.

Essas três camadas são escalonadas independentemente e a Snowflake cobra por armazenamento e Virtual Warehouse separadamente. A camada de serviços é tratada em nós de computação provisionados e, portanto, não é cobrada[2]. O blog comenta que a vantagem dessa arquitetura do Snowflake é que com ela pode-se dimensionar qualquer camada independentemente das outras. Por exemplo: você pode dimensionar a camada de armazenamento elasticamente enquanto diversos Virtual Warehouses podem ser provisionados e escalonados quando recursos adicionais são necessários para um processamento mais rápido de consultas e para otimizar o desempenho. A cobrança pelo armazenamento e pelo processamento (Virtual Warehouses) é separada.

Para mais informações sobre a Arquitetura da plataforma Snowflake é possível consultar o site da própria empresa.

No próximo artigo irei abordar diversos exemplos de uso da plataforma com um case prático, aguarde!

Gostou da solução? Nós podemos ajudar!

Conheça nossos conteúdos gratuitos, direcionados aos assuntos de sua preferência!

Enviar

Receba nosso conteúdo

Gostaria de receber de forma gratuita mais conteúdos sobre este ou outros assuntos? Preencha o formulário abaixo e receba nosso conteúdo gratuito!

Parabéns!

Você receberá nosso conteúdo em breve!

Atenção

Tivemos um problema com seu formulário, tente novamente.