Software · Arquitetura & Engenharia de Dados
Modern Data Stack: Da Dualidade Data Warehouse e Data Lake à Arquitetura Lakehouse com Delta Lake
A convergência das arquiteturas analíticas: como a união entre o baixo custo de armazenamento de Data Lakes e as garantias transacionais ACID de Data Warehouses deu origem à Arquitetura Lakehouse e ao padrão medalhão (Bronze, Prata, Ouro).
Neste artigo
Historicamente, a engenharia de dados corporativa foi moldada por uma dicotomia arquitetural incômoda. De um lado, os Data Warehouses tradicionais ofereciam alto desempenho para consultas SQL analíticas, esquemas rígidos e integridade transacional completa (ACID), porém cobravam um custo proibitivo de computação e armazenamento proprietário acoplado, falhando em lidar com dados não estruturados. Do outro lado, os Data Lakes baseados em armazenamento de objetos na nuvem (como Azure Data Lake Storage, AWS S3 e Google Cloud Storage) proporcionavam escalabilidade praticamente infinita e baixo custo, mas frequentemente degeneravam em "pântanos de dados" (data swamps) pela ausência de governança e inconsistência em leituras concorrentes.
A consolidação da Arquitetura Lakehouse resolveu essa separação estrutural. Ao implementar uma camada transacional e de metadados aberta sobre arquivos de armazenamento colunar (como Parquet), ela viabiliza garantias ACID, versionamento de tabelas (Time Travel) e governança unificada diretamente sobre o armazenamento de baixo custo da nuvem pública.
A Linha do Tempo da Arquitetura Analítica de Dados
flowchart LR
DW["1. Era Data Warehouse (1980s-2000s)<br/>(Dados estruturados, esquemas rígidos, alto custo, SQL analítico acoplado)"] --> DL["2. Era Data Lake (2010s)<br/>(Armazenamento de objetos barato, dados brutos, sem ACID, data swamps)"]
DL --> LH["3. Era Lakehouse (Presente)<br/>(ACID sobre Parquet, Delta Lake / Iceberg, governança unificada para BI e IA)"]
Comparativo Fundamental entre os Três Modelos
| Critério de Arquitetura | Data Warehouse Tradicional | Data Lake Tradicional | Arquitetura Lakehouse Moderna |
|---|---|---|---|
| Tipos de Dados Aceitos | Exclusivamente estruturados e tabulares | Estruturados, semi-estruturados (JSON) e não-estruturados (vídeo, áudio) | Todos os tipos de dados nativamente em um único repositório |
| Garantias Transacionais | ACID completo e estrito | Nenhuma garantia (sobrescrita de arquivos sem isolamento) | ACID completo via logs de transação abertos (Delta / Iceberg) |
| Custo de Armazenamento | Alto (armazenamento e computação acoplados) | Baixíssimo (armazenamento de objetos em nuvem) | Baixíssimo (armazenamento de objetos em nuvem) |
| Performance de Consultas SQL | Altíssima com índices especializados | Baixa a moderada (exige varredura de diretórios inteiros) | Altíssima (otimizações de Z-Order, caching e data skipping) |
| Suporte a Machine Learning | Limitado (exige exportação de dados para fora) | Nativo (acesso direto a arquivos pelo Spark/Python) | Nativo (mesmo repositório serve relatórios de BI e modelos de IA) |
A Arquitetura Medalhão: Bronze, Prata e Ouro
O padrão de engenharia mais adotado em Lakehouses modernos com Databricks e Apache Spark é a Arquitetura Medalhão (Medallion Architecture), que refina a qualidade dos dados em estágios graduais:
flowchart LR
Sources["Fontes Operacionais<br/>(Bancos OLTP, APIs REST, Tópicos Kafka, Logs)"] --> Bronze
subgraph Medalhao["Camadas da Arquitetura Medalhão (Lakehouse)"]
direction TB
Bronze["Camada Bronze (Dados Brutos / Raw)<br/>• Ingestão direta imutável e com append-only<br/>• Preserva formato original e histórico de payloads"]
Prata["Camada Prata (Dados Limpos & Tipados)<br/>• Esquema padronizado, deduplicação e enriquecimento<br/>• Aplicação de regras de qualidade e normalização"]
Ouro["Camada Ouro (Dados Agregados de Negócio)<br/>• Modelagem dimensional (Star Schema / Fatos e Dimensões)<br/>• Pronta para consumo por Power BI, Tableau e dashboards"]
Bronze -->|"Pipelines de Limpeza"| Prata
Prata -->|"Agregações & Modelagem"| Ouro
end
Ouro --> Consumers["Consumidores Finais<br/>(BI Executivo, Relatórios Financeiros, Modelos de ML)"]
1. Camada Bronze (Raw Zone)
Os dados são ingeridos no formato em que foram gerados, de maneira estritamente incremental (append-only). Ela atua como a fonte da verdade bruta e imutável. Caso um bug seja descoberto nas transformações de negócio semanas depois, todo o pipeline pode ser reprocessado a partir da camada Bronze sem perda de dados históricos.
2. Camada Prata (Enriched / Cleansed Zone)
Neste estágio, os esquemas são validados, os tipos de dados são convertidos (ex: datas de strings para timestamps UTC válidos), nulos anômalos são tratados e duplicatas causadas por retentativas de rede são removidas. A camada Prata representa a visão canônica consolidada das entidades de negócio da empresa (como Clientes, Pedidos e Faturas).
3. Camada Ouro (Curated / Business Zone)
Aqui os dados são organizados e agregados para responder a perguntas de negócio específicas, frequentemente seguindo a modelagem dimensional de Kimball (tabelas de Fatos e Dimensões em esquema estrela). É a camada de consumo direto para analistas de dados, relatórios de auditoria financeira e painéis de BI executivos.
A Mecânica Interna do Delta Lake: ACID sobre Parquet
Como o Delta Lake (ou alternativas abertas como Apache Iceberg e Apache Hudi) consegue oferecer transações ACID sobre arquivos em nuvem que originalmente não possuem suporte nativo a transações?
A chave reside na separação estrita entre os dados físicos e os metadados de transação:
flowchart TD
subgraph Storage["Estrutura de Arquivos em Objeto (Azure ADLS / AWS S3)"]
direction TB
Log["Diretório de Metadados: _delta_log/<br/>• 000000.json (Commit 1: Adiciona part-01.parquet)<br/>• 000001.json (Commit 2: Remove part-01, adiciona part-02.parquet)<br/>• 000010.checkpoint.parquet (Consolidação de checkpoints)"]
DataFiles["Arquivos de Dados Colunares:<br/>• part-00001-c000.snappy.parquet<br/>• part-00002-c000.snappy.parquet<br/>• part-00003-c000.snappy.parquet"]
end
- Transaction Log (_delta_log): Cada operação de inserção, exclusão ou atualização grava um arquivo JSON sequencial ordenado no diretório
_delta_log/detalhando exatamente quais arquivos Parquet foram adicionados e quais tornaram-se obsoletos. - Concorrência Otimista (OCC): Múltiplos processos podem ler e escrever simultaneamente. Se dois processos tentarem atualizar o mesmo registro ao mesmo tempo, o motor detecta o conflito no log de transações, aborta a gravação conflitante e executa uma nova tentativa limpa.
- Time Travel e Auditoria: Como os arquivos antigos não são destruídos imediatamente no momento da atualização, é possível consultar o estado exato da tabela em qualquer data passada ou versão de commit:
-- Consulta o estado exato da base antes do fechamento contábil de ontem:
SELECT * FROM vendas_ouro TIMESTAMP AS OF '2026-09-17 23:59:59';
Essa convergência técnica unificou a infraestrutura de engenharia de dados moderna, permitindo que a mesma base que alimenta relatórios financeiros regulatórios de missão crítica sirva de entrada para o treinamento e inferência de modelos modernos de inteligência artificial sem duplicação de dados.