Databricks · tema 12 de 30
Lakehouse e Delta Lake
32 min · 2 vídeos · 14 cards · 1 drill
Por que cai
É o coração da stack que o banco usa. A banca costuma abrir com 'o que é lakehouse' e fechar com 'por que Delta e não Parquet puro', que é onde se vê quem já quebrou um pipeline com escrita parcial e quem só leu o release note.
Pré-teste · 1 de 2
responda antes de verUm job Spark escreve 400 arquivos Parquet no S3 e falha no arquivo 250. O que um leitor que consulta a tabela nesse instante enxerga?
Vídeo · português · 12 min
Em uma frase
Lakehouse é a arquitetura que traz garantias de data warehouse para arquivos abertos em object storage, e Delta Lake é o formato de tabela que entrega essas garantias com um log transacional ao lado dos arquivos Parquet.
O dilema que originou o Lakehouse
Antes, você escolhia um lado. O data lake era barato, aberto e aceitava qualquer coisa: log de app, JSON de API, PDF de contrato. Em troca, não garantia nada. A tabela era literalmente o que estivesse no diretório, então um job que morria na metade deixava dado parcial que o leitor consumia sem nenhum aviso.
O data warehouse garantia transação, schema e governança, mas cobrava caro por armazenamento acoplado a computação, prendia o dado em formato proprietário e não digeria bem dado não estruturado. O resultado prático em muitos bancos era manter os dois, copiar dado de um para o outro e passar o dia explicando por que os números divergem.
O Lakehouse recusa a escolha: um armazenamento só, em formato aberto, com as garantias na camada de metadados.
O que é um formato de tabela
Essa distinção derruba muito candidato:
| Camada | Exemplos | Do que trata |
|---|---|---|
| Formato de arquivo | Parquet, ORC, Avro, JSON | Como os bytes de um arquivo são codificados |
| Formato de tabela | Delta Lake, Apache Iceberg, Apache Hudi | Quais arquivos formam a tabela agora, qual é o schema, qual é o histórico |
Delta Lake não substitui o Parquet. Os dados continuam em Parquet. O que o
Delta acrescenta é o diretório _delta_log, com a sequência de commits que diz
quais arquivos estão ativos em cada versão.
Como o Delta consegue ACID sobre object storage
O truque é que o commit não é mover dados, é gravar um arquivo de log. O escritor grava os arquivos Parquet novos em silêncio, invisíveis para todo mundo, e só no fim registra no log que aqueles arquivos entraram e quais saíram. Essa última gravação é atômica: ou o número de versão novo existe, ou não existe.
Com vários escritores, entra a concorrência otimista— Cada escritor lê a versão atual, faz o trabalho e tenta registrar a próxima versão. Se outro chegou primeiro, ele relê o que mudou e tenta de novo. Nada é bloqueado enquanto o trabalho está em andamento.
Como o log também guarda estatísticas por arquivo (mínimo, máximo, nulos por coluna), o motor consegue pular arquivos que não podem conter o filtro. Isso é o data skipping, e é a base da performance.
Os recursos que a banca cobra
- 1Time travel: consultar a tabela em uma versão ou instante anterior, para auditar, comparar cargas e reverter erro.
- 2Schema enforcement: recusar a gravação fora do contrato, para o problema estourar no pipeline e não no relatório.
- 3Schema evolution: acrescentar coluna nova de propósito, quando a mudança é combinada.
- 4MERGE: upsert atômico, que é como se aplica CDC do core e como se atende exclusão de titular por LGPD.
- 5OPTIMIZE: compactar arquivos pequenos gerados por ingestão frequente.
- 6Z-ORDER: agrupar valores próximos das colunas de filtro nos mesmos arquivos para ampliar o data skipping.
- 7VACUUM: remover arquivos que nenhuma versão ativa referencia, respeitando a retenção.
Por que Parquet puro não basta
Esta é a pergunta-chave do tema, e a resposta melhor é uma lista curta de falhas concretas:
| Necessidade | Parquet puro | Delta Lake |
|---|---|---|
| Escrita atômica | Job que morre no meio deixa dado parcial legível | Commit atômico no log: a versão existe ou não existe |
| Isolamento leitor/escritor | Nenhum: o leitor vê o diretório mudando | Leitor fixa uma versão e a lê inteira |
| Histórico e auditoria | Só com backup externo | Time travel por versão ou timestamp |
| Contrato de schema | Qualquer arquivo entra no diretório | Enforcement na gravação, evolution quando intencional |
| Upsert e exclusão pontual | Reescrita manual de partição | MERGE e DELETE atômicos |
Se quiser outro ângulo
Como cai na sabatina
“Por que usar Delta e não simplesmente Parquet no S3?”
Erros comuns
- Dizer que Delta Lake é um formato de arquivo. Não é: o arquivo continua sendo Parquet. Delta é um formato de tabela, ou seja, Parquet mais um log transacional que diz quais arquivos formam a tabela agora.
- Confundir Lakehouse com Databricks. Lakehouse é uma arquitetura; Databricks é uma plataforma que a implementa, e Iceberg e Hudi implementam a mesma ideia com outro formato.
- Achar que time travel substitui backup. O histórico vive enquanto o VACUUM não remover os arquivos antigos e enquanto o log for retido; não é cópia independente nem sobrevive à exclusão da tabela.
- Rodar VACUUM com retenção curta para economizar espaço. Isso apaga o histórico, quebra o time travel e pode derrubar leitores de longa duração que ainda apontam para arquivos antigos.
- Usar Z-ORDER em coluna de alta cardinalidade única, como o id da transação, esperando ganho. Z-ORDER ajuda em colunas usadas em filtro, e o ganho vem do data skipping, não da ordenação em si.
- Escrever com overwrite na trusted achando que é atômico no Parquet puro. Sem log transacional, um job que morre no meio deixa a tabela com parte dos arquivos novos e parte dos velhos.
Flashcards
Card 1 de 14
0 certos · 0 a reverDrill
Qual recurso do Delta resolve esse problema?
Para cada situação real de pipeline bancário, diga qual recurso do Delta Lake você usaria. Responda em voz alta antes de conferir.
1.A carga de ontem entrou duplicada e o painel de crédito ficou errado. Você precisa comparar o antes e o depois.
2.Chegou o CDC do core de cadastro: linhas novas, alteradas e excluídas no mesmo lote.
3.Um produtor começou a mandar o campo valor como texto em vez de decimal e a tabela não pode aceitar isso.
4.O time de produto vai passar a enviar um campo novo, canal_originacao, e a mudança foi combinada.
5.A ingestão de PIX a cada minuto criou 300 mil arquivos de poucos kilobytes e as consultas ficaram lentas.
6.As consultas do time de fraude quase sempre filtram por agência e por data, e ainda leem arquivo demais.
7.Depois de uma reescrita grande, sobrou o dobro de armazenamento em arquivos que nenhuma versão ativa referencia.
Quiz · 1 de 2
Um time roda VACUUM com retenção de zero hora logo depois de cada carga para economizar armazenamento. Qual é o principal risco?
Explique para um gerente
Explique para um gerente de produto por que o relatório de ontem mudou de número hoje, e como o Delta Lake evita que isso volte a acontecer.
Responda em voz alta antes de seguir. Se travar numa palavra técnica, é sinal de que ainda não entendeu essa parte.
Perguntas de sabatina deste tema
- · O que é um Lakehouse e que problema ele resolve que o data lake e o data warehouse não resolviam sozinhos?
- · Por que usar Delta Lake se os dados já estão em Parquet no S3? Convença alguém que acha que é complexidade desnecessária.
Para ir além