Delta Lake
Estrutura de Armazenamento

Em arquiteturas modernas de dados, a camada de armazenamento é a base que permite guardar grandes volumes de dados de forma escalável e econômica. Ela utiliza sistemas como Amazon S3, Azure Data Lake Storage ou HDFS para armazenar arquivos em formatos como Parquet, ORC ou Avro. Essa camada, no entanto, não impõe estrutura, controle de versão, validação de esquema nem transações — ela apenas armazena os dados.
Sobre essa base surgiu o conceito de Data Lake: uma arquitetura voltada para armazenar dados brutos em larga escala, oriundos de diversas fontes, em diferentes formatos. A promessa dos data lakes era centralizar tudo em um só lugar — facilitando análises futuras, integrando dados variados e reduzindo custos. Isso os tornou populares em projetos de ciência de dados e pipelines de ingestão massiva.
Por que os Data Lakes se popularizaram
Mesmo com limitações técnicas, os data lakes se popularizaram por sua flexibilidade e economia. Eles permitem:
- Armazenar dados em seu formato original, sem necessidade de modelagem antecipada.
- Coletar dados em lote e em tempo real, com capacidade quase ilimitada de expansão.
- Atender múltiplos perfis de usuários e ferramentas, favorecendo análise ad hoc, machine learning, relatórios e dashboards.
- Consolidar e democratizar o acesso aos dados, rompendo silos de sistemas legados.

Limitações dos Data Lakes
Apesar dos benefícios, os data lakes tradicionais não oferecem os controles necessários para ambientes analíticos confiáveis:
- Não garantem transações ACID: múltiplas gravações podem causar inconsistência ou corrupção.
- Não possuem controle de versão dos dados: não é possível consultar ou restaurar o estado anterior de uma tabela.
- Não validam a consistência do esquema: erros de estrutura podem passar despercebidos, comprometendo as análises.
- Não oferecem performance otimizada para consultas: arquivos pequenos e desorganizados afetam o desempenho.
Essas limitações impedem o uso do data lake como base confiável para aplicações analíticas críticas. Para superar esses problemas, foi criada uma nova camada — o Delta Lake.
O que é o Delta Lake
O Delta Lake é uma camada transacional que opera sobre um data lake existente. Ele não substitui o data lake — ele o complementa. Adicionando transações ACID, controle de versão, gerenciamento de esquema e integração com ferramentas como Apache Spark, o Delta Lake transforma o data lake bruto em uma plataforma mais confiável, robusta e auditável — conhecida como Lakehouse1.
Características do Delta Lake
O Delta Lake introduz funcionalidades essenciais que corrigem as deficiências do data lake tradicional e viabilizam uma arquitetura de dados confiável e escalável. Entre seus principais recursos:
-
Transações ACID: garantem atomicidade, consistência, isolamento e durabilidade mesmo em ambientes distribuídos. Leituras e gravações são seguras e previsíveis.
-
Controle de versão e time travel: todas as alterações nos dados são versionadas automaticamente, permitindo consultar o estado de uma tabela em qualquer ponto no tempo, reverter alterações ou realizar auditorias históricas.
-
Gerenciamento e validação de esquema: evita a ingestão de dados com estruturas incorretas. O esquema pode evoluir com controle, sem comprometer a integridade das tabelas.
-
Unificação de lote e streaming: a mesma tabela Delta pode receber dados em lote e por streaming, oferecendo consistência entre diferentes modos de ingestão.
-
Desempenho otimizado para leitura: inclui técnicas como compactação de pequenos arquivos, ordenação por colunas (Z-order) e data skipping, que aceleram drasticamente as consultas analíticas.
-
Integração com o ecossistema Spark: permite executar operações SQL, APIs estruturadas e processamento em tempo real diretamente sobre as tabelas Delta.
Arquitetura do Delta Lake
A arquitetura do Delta Lake se apoia sobre o data lake tradicional, introduzindo uma camada transacional que garante confiabilidade e desempenho. Essa camada é composta por três elementos fundamentais:
-
Camada de Armazenamento: Utiliza o mesmo repositório do data lake, como Amazon S3, Azure Data Lake Storage ou HDFS, onde os dados são armazenados em formato Parquet. Essa camada física continua a oferecer escalabilidade e economia.
-
Delta Log: Um log de transações que registra todas as alterações efetuadas nas tabelas. Esse log possibilita o controle de versão, garantindo que cada modificação seja rastreada e permitindo funcionalidades de time travel e auditoria.
-
Tabelas Delta: São a abstração lógica que une os dados armazenados e o Delta Log. Através dessa integração, as tabelas Delta oferecem transações ACID, gerenciamento e evolução de esquema, além da unificação de ingestão batch e streaming.

