Skip to content
Latchkey

O que é um data lake? O armazenamento de dados brutos em escala explicado

Um data lake é um armazenamento de baixo custo que guarda dados brutos de qualquer tipo em escala, deixando a estrutura para ser aplicada no momento em que os dados são lidos.

Um data lake faz uma aposta diferente da de um warehouse: armazenar tudo de forma barata agora e decidir como usar depois. Ele guarda dados brutos estruturados, semiestruturados e não estruturados - logs, imagens, JSON, Parquet - em armazenamento de objetos, e permite que muitos motores o consultem.

O que é um data lake

Um data lake é um repositório centralizado, geralmente construído sobre armazenamento de objetos como o Amazon S3, que guarda dados brutos em formatos de arquivo abertos. Diferente de um warehouse, ele não exige que você defina um schema antes de escrever - a estrutura é aplicada na leitura, o que se adéqua a dados diversos e não estruturados.

Lake versus warehouse

Um warehouse armazena dados limpos, modelados e estruturados otimizados para análise SQL. Um lake armazena dados brutos de qualquer forma a um custo menor. Muitas equipes usam ambos: armazenam tudo no lake e depois refinam as partes valiosas no warehouse.

O lakehouse

Formatos de tabela como Delta Lake, Apache Iceberg e Hudi adicionam recursos semelhantes aos de um warehouse - transações, evolução de schema, time travel - sobre o armazenamento do lake. Esse padrão "lakehouse" borra a linha entre lake e warehouse.

Data lakes e CI

Os pipelines que leem de um lake e escrevem nele devem ser testados no CI contra uma amostra de arquivos em um caminho temporário, para que um bug de transformação seja detectado antes de escrever dados ruins no lake compartilhado.

Testing a lake pipeline in CI
steps:
  - run: aws s3 cp s3://lake/sample/ ./data --recursive
  - run: pytest tests/transforms
  - run: python write_parquet.py --out s3://lake/ci-run/

Nota da Latchkey

Os jobs de lake movem arquivos grandes de e para o armazenamento de objetos. Na Latchkey, fazer cache de conjuntos de dados de amostra entre execuções evita downloads repetidos, e o auto-retry em leituras transitórias do S3 impede que um job longo falhe por causa de uma única falha momentânea.

Principais conclusões

  • Um data lake armazena dados brutos de qualquer tipo em escala em formatos abertos, aplicando a estrutura na leitura.
  • Ele complementa um warehouse: armazene tudo de forma barata e depois refine os dados valiosos em tabelas estruturadas.
  • Os formatos de tabela lakehouse adicionam transações e evolução de schema sobre o armazenamento do lake.

Guias relacionados