Acid em sistemas de banco de dados

01/09/2024


ACID é um acrônimo que representa quatro propriedades fundamentais que garantem a confiabilidade das transações de banco de dados: Atomicidade, Consistência, Isolamento e Durabilidade. Vamos traduzir e detalhar cada uma dessas propriedades.

1. Atomicidade (Atomicity)

Tudo ou nada.


A propriedade de Atomicidade garante que todas as operações em uma transação sejam concluídas com sucesso ou, se alguma falhar, nenhuma operação é aplicada. Em outras palavras, uma transação é atômica; ela é uma unidade indivisível de trabalho. Se uma parte de uma transação falhar, todo o processo falha e o banco de dados é revertido ao seu estado anterior à transação.

Na imagem, vemos que se a transação que contém múltiplas operações de escrita falha em algum ponto, todas as operações são revertidas, garantindo que o banco de dados não fique em um estado parcialmente atualizado.

2. Consistência (Consistency)

Preservando os invariantes do banco de dados.

A propriedade de Consistência assegura que uma transação leva o banco de dados de um estado consistente para outro estado consistente. Isso significa que qualquer transação deve obedecer a todas as regras e restrições do banco de dados (como chaves primárias, chaves estrangeiras, e outras restrições definidas) para garantir que os dados permaneçam válidos.

Na imagem, isso é ilustrado pelo movimento de um "estado consistente A" para um "estado consistente B". Durante esse processo, todas as regras de integridade do banco de dados devem ser respeitadas.

3. Isolamento (Isolation)

Transações concorrentes são isoladas umas das outras.


A propriedade de Isolamento garante que as transações que ocorrem simultaneamente sejam isoladas umas das outras. Ou seja, as transações em andamento não interferem umas nas outras. Dependendo do nível de isolamento configurado, uma transação pode não ver os efeitos das outras até que elas sejam concluídas. Isso evita problemas como "dirty reads", "non-repeatable reads", e "phantom reads".

A imagem mostra duas transações concorrentes (A e B) sendo isoladas uma da outra, garantindo que a execução simultânea de ambas não cause inconsistências no banco de dados.

4. Durabilidade (Durability)

Os dados são preservados após a transação ser confirmada, mesmo em caso de falha do sistema.


A propriedade de Durabilidade assegura que, uma vez que uma transação é confirmada (commit), seus efeitos são permanentes no banco de dados, mesmo que ocorra uma falha de sistema logo após a confirmação. Isso significa que o banco de dados utiliza técnicas de armazenamento duráveis, como gravação de logs em disco, para garantir que as alterações sejam preservadas.

Na imagem, após a confirmação (commit) de uma transação, os dados são replicados em outras instâncias ou réplicas do banco de dados para garantir a persistência, mesmo em caso de falha.

Resumo

O conceito de ACID é fundamental para garantir a integridade e a confiabilidade das transações em sistemas de banco de dados. Essas propriedades asseguram que as transações sejam processadas de maneira segura e confiável, mesmo em ambientes altamente concorrentes e em cenários de falhas. Assegurar que um sistema de banco de dados seja ACID-compliant é essencial para aplicações críticas que dependem de dados consistentes e precisos.