Como o Delta Lake funciona
O Delta Lake opera continuamente sobre o armazenamento físico, gerenciando alterações nos dados e garantindo transações seguras e rastreáveis. Seu funcionamento se organiza em três áreas principais:
Ingestão de Dados
O Delta Lake suporta múltiplas formas de ingestão:
-
Streaming: Integra-se ao Apache Spark Structured Streaming para ingestão contínua de dados, permitindo atualização em tempo real com consistência garantida (exactly-once semantics).
-
Batch: Permite ingestões em lote em grande volume, com suporte a operações como
MERGE
,UPDATE
,DELETE
eINSERT
, sem comprometer a integridade das tabelas.
Processamento de Consultas
As tabelas Delta podem ser consultadas utilizando:
- SQL: Consultas interativas ou analíticas podem ser feitas diretamente sobre os dados versionados.
- APIs de alto nível: O Delta Lake é compatível com as APIs do Apache Spark (DataFrame, SQL, Structured Streaming).
- Time travel: Através da manipulação do Delta Log, é possível consultar o estado dos dados em qualquer ponto no tempo, de forma nativa.
Gestão de Dados
O Delta Lake oferece mecanismos para otimização contínua:
- Compactação de arquivos pequenos: Operações como
OPTIMIZE
reorganizam os dados para melhorar o desempenho das consultas. - Ordenação por Z-order: Organiza os dados em colunas com alta seletividade, reduzindo o custo de leitura.
- Limpeza de dados obsoletos: Com o comando
VACUUM
, arquivos não referenciados são removidos com segurança, liberando espaço e mantendo a performance.
Esses recursos operam de forma integrada, mantendo a integridade dos dados mesmo em cenários com alta concorrência ou ingestão contínua.
Recursos do Delta Lake
- Transações ACID no Spark: níveis de isolamento serializáveis garantem que os leitores nunca vejam dados inconsistentes.
- Manipulação escalável de metadados: aproveita o poder de processamento distribuído do Spark para manipular todos os metadados para tabelas em escala de petabytes com bilhões de arquivos.
- Unificação de streaming e lote: uma tabela no Delta Lake é uma tabela de lote, além de fonte e coletor de streaming. A ingestão de dados de streaming, preenchimento de histórico em lote e consultas interativas funcionam com perfeição.
- Aplicação de esquema: manipula automaticamente variações de esquema para evitar a inserção de registros inválidos durante a ingestão.
- Time travel: o controle de versão de dados permite reversões, trilhas de auditoria históricas completas e experimentos de aprendizado de máquina reproduzíveis.
- Upserts e exclusões: suporta operações de mesclagem, atualização e exclusão para permitir casos de uso complexos, como captura de dados alterados, operações combinado dimensão de alteração lenta (SCD), upserts de streaming, etc.
- Ecossistema de conectores: possui conectores que leem e gravam tabelas Delta de vários mecanismos de processamento de dados, como Apache Spark, Apache Flink, Apache Hive, Apache Trino, AWS Athena, etc.
Quando usar o Delta Lake
Delta Lakes são uma ótima tecnologia de armazenamento de dados flexível e de baixo custo. Podem ser uma ótima opção para cenários que requerem:
- Dados em vários formatos provenientes de várias fontes;
- Uso dos dados em muitas tarefas posteriores distintas, por exemplo, análise, ciência de dados, aprendizado de máquina, etc.;
- Flexibilidade para executas muitos tipos distintos de consultas sem a obrigação de fazer perguntas com antecedência;
- Processamento de dados em tempo real: ingestão e análise de dados em tempo real com garantia de consistência.
- Gerenciamento de grandes volumes de dados: suporte a petabytes de dados com desempenho otimizado.
- Necessidade de auditoria e versionamento: acesso a versões anteriores dos dados para auditoria e recuperação.
Quando o Delta Lake não se aplica
O Delta Lake pode não ser a melhor escolha para:
- Sistemas OLTP de alta concorrência: aplicações que requerem transações de baixa latência e alta concorrência podem se beneficiar mais de bancos de dados relacionais tradicionais.
- Necessidade de suporte a constraints complexas: como chaves estrangeiras e triggers, que não são suportadas nativamente pelo Delta Lake.
Interação com Apache Spark
O Delta Lake é totalmente compatível com as APIs do Apache Spark e foi desenvolvido para integração completa com o Structured Streaming, permitindo o uso fácil de uma única cópia de dados para operações em lote e streaming, além de fornecer processamento incremental em escala. Permite:
- Ingestão e processamento de dados em tempo real: utilizando Spark Structured Streaming.
- Execução de consultas SQL e operações DML: com suporte a transações ACID.
- Otimizações de desempenho: aproveitando as capacidades de processamento distribuído do Spark.
Diferenças entre Delta Lake e SGBDs tradicionais
- Armazenamento: o Delta Lake utiliza arquivos Parquet em sistemas de arquivos distribuídos, enquanto SGBDs tradicionais utilizam armazenamento em blocos.
- Transações: o Delta Lake oferece transações ACID em ambientes distribuídos, enquanto SGBDs tradicionais gerenciam transações em sistemas centralizados.
- Evolução de esquema: o Delta Lake suporta evolução de esquema com flexibilidade, enquanto SGBDs tradicionais requerem alterações estruturais mais rígidas.
Boas Práticas para Delta Lake
- Compactação de arquivos pequenos: utilizar o comando OPTIMIZE para melhorar o desempenho das consultas.
- Ordenação por Z-order: aplicar Z-ordering em colunas frequentemente utilizadas em filtros para acelerar as consultas.
- Gerenciamento de versões: utilizar o time travel para auditorias e recuperação de dados.
Detalhes do Projeto Delta Lake
- Linguagem de Programação: desenvolvido em Scala e Java.
- Licença: open source sob a licença Apache 2.0.
- Integração: compatível com Apache Spark, Apache Flink, Presto, Trino, entre outros.
Fontes
https://docs.delta.io/latest/delta-intro.html
https://github.com/delta-io/delta
Footnotes
-
A arquitetura lakehouse combina as vantagens dos data lakes e dos data warehouses em uma única plataforma. Usa o armazenamento barato e escalável de um Data Lake, oferece transações ACID, controle de versão, esquema e catálogos como um Data Warehouse, suporta processamento batch e streaming no mesmo local e permite SQL e machine learning sobre os mesmos dados. ↩