Olá galera o/
No post de hoje, vamos entender um pouco sobre conceito de ACID, que é amplamente empregado em bancos de dados relacionais e ambientes de big data. Vamos desvendar o significado por trás de cada letra dessa sigla e, por meio de exemplos do dia a dia, compreender seu funcionamento, na prática.
O que ACID?
ACID é um acrônimo que representa um conjunto de quatro propriedades essenciais que garantem a confiabilidade, integridade e consistência dos dados.
Descrevendo o ACID!
Abaixo iremos descrever as propriedades do ACID:
- Atomicidade:
- Descrição: Garante que todas as operações feitas em uma transação sejam executadas sucesso ou nenhuma seja executada. Isso significa que uma transação é tratada como uma unidade única e indivisível. Se uma parte da transação falhar, a transação inteira é revertida e nenhuma alteração é feita no banco de dados.
- Para garantir a atomicidade, os bancos de dados geralmente usam dois mecanismos chamados “commit e rollback”. O commit é uma operação que confirma as alterações feitas em uma transação. Já o rollback é uma operação que reverte as alterações feitas em uma transação.
- Alguns bancos de dados tem a funcionalidade de auto-commit, como, por exemplo, o SQL Server.
- Descrição: Garante que todas as operações feitas em uma transação sejam executadas sucesso ou nenhuma seja executada. Isso significa que uma transação é tratada como uma unidade única e indivisível. Se uma parte da transação falhar, a transação inteira é revertida e nenhuma alteração é feita no banco de dados.
- Exemplo 1: Considere uma transação que envolve transferência de valores entre duas contas bancárias. Se durante a transferência houver um erro, como falta de saldo suficiente, a atomicidade garante que qualquer valor retirado de uma conta seja devolvido, e a transação não deixe o sistema em um estado inconsistente.
- Exemplo 2: Imagine que você está fazendo um pedido em uma loja online. Se o pedido não for concluído com sucesso, os produtos não devem ser reservados e o cartão de crédito do cliente não deve ser cobrado.
- Consistência:
- Descrição: Garante que o banco de dados esteja sempre em um estado consistente após a conclusão de uma transação. Isso significa que os dados no banco de dados devem refletir a realidade, ou seja, as transações devem respeitar regras predefinidas (integridade referencial, restrições, etc.) para preservar a validade dos dados.
- Para garantir a consistência, os bancos de dados geralmente usam restrições de integridade (domínio). Por exemplo, uma restrição de integridade pode exigir que o saldo de uma conta bancária seja sempre positivo.
- Lista de posts sobre restrições de domínio:
- Descrição: Garante que o banco de dados esteja sempre em um estado consistente após a conclusão de uma transação. Isso significa que os dados no banco de dados devem refletir a realidade, ou seja, as transações devem respeitar regras predefinidas (integridade referencial, restrições, etc.) para preservar a validade dos dados.
- Exemplo: Imagine que você está excluindo um registro de um banco de dados. Se o registro não for excluído corretamente, o registro ainda deve estar presente no banco de dados.
- Isolamento:
- Descrição: Isolamento garante que transações em execução simultânea não interfiram umas nas outras. Isso significa que as alterações feitas em uma transação não devem ser visíveis para outras transações até que a primeira seja concluída.
- Para garantir o isolamento, os bancos de dados geralmente usam um mecanismo chamado “bloqueio”. O bloqueio é uma operação que impede que outras transações acessem um determinado dado. Por exemplo,
- Descrição: Isolamento garante que transações em execução simultânea não interfiram umas nas outras. Isso significa que as alterações feitas em uma transação não devem ser visíveis para outras transações até que a primeira seja concluída.
- Exemplo 1: Imagine que duas pessoas estão fazendo compras online no mesmo produto. Se uma pessoa adicionar o produto ao carrinho de compras, a outra pessoa não deve ser capaz de ver o produto no carrinho dela até que a primeira pessoa conclua a compra.
- Exemplo 2: Se uma transação está atualizando o saldo de uma conta bancária, o banco de dados pode bloquear a conta para que outras transações não possam acessá-la até que a atualização seja concluída.
- Durabilidade:
- Descrição: Garante que, uma vez que uma transação é confirmada, suas alterações permaneçam permanentes no sistema, mesmo em caso de falhas do sistema. Se o sistema falhar antes que a alteração seja concluída, a alteração deve ser restaurada quando o sistema for reiniciado. Isso garante que os dados sejam preservados, mesmo em caso de falha.
- Para garantir a durabilidade, os bancos de dados geralmente usam um mecanismo chamado “log de transações”. O log de transações é um arquivo que registra todas as alterações feitas em um banco de dados. Em caso de falha do sistema, o banco de dados pode usar o log de transações para restaurar os dados para o estado em que estavam antes da falha.
- Descrição: Garante que, uma vez que uma transação é confirmada, suas alterações permaneçam permanentes no sistema, mesmo em caso de falhas do sistema. Se o sistema falhar antes que a alteração seja concluída, a alteração deve ser restaurada quando o sistema for reiniciado. Isso garante que os dados sejam preservados, mesmo em caso de falha.
- Exemplo 1: Imagine que você está fazendo uma alteração importante em um banco de dados. Se o sistema falhar antes que a alteração seja concluída, a alteração deve ser restaurada quando o sistema for reiniciado.
- Exemplo 2: Se um usuário realiza uma transação de depósito em um banco, a durabilidade garante que o valor depositado permaneça no banco de dados mesmo que ocorra uma falha no sistema imediatamente após a confirmação da transação.
Possuo o ACID em Big Data?
Utilizamos o conceito do ACID nos arquivos do tipo Delta. Vocês podem analisar melhor na postagem que fiz sobre os tipos de arquivos utilizados no big data. Data Engineer – Conhecendo os tipos de arquivos mais utilizados no big data.
Considerações Finais!
Neste post, exploramos o entendimento do conceito ACID, discutindo o funcionamento de cada um dos seus princípios e utilizando exemplos de fácil compreensão. A compreensão desse conceito é essencial para entendermos o funcionamento das operações em nossos bancos de dados, independentemente de serem relacionais ou relacionados a Big Data.
Espero que tenham gostado, boa leitura e bons estudos.
Quem quiser mandar comentários, sugestões, críticas ou dicas complementares, fiquem a vontade, pois feedbacks positivos ou negativos engradecem meu conhecimento para poder melhorar as postagens para vocês.
Até a próxima o/
Acessem nossas Redes Sociais: