Propriedades ACID

Olá pessoal, espero que estejam todos ótimos !!

No post de hoje teremos algo mais teórico e de muita importância, vamos falar um pouco sobre as 4 propriedades que envolvem uma transação em um sistema de banco de dados.


Transação

Bom, mas antes de começarmos de fato, precisamos primeiramente entender o que é uma transação.

De acordo com o livro  Professional Sql Server 2008 Internals and Troubleshooting,  “Uma transação é uma unidade  de trabalho em uma base de dados que contém vários comandos que leêm e escrevem em uma base”.

Isso significa que quando executamos um INSERT, DELETE, UPDATE, estamos usando uma transação.

Ainda, segundo http://www.bosontreinamentos.com.br/sql-com-sql-server/transacoes-commit-e-rollback-no-sql-server/

“A transação é a propagação de alterações para o banco de dados, como por exemplo a alteração ou exclusão de registros em uma tabela”.

Quando executamos uma transação, esperamos que a mesma seja executada como um todo, ou, que a mesma não execute (não queremos que nosso Update em 10 linhas, seja executado em apenas 2 certo? Ou ainda que nosso Insert de 50 linhas só insira 15).

“Ou a transação é executada por completo, ou não será executada”. Este princípio é conhecido como Atomicidade, e é apenas 1 das 4 propriedades que envolvem uma transação.

Estes princípios são conhecidos como ACID.


Atomicidade

Atomicidade significa que para todos os efeitos, ou a transação será executada por completo, ou nada referente a esta transação será executado, e que todas as mudanças serão desfeitas.

Um bom exemplo desta propriedade, é um saque bancário: Via de regra o esperado é que ao sacar o dinheiro na máquina, a mesma lhe entregue o dinheiro, e o mesmo seja debitado na sua conta. Se alguma dessas transações forem completadas de forma independente, alguém será prejudicado. Caso o dinheiro seja sacado sem debitar da conta, o prejuízo será do banco, caso o dinheiro seja debitado, e a máquina não lhe entregue, então o prejudicado será você.


Consistência

 A consistência garante que uma transação não irá romper a integridade da base. Imaginemos o seguinte cenário: Temos uma tabela de produtos, e uma tabela de produto_precos, onde na tabela produto_precos existe um campo produto_id referenciando ao id do produto, na tabela produto? Ou ainda, quando tentamos atribuir um valor negativo em uma coluna em que exista uma constraint validando apenas valores maiores que zero.

Pois bem, a consistência é princípio que garante a integridade da nossa base.


Isolamento

                É comum em uma base, várias transações acontecerem simultaneamente, (é um registro novo, é alteração pra lá, delete pra cá, relatórios, etc.).

Cada transação ainda não finalizada, deve ser independente, e as alterações por ela realizada não deve ser lida por nenhuma outra transação em execução. (Vale indicar um post incrível pois o SQL permite controlar o nível de isolamento) https://edvaldocastro.com/rcsi-2.

Com isso é possível encontrar um equilíbrio entre os requisitos da empresa e performance.


Durabilidade

                A propriedade da durabilidade garante que uma transação, uma vez persistida (excluída, inserida ou alterada), permanecerá neste estado mesmo se houver uma falha do sistema.

Curiosidade: No Sql, as informações necessárias para reproduzir as alterações feitas em uma transação são gravadas no log de transações antes que a transação seja considerada confirmada


Referências

                BOLTON, Christian; LANGFORD, Justin; OZAR, Brent; ROWLAND-JONES, James; WORT Steven. Professional Sql Server 2008 Internals and Troubleshooting. Wrox Programmer to Programmer

Um abraço!!

E até a próxima!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *