Pular para o conteúdo principal
InicioBlogEngenharia de dados

Apache Iceberg vs. Delta Lake: Recursos, diferenças e casos de uso

Escolha o formato de tabela correto para seu lago de dados. Este artigo compara o Apache Iceberg e o Delta Lake, abordando seus recursos, diferenças e quando você deve usar cada um deles.
Actualizado 23 de out. de 2024  · 20 min leer

O processamento de Big Data geralmente envolve o trabalho com dados não estruturados, que podem ser difíceis de gerenciar e analisar. Exclusões acidentais ou outros erros podem ocorrer a qualquer momento, o que representa um grande risco para a integridade dos dados.

O Apache Iceberg e o Delta Lake são formatos de tabela de código aberto usados principalmente para gerenciar data lakes e lakehouses em grande escala. Ambas as plataformas oferecem recursos como evolução de esquema, viagem no tempo e transações ACID para enfrentar os desafios de lidar com conjuntos de dados maciços. Embora cada um tenha vantagens exclusivas, eles compartilham um objetivo comum: manter a consistência dos dados entre os conjuntos de dados.

Neste artigo, explicarei os principais recursos, as semelhanças e as diferenças arquitetônicas entre o Apache Iceberg e o Delta Lake para ajudar você a escolher a ferramenta certa para suas necessidades. 

O que é o Apache Iceberg?

Logotipo do Apache Iceberg

Desenvolvido pela Netflix e posteriormente doado à Apache Software Foundation, o Iceberg tem como objetivo solucionar os desafios do gerenciamento de lagos de dados em grande escala. É um formato de alto desempenho para grandes tabelas analíticas que gerencia e consulta com eficiência conjuntos de dados maciços. Seus recursos abordam muitas das limitações das abordagens tradicionais de armazenamento de data lake.

Vamos entender o Apache Iceberg em mais detalhes. 

Recursos do Apache Iceberg

Aqui estão alguns dos recursos mais importantes do Apache Iceberg, que são muito úteis para os engenheiros de dados quando trabalham com conjuntos de dados.

  • Evolução do esquema: Nos bancos de dados tradicionais, alterar a estrutura dos seus dados (como adicionar uma nova coluna) pode ser um grande incômodo. O Iceberg torna isso fácil. Por exemplo, se você estiver rastreando dados de clientes e quiser adicionar um campo loyalty_points, poderá fazê-lo sem afetar os dados existentes ou interromper as consultas atuais. Essa flexibilidade é especialmente útil para projetos de dados de longo prazo que precisam se adaptar ao longo do tempo.
  • Particionamento: Ele ajuda a organizar seus dados em partes menores e mais gerenciáveis. Isso torna as consultas mais rápidas porque você não precisa pesquisar todos os dados todas as vezes. Por exemplo, tenho um grande conjunto de dados de registros de vendas. O Iceberg pode organizar automaticamente esses dados por data, local ou qualquer outro fator relevante. 
  • Viagem no tempo: Esse recurso permite que você acesse facilmente versões de dados históricos. Se alguém excluir acidentalmente informações importantes ou se você precisar comparar dados atuais com um estado passado, poderá voltar para um ponto específico no tempo. Essas consultas pontuais simplificam os processos de auditoria e recuperação de dados.
  • Integridade dos dados: A corrupção de dados pode ocorrer por vários motivos, como problemas de rede, problemas de armazenamento ou erros de software. O Iceberg usa técnicas matemáticas (somas de verificação) para detectar se até mesmo um único bit dos seus dados foi alterado inesperadamente. Isso garante que os dados que você está analisando sejam exatamente os dados que foram originalmente armazenados.
  • Compactação e otimização: Com o tempo, os sistemas de dados podem ficar cheios de muitos arquivos pequenos, o que torna o processamento mais lento. O Iceberg limpa isso periodicamente, combinando arquivos pequenos e organizando os dados com mais eficiência.

Esses recursos tornam o Iceberg particularmente bom para a análise de dados em larga escala, especialmente se você lida com dados que mudam com frequência ou que precisam ser acessados de várias maneiras durante longos períodos.

Confira a publicação do blog Apache Iceberg Explained para que você possa se aprofundar nessa tecnologia interessante.

