#3 Data Lake, Data Warehouse e o conceito de Lakehouse
Série: Trilha prática para se tornar Engenheiro de Dados – Capítulo 3 Pré-requisitos Para seguir este capítulo, você precisa ter rodado os capítulos anteriores:
Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Execute o comando abaixo para instalar as bibliotecas: pip install pandas sqlalchemy pyarrow requests Não se preocupe: vamos usar apenas exemplos simples, que rodam localmente. Por que falar de Data Lake, Data Warehouse e Lakehouse? Nos capítulos anteriores, trabalhamos com um produto e depois criamos uma tabela com SQLite. Foi ótimo para aprender fundamentos. Mas imagine uma empresa de e-commerce com milhões de produtos, milhares de transações por minuto, avaliações de clientes em tempo real e relatórios diários para áreas de negócio . Nesse cenário: Guardar tudo em CSV não funciona. SQLite não escala para centenas de usuários consultando ao mesmo tempo. E sem governança, os dados viram uma bagunça. É aí que entram três arquiteturas fundamentais: Data Lake – o depósito de dados brutos. Data Warehouse (DW) – a biblioteca organizada de dados prontos para análise. Lakehouse – o modelo híbrido que tenta unir os dois. Data Lake Definição Um Data Lake é um repositório centralizado que armazena dados em qualquer formato e em grande volume . Pode receber CSV, JSON, logs de aplicação, fotos, áudios e até dados de IoT. O princípio é: “armazene agora, processe depois” . Data Lake Vantagens Flexibilidade: aceita dados estruturados e não estruturados. Custo-benefício: geralmente mais barato, já que usa armazenamento bruto (ex.: S3, GCS). Escalabilidade: pode armazenar petabytes ou exabytes de dados. Desvantagens Sem organização, pode virar um Data Swamp (pântano de dados inutilizáveis). Consultas lentas, já que os dados não estão otimizados. Necessidade de catálogo de dados (Glue, Hive Metastore) para dar sentido ao que foi armazenado. Ferramentas do mercado
AWS S3 (mais comum). Google Cloud Storage . Azure Data Lake Storage (ADLS) . HDFS (Hadoop Distributed File System, mais legado). Exemplo prático – Criando um mini Data Lake local import requests
import pandas as pd
import os
# Criando a pasta do "Data Lake"
os.makedirs("data_lake", exist_ok=True)
# Extraindo dados de produtos (simulando ingestão bruta)
url = " https://dummyjson.com/products"
data = requests.get(url).json()
# Convertendo lista de produtos em DataFrame
df_produtos = pd.DataFrame(data["products"])
# Salvando em múltiplos formatos no Data Lake local
df_produtos.to_csv("data_lake/produtos.csv", index=False)
df_produtos.to_json("data_lake/produtos.json", orient="records", lines=True)
print("Data Lake criado com arquivos: produtos.csv e produtos.json") Aqui criamos uma versão mini do que seria um Data Lake. É claro que em menores proporções pois em uma empresa, esses arquivos estariam em um bucket AWS S3 , e ferramentas como Glue ou Hive ajudariam a catalogar. Data Warehouse Definição Um Data Warehouse (DW) é um banco de dados especializado em consultas analíticas rápidas . Os dados chegam já limpos, padronizados e organizados . Ideal para BI, relatórios gerenciais e dashboards. Baseado em modelagem dimensional (fatos e dimensões). Data Warehouse Vantagens Performance: consultas otimizadas para análise. Consistência: dados padronizados e confiáveis. Ferramentas de visualização (Tableau, Power BI, Looker) se conectam facilmente. Desvantagens Menos flexível: não lida bem com dados não estruturados (imagens, áudio, etc.). Custo maior: paga-se por performance e otimização. Requer ETL antes de carregar (mais esforço inicial). Ferramentas do mercado Amazon Redshift (AWS). Google BigQuery . Snowflake . Azure Synapse . Exemplo prático – Criando um mini DW com SQLite from sqlalchemy import create_engine
# Lendo dados do Data Lake
df = pd.read_csv("data_lake/produtos.csv")
# Conectando ao banco SQLite (DW local)
engine = create_engine("sqlite:///meu_dw.db")
# Selecionando apenas campos relevantes
df_dw = df[["id", "title", "category", "brand", "price", "stock", "rating"]]
# Gravando tabela no DW
df_dw.to_sql("produtos", engine, if_exists="replace", index=False)
print("Tabela 'produtos' criada no Data Warehouse (SQLite)") Executando queries no SQLite Agora que os dados estão no DW , vamos consultar em SQL. 🅰️ Pelo terminal Digite os seguintes comandos abaixo: sqlite3 meu_dw.db Para deixar a saída do resultado organizada: .headers on
.mode column Para Conferir tabelas: .tables Executar query (exemplo): SELECT category, AVG(price) AS preco_medio, AVG(rating) AS avaliacao_media
FROM produtos
GROUP BY category
ORDER BY preco_medio DESC; 🅱️ Usando programa gráfico Se preferir, use o DB Browser for SQLite : Baixe em: https://sqlitebrowser.org . Abra meu_dw.db. Vá em Execute SQL . Rode a query: SELECT category, AVG(price) AS preco_medio, AVG(rating) AS avaliacao_media
FROM produtos
GROUP BY category
ORDER BY preco_medio DESC; Saída esperada (exemplo simplificado com a API DummyJSON):
Lakehouse Definição O Lakehouse é a tentativa de unir Data Lake e DW: Armazena dados brutos e estruturados no mesmo local. Usa formatos modernos para permitir consultas rápidas sem duplicar dados. LakeHouse Vantagens Flexível + rápido. Evita manter duas infraestruturas separadas. Suporta batch e streaming. Desvantagens
Tecnologia mais nova → menos padronizada. Exige ferramentas específicas (Delta Lake, Iceberg, Hudi). Ferramentas do mercado
Databricks Delta Lake . Apache Iceberg (usado pela Netflix). Apache Hudi (usado pelo Uber). Exemplo prático – Salvando em Parquet # Salvando tabela em formato Parquet (colunar e otimizado)
import pandas as pd
# Carregando os dados do CSV para o Dataframe
df = pd.read_csv("data_lake/produtos.csv")
# Através do Dataframe já carregado é criado o parquet
df.to_parquet("data_lake/produtos.parquet", index=False)
print("Arquivo 'produtos.parquet' salvo no Data Lake (base para um Lakehouse)") O Parquet é o formato mais comum em arquiteturas modernas de Lakehouse. Em empresas, milhares desses arquivos ficam em S3 e são lidos com Athena, Spark ou Databricks . Leituras recomendadas Capítulo 1: Seu primeiro pipeline ETL Capítulo 2: Python + SQL – a dupla inseparável Criando ETLs simples com Python Primeiros passos com Delta Lake Entendendo o AWS Redshift Boas Práticas com AWS Athena para Iniciantes Conclusão Neste capítulo você aprendeu que: Data Lake → depósito de dados brutos e flexível (S3, GCS, ADLS). Data Warehouse → biblioteca estruturada e rápida para análise (Redshift, BigQuery, Snowflake). Lakehouse → o híbrido moderno que une os dois (Delta Lake, Iceberg, Hudi). 👉 O que fizemos aqui foi apenas uma simulação local com CSV, JSON, SQLite e Parquet. Mas não se preocupe: nos próximos capítulos vamos aproximar você do mundo real , explorando ferramentas como Airflow, Spark, Redshift e S3 . O que vem a seguir? 👉 No Capítulo 4: Orquestração de pipelines com Airflow . Você vai aprender por que orquestrar tarefas é essencial e criar seu primeiro DAG. Gostou desse capítulo? 👉 Assine a newsletter Coffee & Tips e receba os próximos capítulos direto no seu e-mail. 👉 Pré-venda exclusiva Em breve também vamos lançar um E-Book avançado , com tutoriais em Spark, Airflow, Redshift, tudo para você se tornar um Engenheiro de Dados! Cadastre-se agora na lista de pré-venda e garanta: Acesso antecipado antes do lançamento oficial 🚀 Benefícios exclusivos para inscritos 💡 Conteúdo extra que não estará disponível gratuitamente Fique ligado!
