Delta Lake facilita a conformidade com ACID em Apache Spark

Noções Básicas: O qué é a conformidade com ACID?

Ao realizar operações de banco de dados (como adicionar novos registros, novos campos ou atualizar os existentes) os dados devem ser tratados com muito cuidado. Um dos métodos para garantir isso é a conformidade com ACID, ou ACID compliance em inglês. ACID é um acrônimo para Atomicidade (Atomicity), Consistência (Consistency), Isolamento (Isolation) e Durabilidade (Durability), cunhado por Andreas Reuter e Theo Härder, e baseado em um trabalho prévio de Jim Gray. 

Dessa forma, o ACID representa um conjunto de diretrizes que devem ajudá-lo a garantir que as transações do banco de dados sejam realizadas de maneira confiável. Além disso, os bancos de dados podem ser mantidos com integridade e segurança.

  • A atomicidade, neste contexto, significa que existem apenas dois resultados possíveis para transações de banco de dados: foi concluído com sucesso ou não houve operação nenhuma. Isso garante que os dados sejam processados corretamente ou que o banco de dados volte para seu estado anterior, sem corrupção de dados.
  • A consistência de uma transação de dados implica que os dados estarão sempre em um estado válido. Isso significa que as restrições colocadas no conjunto de dados não serão violadas. Se a consistência não for mantida, a operação falhará e o banco de dados voltará para seu estado anterior válido.
  • O isolamento significa que outras operações simultâneas sendo realizadas nos mesmos dados não devem ser afetadas pela sua operação atual.
  • A durabilidade dos dados representa o fato de que as operações realizadas com sucesso no banco de dados serão permanentes. Nenhuma falha ou imprevisto no banco de dados produzirá dados corrompidos.

Delta Lake melhora um motor já poderoso como o Apache Spark

O Apache Spark se define como “um motor multi linguagens para executar engenharia de dados, ciência de dados e machine learning em máquinas de nó único ou clústeres”. 

Por si só, o Apache Spark serve como uma ferramenta que permite que as empresas façam processamento de dados em grande escala, mas não é compatível com os princípios de ACID. Isso significa que cada um dos pontos que discutimos antes pode ser quebrado se você não tiver cuidado ao programar. Mesmo se você tomar todas as medidas nas que pode pensar, problemas podem surgir e dados corrompidos podem poluir seu data lake. Em certos cenários, você pode até excluir permanentemente parte de seus dados em um trabalho de processamento defeituoso. A integridade dos dados está nas mãos da equipe de programação, e somos todos humanos.

Por causa desses problemas, o Apache Delta Lake surge como um novo paradigma. É um framework de armazenamento de código aberto que traz suporte a transações em conformidade com ACID, assim como aplicação de restrições para os data lakes baseados no Apache Spark. Ele permite que os usuários construam uma arquitetura “Data Lakehouse” que funciona com dados estruturados, semiestruturados e não estruturados.

Este Data Lakehouse é eficiente para se escalar, mas também é confiável, pois garante a integridade dos dados. Delta Lake permite que você reverta seu ecossistema para versões anteriores de seus dados para auditorias ou outras necessidades. Além disso, ele registra todos os detalhes das transações, fornecendo assim um historial para auditoria.

Delta Lake ajuda à sua organização a refinar dados

Usando o Delta Lake para armazenamento de stream e em lote. Fonte

Em cada etapa mostrada no gráfico acima, os dados são incrementalmente melhorados por meio de uma pipeline que permite o processamento em lote como de dados do tipo stream, mediante um armazenamento de arquivos compartilhado. Os dados são organizados em 3 camadas ou tabelas, comumente referidas como Bronze ou Bronze (tabela 1), Prata ou Silver (tabela 2) e Ouro ou Gold (tabela 3). 

  • As tabelas nível Bronze contêm dados brutos, não modificados de onde vieram (dados IOT, arquivos JSON, arquivos PARQUET, etc.). Os dados originais podem ser reprocessados no futuro ou também podem ser usados por outros mecanismos de processamento.
  • As tabelas nível Prata incorporam uma visão mais refinada dos dados da sua organização. Podem ser consultadas diretamente e os dados podem ser considerados limpos. Você pode começar a tomar ação com base nesses dados refinados.
  • As tabelas nível Ouro têm dados agregados no nível de negócios, a partir dos quais as análises podem ser criadas. Dashboards e apresentações são criados a partir deste tipo de dados. 

Como o Delta Lake facilita a conformidade com ACID no Apache Spark?

“O registro (log) de transações é o mecanismo pelo qual o Delta Lake é capaz de oferecer a garantia da atomicidade. Para todos os efeitos, se não for registrado no registro de transações, isso nunca aconteceu”. Dessa forma, um post do Databricks descreve minuciosamente o registro de transações do Delta Lake.

Ao processar dados com o Delta Lake, uma das etapas é verificar se há uma incompatibilidade de esquema ao validar o resultado de um processo. Esse erro pode acontecer a qualquer momento, mas verificar todas as transações ajuda na consistência dos dados e você não obterá tabelas com dados corrompidos. Isso também é ótimo para depuração do código. 

Como dissemos anteriormente, cada trabalho feito em Delta Lake é registrado e versões de dados válidos são salvas. Dessa forma, o Delta Lake garante que os dados sejam duráveis no sistema, ao mesmo tempo em que fornece um historial de auditoria. Qualquer dado antigo é acessível para que você possa consultá-lo, ou dados que já tenham sido transformados por outros processos, em seu estado anterior.

O registro de transações acima mencionado é fundamental para que o princípio de isolamento seja seguido no Delta Lake. Um trabalho de leitura ou escrita utiliza os dados mais recentes que já foram confirmados, sem levar em conta os processos que estão sendo feitos simultaneamente, mas que ainda não terminaram ou não foram registrados.

Delta Lake é uma ótima ferramenta para adicionar aos seus projetos de processamento de dados, especialmente quando você quer que seus bancos de dados sejam compatíveis com ACID. Se você já decidiu usar o Apache Spark, então essa ferramenta é uma escolha óbvia, já que está totalmente integrado para trabalhar junto com o Spark.

Scroll to Top