O que é o Lago Delta?

Logotipo do Delta Lake

Desenvolvido pela Databricks, o Delta Lake funciona perfeitamente com o Spark, o que o torna uma opção popular para organizações que já investiram no ecossistema do Spark. É uma camada de armazenamento de código aberto que traz transações ACID (Atomicidade, Consistência, Isolamento, Durabilidade) para o Apache Spark e cargas de trabalho de Big Data. 

Os data lakehouses baseados no Delta Lake otimizam o armazenamento de dados e a aprendizagem automática para manter a qualidade dos dados por meio de metadados dimensionáveis, controle de versão e aplicação de esquema.

Características do Delta Lake

Aqui estão os principais recursos que fazem do Delta Lake uma boa solução para o processamento de dados moderno:

  • Transações ACID: Os data lakes tradicionais geralmente têm dificuldades para manter a consistência dos dados. Para superar isso, o Delta Lake traz as propriedades ACID associadas aos bancos de dados para os data lakes. Isso significa que você pode executar operações complexas nos seus dados sem se preocupar com corrupção ou inconsistências, mesmo que algo dê errado no meio do processo.
  • Controle de versão de dados e viagem no tempo: À medida que os regulamentos de dados, como o GDPR , se tornam mais rigorosos, o rastreamento das alterações de dados ao longo do tempo se tornou inestimável. O recurso de viagem no tempo do Delta Lake permite que você acesse e restaure versões anteriores dos seus dados. Isso é útil para conformidade e execução de experimentos com diferentes versões de seus conjuntos de dados.
  • Lote e streaming unificados: Tradicionalmente, as organizações precisavam de sistemas separados para processamento em lote (lidar com grandes volumes de dados de uma só vez) e processamento de fluxo (lidar com dados em tempo real). O Delta Lake preenche essa lacuna para que você possa usar o mesmo sistema para ambos. Isso simplifica sua arquitetura de dados e permite que você crie pipelines de dados mais flexíveis.
  • Tratamento de metadados escalonável: À medida que os volumes de dados crescem na escala de petabytes, o gerenciamento de metadados (dados sobre seus dados) se torna difícil. Como resultado, muitos sistemas ficam consideravelmente mais lentos ao lidar com milhões de arquivos. No entanto, o Delta Lake pode lidar com escalas enormes sem degradação do desempenho, o que o torna adequado para lagos de dados muito grandes.
  • Leituras e gravações otimizadas: O desempenho é fundamental em cenários de big data. O Delta Lake incorpora o salto de dados, o armazenamento em cache e a compactação para acelerar as operações de leitura e gravação. Isso significa consultas mais rápidas e uso mais eficiente dos recursos computacionais, o que economiza custos em ambientes de nuvem.

O curso Big Data Fundamentals with PySpark aprofunda o processamento moderno de dados com o Spark. É uma ótima atualização sobre essa poderosa tecnologia.

Torne-se um engenheiro de dados

Torne-se um engenheiro de dados por meio do aprendizado avançado de Python
Comece a Aprender De Graça

Apache Iceberg e Delta Lake: Semelhanças

Como o Apache Iceberg e o Delta Lake gerenciam grandes quantidades de dados, vamos examinar suas semelhanças fundamentais. 

Transações ACID e consistência de dados

Ambas as ferramentas podem oferecer consistência total dos dados usando transações ACID e controle de versão. No entanto, o Iceberg usa a abordagem merge-on-read, enquanto o Delta Lake usa a estratégia merge-on-write.

Como resultado, cada um deles lida com o desempenho e o gerenciamento de dados de forma diferente. O Iceberg pode oferecer suporte completo à evolução do esquema, enquanto o Delta Lake impõe a conformidade do esquema.

Suporte para viagens no tempo

A funcionalidade de viagem no tempo permite que os usuários consultem versões históricas dos dados. Isso o torna inestimável para auditoria, depuração e até mesmo reprodução de experimentos. Tanto o Iceberg quanto o Delta Lake suportam viagens no tempo, o que significa que você pode acessar estados anteriores dos dados sem se preocupar.

Natureza de código aberto

O Apache Iceberg e o Delta Lake são tecnologias de código aberto. Isso significa que qualquer pessoa pode usá-los gratuitamente e até mesmo ajudar a melhorá-los. Além disso, o fato de ser de código aberto significa que você não está vinculado ao produto de uma empresa e tem mais liberdade para trocar ou combinar ferramentas conforme necessário. E como o código deles é público, você pode até mesmo otimizá-lo para suas necessidades específicas.

Semelhanças entre o Apache Iceberg e o Lago Delta

As principais características compartilhadas pelo Apache Iceberg e pelo Delta Lake. Imagem do autor criada com o napkin.ai.

Iceberg vs Delta Lake: Principais diferenças de arquitetura

Embora o Iceberg e o Delta Lake tenham semelhanças, eles diferem na arquitetura. Vamos ver como:

Modelo de transação

O Iceberg e o Delta Lake garantem a confiabilidade dos dados em data lakes, mas fazem isso por meio de mecanismos diferentes. Iceberg usa snapshots para transações atômicas para garantir que as alterações sejam totalmente confirmadas ou revertidas. Mas o Delta Lake usa logs de transações para garantir que somente as alterações validadas sejam confirmadas na tabela e oferece confiabilidade nas atualizações de dados.

Gerenciamento de metadados

O Apache Iceberg emprega uma estrutura hierárquica de metadados, que inclui arquivos de manifesto, listas de manifesto e arquivos de metadados. Esse design agiliza o processamento de consultas, eliminando operações dispendiosas, como listagem e renomeação de arquivos. 

No entanto, o Delta Lake adota uma abordagem baseada em transações para registrar cada transação em um log. Para aumentar a eficiência da consulta e simplificar o gerenciamento de logs, ele consolida periodicamente esses logs emarquivos de ponto de verificação do Parquet , que capturam o estado completo da tabela.

Compatibilidade de formato de arquivo

O Iceberg é flexível com formatos de arquivo e pode trabalhar nativamente com arquivos Parquet, ORC e Avro. Isso é útil se você tiver dados em formatos diferentes ou se quiser mudar de formato no futuro sem alterar todo o sistema.

O Delta Lake armazena principalmente dados no formato Parquet porque o Parquet é eficiente, especialmente para consultas analíticas. Ele se concentra apenas em um formato para oferecer o melhor desempenho possível para esse tipo específico de arquivo.

Desempenho e escalabilidade

Os lagos de dados em escala Iceberg e Delta Lake, mas empregam estratégias diferentes. O Iceberg prioriza a organização avançada de dados com recursos como particionamento e compactação, enquanto o Delta Lake enfatiza o alto desempenho por meio de seu mecanismo Delta, compactação automática e recursos de indexação.

Diferenças entre os núcleos do Apache Iceberg e do Lago Delta

Diferenças entre os núcleos do Apache Iceberg e do Lago Delta. Imagem do autor criada com o napkin.ai.

Casos de uso do Apache Iceberg

Devido aos seus recursos exclusivos, o Apache Iceberg se tornou rapidamente uma solução de referência para o gerenciamento moderno de data lake. Vamos examinar alguns de seus principais casos de uso para entender seus pontos fortes. 

Lagos de dados nativos da nuvem

Veja por que o Iceberg é uma escolha popular para organizações que criam lagos de dados que operam em escala de nuvem:

  • Forte evolução do esquema: Ele permite que você adicione, solte ou modifique colunas sem afetar as consultas existentes. Por exemplo, se você precisar adicionar um novo campo para rastrear as preferências do usuário, poderá fazer isso sem reconstruir todo o conjunto de dados ou atualizar todas as consultas.
  • Desempenho: Técnicas avançadas, como clustering de dados e gerenciamento de metadados, otimizam o desempenho das consultas. Eles eliminam rapidamente os arquivos de dados desnecessários para reduzir a quantidade de dados digitalizados e aumentar a velocidade de consulta. 
  • Escalabilidade: Gerencie bilhões de arquivos e petabytes de dados. Além disso, seu recurso de evolução de partição permite que você altere a forma como os dados são organizados sem tempo de inatividade ou migrações caras.

Modelos de dados complexos

