paint-brush
Como usar o MinIO como tabelas externas para estender o Snowflakeby@minio
8,167
8,167

Como usar o MinIO como tabelas externas para estender o Snowflake

MinIO6m2023/08/03
Read on Terminal Reader

MinIO é um armazenamento de objeto nativo de nuvem de alto desempenho. Ele funcionará em todos os tipos de Kubernetes (upstream, EKS, AKS, GKE, etc.), bem como em máquinas virtuais, como VMs de nuvem pública, VMWare, etc. e em hardware bare metal. Por causa disso, o MinIO pode se tornar o armazenamento de dados global para os clientes do Snowflake - onde quer que seus dados estejam.
featured image - Como usar o MinIO como tabelas externas para estender o Snowflake
MinIO HackerNoon profile picture
0-item
1-item
2-item

Snowflake é agora o padrão de fato para plataformas de armazenamento de dados em nuvem. Ele foi projetado para oferecer suporte a uma variedade de tarefas de dados de pipelines, ETL, análises e governança. Tradicionalmente, todos os dados precisavam ser movidos para o Snowflake para que uma empresa aproveitasse os recursos do Snowflake.


Snowflake, no entanto, entendeu que as empresas desejam integrar seus dados onde quer que residam, sem ter que mover os dados. Como resultado, com a introdução do suporte de mesa externo, as empresas agora poderão conseguir exatamente isso.


Isso tem impactos reais, tanto na economia da implantação do Snowflake, quanto na quantidade de dados disponíveis para a plataforma Snowflake para análise e ciência de dados.


A disponibilidade de tabelas externas não alterará os locais onde o Snowflake é executado - ele ainda será executado exclusivamente nas três principais nuvens públicas (AWS, GCP, Azure). No entanto, removerá o requisito de que todos os dados sejam armazenados no Snowflake para que o Snowflake opere nele.


O MinIO é talvez o maior beneficiário dessa mudança. MinIO é um armazenamento de objeto nativo de nuvem de alto desempenho. Ele funcionará em todos os tipos de Kubernetes (upstream, EKS, AKS, GKE, etc.), bem como em máquinas virtuais, como VMs de nuvem pública, VMWare, etc. e em hardware bare metal. Por causa disso, o MinIO pode se tornar o armazenamento de dados global para os clientes do Snowflake - onde quer que seus dados estejam.


Para garantir que os dados certos estejam disponíveis para o usuário certo, é imperativo que haja um controle de acesso refinado nesses data lakes multinuvem. A capacidade do MinIO de se integrar com IDPs de terceiros e seus sofisticados recursos de controle de acesso baseado em políticas (PBAC) garantem que isso não seja uma reflexão tardia.


Embora o Snowflake ofereça suporte a endpoints S3 (que naturalmente inclui outros armazenamentos de objetos), esses armazenamentos de objetos não são capazes de executar em todos os locais onde uma empresa mantém seus dados. Por exemplo, os dispositivos não são executados na nuvem pública ou no OpenShift ou Tanzu. Para alcançar uma estratégia consistente de dados em qualquer lugar, as empresas precisarão adotar o MinIO.


Além disso, o Snowflake tornou-se uma missão crítica na empresa. Tanto que agora a resiliência está sendo arquitetada nesses sistemas. Essa resiliência não é responsável apenas pela falha da região na nuvem, ela é responsável pela falha total da nuvem.


A dependência da nuvem ÚNICA provou ser uma arquitetura ruim, conforme escrevi anteriormente. O MinIO, com sua capacidade de estar disponível em qualquer lugar e replicar entre nuvens privadas, públicas e de borda, fornece a única solução verdadeira para disponibilidade de dados em várias nuvens.

Simples de usar

Então, quão simples é para o usuário final? Imagine que você tenha um balde no MinIO chamado 'Bucket1'. Você pode configurá-lo para executar qualquer comando do SnowSQL como se fosse apenas outra tabela.


Por exemplo: Selecione * de Bucket1;



Como a maioria das coisas no Snowflake, conectar-se aos seus dados armazenados no MinIO também é relativamente simples.


Aqui está o que você precisa para começar:

Configurando o Floco de Neve

O suporte de tabela externa precisa ser ativado para seu ambiente Snowflake. Se você receber erros como 'prefixo de URL inválido encontrado em: ' s3compat://snowflake/ ', isso provavelmente significa que ele não está ativado. Entre em contato com seu representante do Snowflake para ativá-lo.

Configurando MinIO

Existem apenas alguns requisitos na configuração do MinIO para fazê-lo funcionar com o Snowflake.


  1. O MinIO deve ser configurado para permitir acesso ao estilo DNS e o bucket deve estar disponível publicamente.
  2. Atualmente, a região deve ser definida como NULL ou igual à região da instância Snowflake (por exemplo, 'us-west-2'). Você receberá uma mensagem de erro da consulta Snowflake para saber qual região está esperando.


No exemplo abaixo, o bucket “snowflake” contém 4 objetos e outro objeto na pasta/sub-prefixo “sn1”. O floco de neve buscará todos esses objetos.


Para integrar isso com o Snowflake, se o servidor MinIO estiver em https://play.min.io , o balde deve estar acessível em https://snowflake.play.min.io


Os arquivos de amostra estão disponíveis em https://docs.snowflake.com/en/user-guide/getting-started-tutorial-prerequisites.html#sample-data-files-for-loading




Há duas maneiras pelas quais os buckets MinIO podem ser integrados ao Snowflake. A primeira como “Staging Area” e a segunda como mesa externa. Vamos ver os dois

Acesso à área de preparação

Como parte de um processo ETL, os dados são normalmente selecionados e preparados a partir de uma fonte de dados ou data lake, movidos para uma área de preparação e, em seguida, carregados em um Warehouse para que as consultas possam ser executadas nele.


Tradicionalmente, essas áreas de preparação para o Snowflake ficavam no próprio Snowflake, então esse era o fluxo:


Data lake (no local, nuvem pública etc.) -> Preparação do floco de neve -> Tabela interna do floco de neve


As empresas agora podem configurar o MinIO como uma área de preparação e mover os dados diretamente para uma tabela interna do Snowflake para executar consultas nela.


Isso faz o seguinte


  • Simplifica o fluxo
  • Permite que os dados estejam disponíveis mais rapidamente para análise para atender às necessidades de negócios
  • Garante que não haja cópias desnecessárias dos dados, o que ajuda na governança e no custo.


O novo fluxo seria: Dados no MinIO (no local, nuvem pública, etc.) -> Tabela interna Snowflake


Os exemplos a seguir são mostrados no console do Snowflake, mas os mesmos podem ser executados por meio da CLI do Snowflake.

Para play.min.io , use
AWS_KEY_ID='Q3AM3UQ867SPQQA43P2F'
AWS_SECRET_KEY='zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG'





A referência para o comando Snowflake CREATE STAGE está disponível aqui: https://docs.snowflake.com/en/sql-reference/sql/create-stage.html

Acesso à Tabela Externa

As consultas no Snowflake tinham que ser feitas em tabelas internas. Isso significava que todos os dados - mesmo para consultas ad hoc - tinham que ser movidos para o Snowflake. Isso resultou em custos, bem como na incapacidade de consultar em tempo hábil.


As empresas agora podem acessar dados diretamente em depósitos MinIO usando os novos recursos de acesso à tabela externa introduzidos pelo Snowflake.


O tempo gasto pela consulta inicial dependerá da quantidade de dados que está sendo transferida, mas as leituras são armazenadas em cache e as consultas subsequentes podem ser mais rápidas até a próxima atualização.


Usando a abordagem de tabela externa, os dados não precisam ser copiados e o bucket pode ser usado como uma tabela externa para consultas, junções, etc.


No entanto, em troca, os benefícios são enormes.


  • Isso amplia as capacidades do depósito sem incorrer no custo da mudança.
  • A capacidade de executar análises em dados em tempo real já está disponível.
  • A movimentação de dados apenas para executar uma consulta ad hoc pode ser completamente evitada.
  • A análise é possível nos casos em que os dados não podem ser movidos por conformidade ou outros motivos comerciais.
  • Você ainda obtém todas as vantagens dos recursos do Snowflake com os mesmos recursos que já estão familiarizados com a plataforma Snowflake


Um exemplo é mostrado abaixo:



A referência para o comando Snowflake CREATE EXTERNAL TABLE está disponível aqui: https://docs.snowflake.com/en/sql-reference/sql/create-external-table.html

Usando Snowflake CLI (SnowSQL)

Os mesmos comandos podem ser executados usando o Snowflake CLI (SnowSQL).


Você pode encontrar as instruções sobre como instalar o SnowSQL em sua plataforma aqui: https://docs.snowflake.com/en/user-guide/snowsql-install-config.html


A única diferença é que você tem que começar com o comando


$ snowsql -a <identificador_da_conta> -u <nome_usuário>


O identificador da conta está no formato <nome da organização>-<nome da conta>. Você pode encontrar isso na página Admin no console do Snowflake.



Resumo

E é isso.


Se você é um cliente do MinIO que deseja adicionar recursos do Snowflake ou se é um cliente do Snowflake que deseja estender seus recursos para dados armazenados fora do Snowflake, experimente. De qualquer maneira, você consegue extrair mais de seu investimento atual.


Publicado também aqui .