O modelo ACID de design de banco de dados é um dos conceitos mais antigos e importantes da teoria de banco de dados. Ele estabelece quatro objetivos que todo sistema de gerenciamento de banco de dados deve se esforçar para atingir: atomicidade, consistência, isolamento e durabilidade.
Um banco de dados relacional que não atende a nenhum desses quatro objetivos não pode ser considerado confiável. Um banco de dados que possui essas características é considerado compatível com ACID.
A Definição
Cada um dos quatro atributos ACID segue padrões bem definidos:
- A atomicidade afirma que as modificações do banco de dados devem seguir uma regra de “tudo ou nada”. Cada transação é considerada atômica. Se uma parte da transação falhar, toda a transação falhará. É fundamental que o sistema de gerenciamento de banco de dados mantenha a natureza atômica das transações, apesar de qualquer SGBD, sistema operacional ou falha de hardware.
- A consistência indica que apenas dados válidos serão gravados no banco de dados. Se, por algum motivo, for executada uma transação que viole as regras de consistência do banco de dados, toda a transação será revertida e o banco de dados será restaurado a um estado consistente com essas regras. Por outro lado, se uma transação for executada com sucesso, ela levará o banco de dados de um estado que seja consistente com as regras para outro estado que também seja consistente com as regras.
- O isolamento requer que várias transações ocorrendo ao mesmo tempo não afetem a execução umas das outras. Por exemplo, se Joe emitir uma transação em um banco de dados ao mesmo tempo que Mary emite uma transação diferente, ambas as transações devem operar no banco de dados de maneira isolada. O banco de dados deve realizar a transação inteira de Joe antes de executar a de Mary ou vice-versa. Isso evita que a transação de Joe leia os dados intermediários produzidos como um efeito colateral de parte da transação de Mary que não será eventualmente confirmada no banco de dados. Observe que a propriedade de isolamento não garante qual transação será executada primeiro – apenas que as transações não interferirão umas nas outras
- A durabilidade garante que qualquer transação confirmada no banco de dados não será perdida. A durabilidade é garantida por meio do uso de backups de banco de dados e logs de transações que facilitam a restauração de transações confirmadas, apesar de quaisquer falhas subsequentes de software ou hardware.
Como o ACID funciona na prática
Os administradores de banco de dados usam várias estratégias para impor o ACID.
Um usado para impor atomicidade e durabilidade é o registro de write-ahead , no qual qualquer detalhe da transação é primeiro gravado em um registro que inclui informações de refazer e desfazer. Essa abordagem garante que, dada uma falha de banco de dados de qualquer tipo, o banco de dados pode verificar o log e comparar seu conteúdo com o estado do banco de dados.
Outro método usado para lidar com a atomicidade e durabilidade é a paginação de sombra, na qual uma página de sombra é criada quando os dados devem ser modificados. As atualizações da consulta são gravadas na página sombra, e não nos dados reais do banco de dados. O próprio banco de dados é modificado apenas quando a edição é concluída.
Outra estratégia é chamada de protocolo two-phase commit , especialmente útil em sistemas de banco de dados distribuídos. Este protocolo separa uma solicitação de modificação de dados em duas fases: uma fase de solicitação de confirmação e uma fase de confirmação. Na fase de solicitação, todos os SGBDs em uma rede que são afetados pela transação devem confirmar que o receberam e têm a capacidade de realizar a transação. Depois que a confirmação é recebida de todos os DBMSs relevantes, a fase de confirmação é concluída, na qual os dados são realmente modificados.
O modelo ACID não é a única abordagem para gerenciar dados. O modelo BASE funciona bem com dados não estruturados.