As equipes que lidam com modelos de dados complexos consideram o Iceberg particularmente útil por causa do seguinte:

  • Flexibilidade do esquema: Oferece suporte a tipos de dados aninhados (structs, listas e mapas) para representar relacionamentos complexos. Por exemplo, uma plataforma de comércio eletrônico poderia armazenar detalhes de pedidos, incluindo estruturas aninhadas para itens e dados do cliente, tudo em uma única tabela.
  • Consultas sobre viagens no tempo: Esse método mantém instantâneos de seus dados para que você possa consultar os dados como eles existiam em qualquer momento no passado. Isso é inestimável para reconstruir o estado dos seus dados a qualquer momento para fins de conformidade ou para executar novamente análises em instantâneos de dados históricos.

Integração com ferramentas

O Iceberg é compatível com diversas ferramentas, o que o torna uma opção versátil para o ecossistema de dados. Vamos dar uma olhada em algumas de suas principais integrações: 

O Iceberg funciona perfeitamente com o seguinte:

  • Apache Spark para processamento de dados em grande escala e aprendizado de máquina.
  • Trino para consultas SQL rápidas e distribuídas em várias fontes de dados.
  • Apache Flink para processamento de fluxo em tempo real e computação em lote.

Os principais provedores de nuvem a seguir oferecem suporte nativo para o Iceberg:

O Iceberg também fornece bibliotecas de clientes para diferentes linguagens de programação, como:

  • SQL grava consultas SQL padrão nas tabelas do Iceberg.
  • Python usa o PySpark ou bibliotecas como pyiceberg para manipulação de dados.
  • Java aproveita a API Java nativa para operações de baixo nível e integrações personalizadas.

Arquitetura técnica do Apache Iceberg

Especificação do formato de tabela do Apache Iceberg. Fonte da imagem: Documentação do iceberg.

Casos de uso do Delta Lake

O Delta Lake pode resolver desafios comuns e facilitar o gerenciamento de dados. Vamos examinar algumas situações importantes em que isso realmente ajuda.

Cargas de trabalho unificadas em lote e streaming

Com o Delta Lake, você não precisa de sistemas separados para diferentes tipos de dados. Em vez disso, você pode ter um sistema que lide com tudo. Você pode adicionar novos dados às suas tabelas em tempo real, e eles estarão imediatamente prontos para análise. Isso significa que seus dados estão sempre atualizados. 

Você pode criar um único fluxo de trabalho que lide com dados antigos e novos para tornar todo o sistema menos complexo e mais fácil de gerenciar. Essa abordagem unificada simplificará seus pipelines de dados. 

Transações ACID para lagos de dados

O Delta Lake traz uma forte confiabilidade de dados para os data lakes por meio de transações ACID. Por exemplo: 

  • Os hospitais Podem manter registros precisos e atualizados dos pacientes para oferecer atendimento adequado e seguir as regras de privacidade.
  • Bancos podem garantir que todas as transações financeiras sejam registradas com precisão e não possam ser alteradas acidentalmente.
  • As lojas de varejo podem manter suas contagens de estoque precisas, mesmo quando muitas atualizações ocorrem simultaneamente. Isso ajuda a evitar problemas como a venda de itens que não estão realmente em estoque. 

O Delta Lake alcança essa confiabilidade ao garantir que todas as alterações sejam completamente aplicadas ou não sejam aplicadas. Além disso, ele garante que os dados sempre passem de um estado válido para outro e que as diferentes operações não interfiram umas nas outras. 

Ecossistema do Apache Spark

O Delta Lake também funciona perfeitamente com o Apache Spark, uma grande vantagem para muitas organizações. Se você já estiver usando o Spark, adicionar o Delta Lake será simples e não exigirá grandes alterações na configuração existente. Sua equipe pode usar as mesmas ferramentas do Spark e os mesmos comandos SQL com os quais já está familiarizada. 

Como resultado, isso fará com que os trabalhos do Spark sejam executados mais rapidamente, especialmente quando você estiver lidando com grandes quantidades de dados. Ele faz isso organizando os dados com mais eficiência e usando técnicas de indexação inteligentes. 

Apache Iceberg vs. Delta Lake: Um resumo

