Top 5 Principais Recursos do Apache Iceberg para Lagos de Dados Modernos

Os grandes dados evoluíram significativamente desde sua criação no final da década de 2000. Muitas organizações rapidamente se adaptaram à tendência e construíram suas plataformas de big data usando ferramentas de código aberto como o Apache Hadoop. Mais tarde, essas empresas começaram a enfrentar dificuldades em gerenciar as necessidades de processamento de dados em rápida evolução. Elas enfrentaram desafios ao lidar com mudanças no nível do esquema, evolução do esquema de partição e voltar no tempo para examinar os dados.

Eu enfrentei desafios semelhantes ao projetar sistemas distribuídos em larga escala na década de 2010 para uma grande empresa de tecnologia e um cliente do setor de saúde. Algumas indústrias precisam dessas capacidades para aderir às regulamentações de bancos, finanças e saúde. Empresas fortemente orientadas a dados, como a Netflix, enfrentaram desafios semelhantes. Elas inventaram um formato de tabela chamado “Iceberg,” que se assenta sobre os arquivos de dados existentes e entrega recursos chave aproveitando sua arquitetura. Isso rapidamente se tornou o principal projeto da ASF à medida que ganhou interesse rápido na comunidade de dados. Neste artigo, explorarei os 5 principais recursos chave do Apache Iceberg com exemplos e diagramas.

1. Viagem no Tempo

Figura 1: Viagem no tempo no formato de tabela Apache Iceberg (imagem criada pelo autor)

Este recurso permite que você consulte seus dados conforme eles existem em qualquer ponto. Isso abrirá novas possibilidades para os analistas de dados e de negócios entenderem tendências e como os dados evoluíram ao longo do tempo. Você pode facilmente reverter para um estado anterior em caso de erros. Este recurso também facilita verificações de auditoria, permitindo que você analise os dados em um ponto específico no tempo.

SQL

 

2. Evolução de Esquema

A evolução de esquema do Apache Iceberg permite alterações em seu esquema sem esforço ou migrações dispendiosas. Conforme as necessidades do seu negócio evoluem, você pode:

  • Adicionar e remover colunas sem tempo de inatividade ou reescrita de tabelas. 
  • Atualizar a coluna (alargamento).
  • Alterar a ordem das colunas.
  • Renomear uma coluna existente.

Essas alterações são tratadas no nível de metadados sem a necessidade de reescrever os dados subjacentes. 

SQL

 

3. Evolução de Partição

Usando o formato de tabela Apache Iceberg, você pode alterar a estratégia de particionamento da tabela sem reescrever a tabela subjacente ou migrar os dados para uma nova tabela. Isso é possível porque as consultas não fazem referência diretamente aos valores de partição como no Apache Hadoop. O Iceberg mantém informações de metadados para cada versão de partição separadamente. Isso facilita obter os splits ao consultar os dados. Por exemplo, ao consultar uma tabela com base no intervalo de datas, enquanto a tabela estava usando o mês como coluna de partição (antes) como um split e o dia como uma nova coluna de partição (depois) como outro split. Isso é chamado de planejamento de split. Veja o exemplo abaixo.

SQL

 

4. Transações ACID

Iceberg oferece suporte robusto para transações em termos de Atomicidade, Consistência, Isolamento e Durabilidade (ACID). Ele permite múltiplas operações de escrita simultâneas, o que possibilita alta taxa de transferência em trabalhos pesados e intensivos em dados, sem comprometer a consistência dos dados.

SQL

 

Todas as operações no Iceberg são transacionais, o que significa que os dados permanecem consistentes, apesar de falhas ou modificações nos dados de forma concorrente.

SQL

 

Ele também suporta diferentes níveis de isolamento, o que permite equilibrar desempenho e consistência com base na necessidade.

SQL

 

Aqui está um resumo mostrando como o Iceberg lida com atualizações e exclusões em nível de linha.

Figura 2: Processo de exclusão de registros no Apache Iceberg (imagem criada pelo autor)

5. Operações Avançadas de Tabelas

O Iceberg suporta operações avançadas de tabelas, como:

  • Criação/gerenciamento de snapshots de tabelas: Isso proporciona a capacidade de ter um controle de versão robusto.
  • Planejamento e execução de consultas rápidas com seus metadados altamente otimizados
  • Ferramentas integradas para manutenção de tabelas, como compactação e limpeza de arquivos órfãos

O Iceberg foi projetado para trabalhar com todos os principais serviços de armazenamento em nuvem, como AWS S3, GCS e Azure Blob Storage. Além disso, o Iceberg se integra facilmente com mecanismos de processamento de dados como Spark, Presto, Trino e Hive.

Considerações Finais

Esses recursos destacados permitem que as empresas construam lagos de dados modernos, flexíveis, escaláveis e eficientes, que podem viajar no tempo, lidar facilmente com alterações de esquema, suportar transações ACID e evolução de partições.

Source:
https://dzone.com/articles/key-features-of-apache-iceberg-for-data-lakes