Você já ouviu falar em Banco de Dados ACID? Eles são de extrema importância para a realização de transações em bancos de dados, inclusive numa área de big data.
As transações seriam um grupo que contém uma ou mais operações lógicas, como, por exemplo, uma transferência de uma conta bancária para outra. Nesse caso, as operações seriam as de criação, leitura, atualização e deleção (ou, em Inglês, a sigla CRUD – Create – Read – Update – Delete).
Contudo, o principal problema de uma base de dados que não use a estrutura ACID seria a abundante quantidade de dados que é processada diariamente, além da lentidão que eles podem ter ao serem processados. E, você não quer esperar um tempo longo para realizar uma transferência bancária, não é?
Por isso, para simplificar esses procedimentos, é utilizada a estrutura ACID, para que os dados sejam armazenados de forma segura e garantam o processamento dos dados de forma eficiente no servidor. E aí? Ficou curioso sobre como esse tipo de estrutura funciona? Fique conosco nessa jornada!
- O que é um Banco de Dados?
- O que é ACID? E o que significa “ACID Compliance”?
- Quais às quatro propriedades ACID em um Banco de Dados?
- Quando usar ACID? Principais aplicações!
- Tipos de falhas
- Por que é importante a estrutura ACID?
O que é um Banco de Dados?
Um banco de dados seria um local que você pode guardar dados de forma estruturada em computadores. Esses dados, de alguma forma, precisam estar relacionados entre si, para haver sentido entre eles.
Contudo, conforme os bancos de dados vão se tornando mais complexos, surgem os SGBDs, que seriam os Sistemas de Gerenciamento de Banco de Dados, ou seja, um sistema que possui a tarefa de gerenciar vários bancos de dados, se for necessário.
Um tipo de abordagem de grande sucesso nas empresas relacionada aos SGBDs seria a ACID. Mas o que ela significa? Quais são os seus pilares? Esses assuntos serão explicados nos tópicos a seguir.
O que é ACID? E o que significa “ACID Compliance”?
A sigla ACID define os quatro pilares necessários para a realização de uma transação em um sistema de banco de dados. São elas:
- Atomicidade;
- Consistência;
- Isolamento;
- Durabilidade.
No caso, se as quatro propriedades exibidas acima forem seguidas de forma correta, as suas transações estão compatíveis com a estrutura ACID. Ou seja, esse é o conceito de ACID Compliance, estar em conformidade com os pilares das transações.
Juntos, os conceitos acima garantem que as transações sejam realizadas de forma confiável. Contudo, é necessário muito cuidado para a atualização de dados, para evitar que os dados não se corrompam. E, aplicar as propriedades ACID a cada processo de alteração necessário é a melhor forma de garantir a confiabilidade dos dados.
Muito legal! Mas, o que cada propriedade faz? Qual a responsabilidade que cada uma possui? Isso será exibido no tópico a seguir.
Quais às quatro propriedades ACID em um Banco de Dados?
Atomicidade
Seria a garantia de que a transação será feita totalmente ou não será feita. Nesse caso, a transação não é feita “pela metade”. Se por ventura uma operação da transação falhar, consequentemente, toda a transação falhará.
Você se lembra das aulas que você teve de Química ou Ciências, na escola? E, caso a resposta seja positiva, você se lembra do conceito de átomos? Em caso negativo, sem problemas!
Um átomo seria uma esfera maciça indivisível, indestrutível e invisível. Ou seja, esse conceito de ser indivisível se encaixa com o de atomicidade, pois, como explicado anteriormente, uma transação não é feita de forma incompleta. Ou ela é feita, ou não é feita.
Um exemplo seria uma pessoa usuária transferir uma quantia para outra pessoa. O dinheiro transferido pode ir totalmente para a conta do destinatário ou não pode. Você não faz um envio de dinheiro pela metade. Isso poderia ocasionar sérios problemas para os envolvidos.
Consistência
Seria a proteção da integridade dos dados. Ou seja, se um banco de dados fizer uma operação que não seja válida, o processo será impedido e retornará para o estado inicial do processo.
As operações serão legítimas se passarem por todas as verificações do banco de dados, incluindo todas as restrições inseridas nele (gatilhos, funções, procedimentos, entre outros).
Por exemplo, em sua conta, você possui uma quantia de cem reais e deseja realizar um saque de duzentos reais. A operação será impedida, pois, você não possui tal quantia em sua conta bancária para ser sacada.
Isolamento
A capacidade de isolamento seria o fato de uma transação não “atrapalhar” a outra e ocorrer de forma isolada, garantindo que sejam feitas de forma individual.
Mas, isso quer dizer que não pode acontecer mais de uma transação simultaneamente? Nesse caso, não.
Podem ocorrer muitas transações ao mesmo tempo. Porém, elas não podem impactar as outras transações que ocorrem simultaneamente.
Vamos pensar em sites de e-commerce como exemplo. É um fato afirmar que é um local em que está ocorrendo mais de uma transação simultânea. Você vê um produto que tem somente uma unidade e, outro comprador também comprará ele ao mesmo tempo. E aí, o que pode acontecer, já que só tem apenas um produto?
Nesse caso, o primeiro comprador que finalizar a compra fará que a transação de seu concorrente seja interrompida.
Durabilidade
Seria a preservação dos dados após as operações terem sido realizadas. Ou seja, uma vez que uma transação for efetuada, ela permanecerá dessa forma, mesmo que ocorram problemas graves no sistema, sem precisar de retrabalho.
Vamos pensar no caso anterior: uma pessoa usuária conseguiu a compra do produto e, suponhamos que devido a uma forte chuva, o servidor foi afetado e ficou um tempo inativo ou o servidor foi reiniciado. Nossa! Os dados da compra serão perdidos e ele terá que fazer de novo? Isso não pode ocorrer em hipótese alguma!
Os dados dessa compra efetuada devem ser exibidos após o servidor voltar de sua inatividade, garantindo a durabilidade do banco de dados.
Quando usar ACID? Principais aplicações!
Para utilizar um banco de dados ACID, é necessário verificar se o seu banco de dados é consistente. Ou seja, se ele armazena somente os resultados das transações que forem bem sucedidas.
Dessa forma, para qualquer base de dados que seja compatível com ACID, existirá a garantia que ocorram somente transações com êxito. Se por um acaso ocorrer alguma falha na operação, nenhum dado será alterado ou excluído.
Com as transações ACID, a pessoa usuária poderá se preocupar apenas com as regras de negócios que sua aplicação terá, deixando a parte de constatação de falhas para um segundo momento.
Ou seja, se por um acaso você estiver desenvolvendo algum aplicativo ou sistema institucional de forma distribuída, a utilização da estrutura ACID para as transações será muito bem-vinda.
Tipos de falhas
Falha na transação
Esse tipo de falha pode ocorrer por ter algum valor incorreto ou alguma violação de consistência similar. Também pode ocorrer devido a um gatilho ou cascade, que seriam restrições no banco de dados inseridas no desenvolvimento.
Falha de sistema
A falha de sistema pode ocorrer por algum problema existente no hardware (servidores), no sistema operacional (Linux, Windows, MacOS) ou por algum erro de código.
Falha de mídia
Nesse caso, a falha pode existir:
- Por uma leitura de um arquivo inexistente no servidor;
- Por uma leitura de um arquivo corrompido;
- Não ser possível ler ou gravar um utensílio de armazenamento (como HDs, SSDs, entre outros).
Esse tipo de falha, comparada às anteriores, é a que raramente ocorre.
Por que é importante a estrutura ACID?
O padrão ACID é importante pois cria um modelo de confiabilidade e segurança, entre outras palavras. O armazenamento, recuperação e manutenção de dados representa vários pontos móveis.
Ou seja, é importante que nada seja quebrado ou corrompido no processo. As bases de dados que forem compatíveis com ACID, estão em um nível elevado contra perda e corrupção de dados.
ACID é uma estrutura de banco de dados que garante seu correto funcionamento e impede que dados sejam corrompidos ou perdidos no processamento de transações. Sua aplicação é fundamental para que não haja dores de cabeça e nem lentidão na hora de lidar com inúmeros processos simultâneos em um banco de dados.
Para continuar o seu aprendizado com banco de dados, leia o artigo a seguir, relacionado aos triggers (gatilhos) em SQL.