Vamos resumir as principais diferenças entre o Apache Iceberg e o Delta Lake para ajudar você a entender rapidamente os pontos fortes e os principais recursos de seus formatos.

Recursos 

Apache Iceberg 

Delta Lake

Transação ACID

Sim

Sim

Viagem no tempo

Sim

Sim

Controle de versão de dados 

Sim 

Sim 

Formato do arquivo

Parquet, ORC, Avro

Parquet

Evolução do esquema

Completo 

Parcial 

Integração com outros mecanismos

Apache Spark, Trino, Flink

Principalmente o Apache Spark

Compatibilidade com a nuvem

AWS, GCP, Azure

AWS, GCP

Mecanismos de consulta

Spark, Trino, Flink

Faísca

Linguagem de programação

SQL, Python, Java

SQL, Python

Observação: A melhor opção depende de suas necessidades, dos requisitos de escalabilidade e da estratégia de dados de longo prazo.

Conclusão 

Ao escolher entre o Apache Iceberg e o Delta Lake, considere seu caso de uso específico e a pilha de tecnologia existente. A flexibilidade do Iceberg com formatos de arquivo e mecanismos de consulta o torna ideal para ambientes nativos da nuvem. No entanto, a forte integração do Delta Lake com o Apache Spark é uma boa opção para organizações que investem muito no ecossistema do Spark.

Você também pode conferir alguns recursos relevantes do DataCamp para fortalecer seu conhecimento atual sobre dados:

  1. Compreensão do curso de engenharia de dados para entender os conceitos fundamentais
  2. Cursos de Design de Banco de Dados e Armazenamento de Dados para estruturar dados em grande escala de forma eficaz.
  3. Curso de arquitetura de dados moderna para que você saiba mais sobre as práticas recomendadas e tendências atuais. 

Feliz aprendizado!

Torne-se um engenheiro de dados

Comprove suas habilidades como engenheiro de dados pronto para o trabalho.

Perguntas frequentes

Qual é a principal diferença entre as estratégias de mesclagem na leitura e mesclagem na gravação?

Merge-on-Read (usado pelo Iceberg) lê dados de arquivos existentes e aplica alterações durante o tempo de consulta. O Merge-on-Write (usado pelo Delta Lake) mescla atualizações nos dados básicos durante o processo de gravação para garantir leituras mais rápidas ao custo de operações de gravação mais lentas.

O Apache Iceberg e o Delta Lake podem lidar com dados em escala de petabytes?

Sim, tanto o Apache Iceberg quanto o Delta Lake lidam com eficiência com conjuntos de dados em escala de petabytes. Eles oferecem recursos avançados, como particionamento, gerenciamento de metadados e compactação para otimizar o desempenho de grandes data lake.

Qual é o desempenho do Apache Iceberg e do Delta Lake ao consultar estruturas de dados profundamente aninhadas?

O Apache Iceberg é excelente para consultar estruturas de dados profundamente aninhadas. Ele oferece suporte a formatos de armazenamento tabular como o Parquet, que são otimizados para dados aninhados. Por outro lado, o Delta Lake também oferece suporte a dados aninhados, mas seu desempenho pode variar dependendo da complexidade da consulta e do tamanho do conjunto de dados.

O Apache Iceberg e o Delta Lake podem trabalhar juntos na mesma arquitetura de data lake?

Sim, tanto o Apache Iceberg quanto o Delta Lake podem coexistir no mesmo lago de dados. Cada um pode ser usado para diferentes casos de uso, dependendo dos requisitos. Por exemplo, você pode usar o Delta Lake para cargas de trabalho centradas no Apache Spark e o Iceberg para uma integração mais flexível com diversos mecanismos de consulta.

Você tem alguma limitação ao usar o Delta Lake com motores não Spark?

O Delta Lake é totalmente integrado ao Apache Spark e, embora possa funcionar com outros mecanismos, como o Presto ou o Hive, essas integrações ainda estão em desenvolvimento. O desempenho pode não ser tão otimizado quanto o do Spark, o que pode limitar sua eficácia fora do ecossistema do Spark.

Como o Iceberg e o Delta Lake lidam com problemas de arquivos pequenos em data lakes?

