Gerenciar transações ACID

Concluído

O gerenciamento de transações ACID no Azure Databricks usando o Delta Lake é uma maneira eficiente de manter a integridade e a consistência de dados em grandes conjuntos de dados.

Habilitar o Delta Lake

Verifique se o Delta Lake está habilitado no workspace do Databricks. No Azure Databricks, o Delta Lake é habilitado por padrão para todos os clusters.

Criar uma tabela Delta

Para começar a usar transações ACID, você precisa armazenar seus dados no formato Delta. Você pode criar uma tabela Delta convertendo uma tabela Parquet existente ou definindo uma nova tabela diretamente no formato Delta. Aqui está um exemplo de criação de uma tabela Delta usando Python:

# Create a Delta table
data = spark.range(0, 5)
data.write.format("delta").save("/FileStore/tables/my_delta_table")

Transações ACID com Delta Lake

O Delta Lake manipula automaticamente transações ACID para você. Cada operação que grava dados em uma tabela Delta (como INSERT, UPDATE, DELETE) é automaticamente encapsulada em uma transação. Essas operações são registradas em um log de transações, garantindo que toda a operação seja bem-sucedida ou falhe (atomicidade) e que os dados permaneçam consistentes em todas as exibições (consistência).

Ler e gravar dados

Ao ler ou gravar dados, você pode usar comandos SQL padrão do Spark ou a API do DataFrame. Por exemplo, acrescentar dados a uma tabela Delta pode ter esta aparência usando Python:

# Append data to a Delta table using DataFrame API
new_data = spark.range(5, 10)
new_data.write.format("delta").mode("append").save("/FileStore/tables/my_delta_table")

Gravações simultâneas

O Delta Lake gerencia gravações simultâneas, garantindo que apenas uma operação possa confirmar as respectivas alterações por vez. Se vários gravadores estiverem tentando gravar na mesma tabela Delta, o Delta Lake usará o controle de simultaneidade otimista para lidar com conflitos, repetindo ou falhando operações conforme necessário.

Log de transações

O Delta Lake mantém um log de transações detalhado (_delta_log) em segundo plano. Esse log registra todas as transações que modificaram a tabela. Esse log é crucial para manter a integridade da tabela e para dar suporte a recursos como viagens no tempo, o que permite exibir e reverter para versões anteriores dos dados.

Otimização e manutenção

O Delta Lake fornece vários utilitários para otimizar o desempenho das tabelas Delta, como OPTIMIZE para compactação de arquivos e VACUUM para remover arquivos obsoletos:

# Optimize the Delta table
spark.sql("OPTIMIZE '/FileStore/tables/my_delta_table'")

# Clean up old files
spark.sql("VACUUM '/FileStore/tables/my_delta_table' RETAIN 168 HOURS")

Ao aplicar esses recursos, você pode gerenciar grandes conjuntos de dados com necessidades transacionais complexas com eficiência no Azure Databricks, fazendo uso da estrutura do Delta Lake para lidar com transações ACID.