logo

Propriedades ACID em DBMS

Transactions are fundamental operations that allow us to modify and retrieve data. Porém para garantir a integridade de um banco de dados é importante que essas transações sejam executadas de forma que mantenha a consistência, correção e confiabilidade mesmo em caso de falhas/erros. É aqui que as propriedades ACID entram em ação.

ACID significa Isolamento e Durabilidade de Consistência de Atomicidade.



Propriedades do ÁCIDO:

propriedades_acidas' title=

Existem quatro propriedades do ACID

1. Atomicidade

Atomicidade significa que uma transação é tudo ou nada, ou todas as suas operações são bem-sucedidas ou nenhuma é aplicada. Se alguma parte falhar, toda a transação será revertida para manter o banco de dados consistente.

  • Comprometer-se : Se a transação for bem-sucedida, as alterações serão aplicadas permanentemente.
  • Abortar/Reverter : Se a transação falhar, todas as alterações feitas durante a transação serão descartadas.

Exemplo : Considere a seguinte transação T consistindo em T1 e T2 : Transferência de 0 da conta X contabilizar E .

atomicidade' loading='lazy' title=Atomicidade

Se a transação falhar após a conclusão de T1, mas antes da conclusão de T2, o banco de dados ficará em um estado inconsistente. Com o Atomicity, se alguma parte da transação falhar, todo o processo será revertido ao seu estado original e nenhuma alteração parcial será feita.



A consistência nas transações significa que o banco de dados deve permanecer em um estado válido antes e depois de uma transação.

trabalho de computador
  • Um estado válido segue todas as restrições e relacionamentos de regras definidas (como chaves primárias, chaves estrangeiras, etc.).
  • Se uma transação violar qualquer uma dessas regras, ela será revertida para evitar dados corrompidos ou inválidos.
  • Se uma transação deduzir dinheiro de uma conta, mas não adicioná-lo a outra (em uma transferência), ela viola a consistência.

Exemplo : Suponha que a soma de todos os saldos em um sistema bancário deva ser sempre constante. Antes de uma transferência, o saldo total é 0. Após a transação, o saldo total deve permanecer 0. Se a transação falhar no meio (como atualizar uma conta, mas não a outra), o sistema deverá manter sua consistência revertendo a transação.

Total antes de T ocorrer = 500 + 200 = 700 .
Total após a ocorrência de T  = 400 + 300 = 700 .



isolamento' loading='lazy' title=Consistência

3. Isolamento

O isolamento garante que as transações sejam executadas de forma independente, sem afetar umas às outras. As alterações feitas por uma transação não são visíveis para outras até que sejam confirmadas.

Ele garante que o resultado das transações simultâneas seja o mesmo como se fossem executadas uma após a outra, evitando problemas como:

  • Leituras sujas: lendo dados não confirmados
  • Leituras não repetíveis: alterações de dados entre duas leituras
  • Fantasma lê: novas linhas aparecem durante uma transação

Exemplo : Considere duas transações T e T''.

  • X = 500 S = 500
isolamento' loading='lazy' title=Isolamento

Explicação:

1. Transação T:

  • T quer transferir de X para Y.
  • T lê E (valor: 500) subtrai de X (novo X = 450) e soma a Y (novo Y = 550).

2. Transação T'':

  • E' ' inicia e lê X (500) e Y (500).
  • Calcula a soma: 500 + 500 = 1000.
  • Enquanto isso, os valores de X e Y mudam para 450 e 550, respectivamente.
  • Portanto, a soma correta deveria ser 450 + 550 = 1000.
  • O isolamento garante que T'' não leia valores desatualizados enquanto outra transação (T) ainda estiver em andamento.
  • As transações devem ser independentes e T'' deve acessar os valores finais somente após T se comprometer.
  • Isto evita resultados inconsistentes como a soma incorreta calculada por T''.

4. Durabilidade:

A durabilidade garante que, uma vez confirmada uma transação, suas alterações sejam salvas permanentemente, mesmo se o sistema falhar. Os dados são armazenados em memória não volátil para que o banco de dados possa recuperar seu último estado confirmado sem perder dados.

Exemplo : Depois de transferir dinheiro com sucesso da Conta A para a Conta B, as alterações são armazenadas no disco. Mesmo que haja uma falha imediatamente após o commit, os detalhes da transferência ainda estarão intactos quando o sistema se recuperar, garantindo durabilidade.

Como as propriedades do ACID impactam o design e a operação do DBMS

O As propriedades ACID em sua totalidade fornecem um mecanismo para garantir a correção e consistência de um banco de dados de forma que cada transação seja um grupo de operações que atue como uma única unidade, produza resultados consistentes, atue isoladamente de outras operações e as atualizações que ela faz sejam armazenadas de forma durável.

As propriedades ACID protegem a integridade dos dados de um SGBD, garantindo que as transações sejam concluídas com êxito ou não deixem rastros se forem interrompidas. Eles evitam que atualizações parciais corrompam os dados e garantem que o banco de dados faça a transição apenas entre estados válidos.

exemplo de formato json

2. Controle de simultaneidade

As propriedades ACID fornecem uma estrutura sólida para gerenciar transações simultâneas. O isolamento garante que as transações não interfiram umas com as outras, evitando anomalias de dados, como atualizações perdidas, inconsistências temporárias e dados não confirmados.

3. Recuperação e tolerância a falhas

A durabilidade garante que mesmo se um sistema falhar, o banco de dados poderá se recuperar para um estado consistente. Graças às propriedades Atomicidade e Durabilidade, se uma transação falhar no meio do caminho, o banco de dados permanecerá em um estado consistente.

Propriedade Responsabilidade pela manutenção das propriedades
AtomicidadeGerenciador de transações
ConsistênciaProgramador de aplicativos
IsolamentoGerenciador de controle de simultaneidade
DurabilidadeRecuperação

Casos de uso críticos para ACID em bancos de dados

Em aplicações modernas, garantir a confiabilidade e a consistência dos dados é crucial. As propriedades ACID são fundamentais em setores como:

  • Bancário : As transações que envolvem transferências de dinheiro, depósitos ou retiradas devem manter estrita consistência e durabilidade para evitar erros e fraudes.
  • Comércio eletrônico : Garantir que as contagens de estoque, pedidos e detalhes do cliente sejam tratados de maneira correta e consistente, mesmo durante tráfego intenso, requer conformidade com ACID.
  • Assistência médica : Os resultados dos testes e prescrições dos registros dos pacientes devem aderir a padrões rígidos de consistência, integridade e segurança.