Tanto o Apache Iceberg quanto o Delta Lake resolvem o problema dos arquivos pequenos por meio da compactação. O Iceberg combina periodicamente arquivos pequenos para otimizar o desempenho da consulta, enquanto o Delta Lake usa a compactação automática para consolidar arquivos durante as operações de gravação. Isso garante um melhor desempenho, reduzindo a sobrecarga causada por muitos arquivos pequenos.

Por que a Databricks adquiriu a Tabular (a empresa por trás do Iceberg)?

A Databricks adquiriu a Tabular para fortalecer seus recursos com o Apache Iceberg, que foi originalmente criado pelos fundadores da Tabular. O objetivo da aquisição é melhorar a compatibilidade e a interoperabilidade entre o Delta Lake e o Iceberg, trabalhando para criar um formato de lakehouse unificado que combine os pontos fortes dos dois projetos de código aberto.

O que a aquisição da Tabular significa para os usuários do Delta Lake e do Iceberg?

A aquisição significa que a Databricks trabalhará ativamente para aproximar o Delta Lake e o Iceberg em termos de compatibilidade. Os usuários se beneficiarão de uma melhor integração, com o Delta Lake UniForm já servindo como uma plataforma para permitir a interoperabilidade entre o Delta Lake, o Iceberg e o Apache Hudi. Isso permite que os usuários trabalhem em diferentes formatos sem ficarem presos a uma única solução.

A Databricks continuará a oferecer suporte ao Delta Lake e ao Iceberg?

Sim, a Databricks indicou seu compromisso com ambos os formatos. Ao adquirir a Tabular e trazer os criadores originais do Apache Iceberg para o grupo, a Databricks está procurando promover a colaboração entre as comunidades Iceberg e Delta Lake. Seu objetivo é desenvolver um padrão único e aberto para a interoperabilidade do formato de lakehouse, que oferecerá aos usuários mais opções e flexibilidade.


Photo of Laiba Siddiqui
Author
Laiba Siddiqui
LinkedIn
Twitter

Sou um estrategista de conteúdo que adora simplificar tópicos complexos. Ajudei empresas como Splunk, Hackernoon e Tiiny Host a criar conteúdo envolvente e informativo para seus públicos.

Temas

Saiba mais sobre engenharia de dados com estes cursos!

Certificação disponível

Course

Introdução à engenharia de dados

4 hr
113.9K
Aprenda sobre o mundo da engenharia de dados neste curso de curta duração, que aborda ferramentas e tópicos como ETL e computação em nuvem.
See DetailsRight Arrow
Start Course
Ver maisRight Arrow
Relacionado

blog

Processamento em lote versus processamento em fluxo: Quando usar cada um e por que é importante

Uma análise detalhada das diferenças entre o processamento em lote e em fluxo para pipelines de dados. Conheça as vantagens e desvantagens exclusivas de cada abordagem para aplicar as técnicas adequadas ao seu pipeline de dados.
Tim Lu's photo

Tim Lu

21 min

blog

SQL vs Python: Qual você deve aprender?

Neste artigo, abordaremos os principais recursos do Python e do SQL, suas principais semelhanças e diferenças, e qual deles você deve escolher primeiro para iniciar sua jornada na ciência de dados.

blog

SQL Server, PostgreSQL, MySQL... qual é a diferença? Por onde devo começar?

Neste tutorial, você aprenderá algumas das diferenças básicas entre os dialetos SQL e por onde deve começar.
Mona Khalil's photo

Mona Khalil

5 min

blog

Uma introdução ao DuckDB: O que é e por que você deve usá-lo?

Explore o DuckDB, o banco de dados analítico rápido e fácil de usar para Python e R. Conheça seus principais recursos, casos de uso e como ele otimiza as tarefas de análise de dados.
Kurtis Pykes 's photo

Kurtis Pykes

7 min

blog

Contratos de dados desmistificados: Tudo o que você precisa saber

Obtendo escalabilidade em sistemas de dados distribuídos e reduzindo erros.

blog

Analista de dados versus analista de negócios: Quais são as diferenças?

Quais são as principais diferenças entre um analista de dados e um analista de negócios? Leia tudo sobre eles neste guia completo.
Austin Chia's photo

Austin Chia

8 min

See MoreSee More