Executando verificação de segurança...
3

[ Conteúdo ] Você sabe o que é ACID?

Introdução:

Hoje trago um assunto que tenho caindo de cabeça recentemente: ACID. ACID é um acrônomo para: atomicity, consistency, isolation, durability. Essas quatro propriedades são um dos tópicos mais importantes para banco de dados. Por que eu digo isso? Porque ACID é um conjunto de propriedades que está presente em database transaction que por sua vez tem ganhado muito suporte por vários banco de dados.

O que é ACID

Como eu disse anteriormente, ACID (atomicity, consistency, isolation, durability) um conjunto de propriedades que faz parte de banco de dados transactional. Cada propriedade de ACID tem um propósito diferente, porém essecial. O maior papel de dessas propriedades é garantir segurança para os dados armazenados. Garantir a integridade dos dados, evitar erros ao escrever, atualizar e deletar dados, se recuperar de falhas críticas (como queda de energia). Tenha em mente que ACID é responsável por fazer o banco de dados permancer intacto mesmo depois de falhas. Claro, ACID é apenas uma de várias técnicas e precauções para manter nosso dados seguros.

Chamamos uma operação que satisfaz ACID de transaction. Um exemplo clássico que você vai encontrar em vários lugares é a transferência de uma certa quantidade de dinheiro de um banco A para o banco B. Esse exemplo é muito bom, pois podemos ilustrar o poder de uma operação transactional de forma mais abrange.

Por exemplo: Citei um exemplo onde A transfere dineheiro para B, e a primeira vista pode parecer uma operação simples, bom, de fato é, mas não é uma operação única. Neste exemplo tem uma sequência de operações como:

  • removemos o dinheiro da conta de A
  • adicionamos dinheiro para conta de B

São duas operações que são feitas de uma vez! Se uma dessas operações falhar, ai entra o A de ACID que é o: atomicity. Falarei mais sobre mais a frente.

Acho que já deu para entender um pouco sobre ACID, não? ACID é responsável por garantir a segurança de nossos dados, são quatro propriedades (atomicity, consistency, isolation, durability), pode juntar várias operações em uma única operação.

Lembrando que isso não é tudo! ACID tem muit mais, porém é um estudo muito mais aprofundado que não caberia em um único artigo.

Características:

Atomicity:

A propriedade atomicity de ACID, garante que cada operação é trata como individual (Unit of work). O que isso quer dizer? Lembra que eu disse quê que várias operações podem ser agrupadas em uma única operação? A propriedade Atomicity garante que cada uma dessas operações agrupadas seja tratadas como individual, o que quer dizer que mesmo que elas estejam agrupadas, cada um tem um tratamente diferente.

Ok, mas para quê isso? Bom, tratar cada operação de forma individual é essencial! Isso porquê se uma dessas operações falha, toda a comunicação transactional falhará por completo, mesmo que as outras operações tenham side bem sucedidas. Ou seja, Atomicity garante que uma operação não seja parcial, ou tudo da certo, ou tudo da errado!

Mas por qual motivo isso é bom? Banco de dados é algo bem complicado, principalmente quando se trata de debugar problemas. Tem uma atualização parcial pode conduzir a diversos problemas na hora de ler, atualizar deletar os dados! E para localizar e solucionar o problema não é tão simples. Por isso é uma boa medida para prevenir comportamentos inesperados.

Vale a pena mencionar que quando uma operação transaction falha, acontece um roll back e o banco de dados não é alterado.

Consistency

O proprio nome já é sugestivo, porém explicarei em detalhes: consistency é responsável por garantir que o banco de dados sai de um estado consistente, para outro estado consistente, assim evitando anomalias assustadoras (é realmente assustado debugar algo não consistente). Mas como o banco de dados sabe que a operação é consistente? Simples! Uma operação segue todas as regras propostas em configurações prévias. Assim evitando invariância nos dados, garantido integridade e prevenindo operações ilegais.

Isolation:

As transações são frequentemente executadas simultaneamente (por exemplo, várias transações lendo e escrevendo em uma tabela ao mesmo tempo). Isolation garante que a execução simultânea de transações deixe o banco de dados no mesmo estado que teria sido obtido se as transações fossem executadas sequencialmente. O isolamento é o principal objetivo de controle de simultaneidade; dependendo do nível de isolamento usado, os efeitos de uma transação incompleta podem não ser visíveis para outras transações

Durability

Este junto com atomicity é um dos mais complicados de entender, apesar de que a primeira vista, pareça ser simples! Durability garante que uma vez que os dados tenham side commitados, eles são permanentes, mesmo em falhas como em quedas de energia.

Quando uma transaction é commitado, geralmente significa que a operação foi bem sucedida e passou por todas as regras do ACID. Durability é uma propriedade que só acontece após todos as outras terem sido testadas.

Conclusão

Banco de dados tem uma vasta game de assunto e ACID é apenas a ponto do iceberg. Queria trazer o básico para você, pois até eu mesmo ainda estou estudando e não sei muito. Espero que tenham gostado!

Carregando publicação patrocinada...
1