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).

Arquitetura analítica moderna demonstrando a evolução de Data Warehouse e Data Lake para a arquitetura Lakehouse com camadas medalhão
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
  1. 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.
  2. 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.
  3. 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.

Explorar este tema no Grafo de Conhecimento