É impossível falar de banco de dados e não falar das características ACID e também das transações ACID. Então vamos lá nos aprofundar nesses conceitos. Primeiramente, vamos relembrar, ACID, na verdade, é a combinação de quatro características bem importantes e que estão intimamente relacionadas com a nossa discussão de banco de dados e especificamente aos bancos de dados relacionais. Então, primeira letrinha, letra A, de Atomicidade. Comentei em alguns momentos que a Atomicidade tem a ver com a execução completa de uma transação É tudo ou nada Em uma das nossas aulas eu comento sobre uma transação de piques Ou seja, não existe um piques que vai pela metade Ou ele acontece por completo ou ele não acontece O tema da atomicidade tem a ver exatamente com essa característica de tudo ou nada ou seja todas as operações são bem sucedidas ou nenhuma dessas operações segundo elemento consistência então sobre consistência vamos entender como regras para manter os nossos dados no estado correto após a execução de uma série de operações de escrita e leitura de um banco de dados, aqui é uma transação, e é justamente para manter o dado consistente com as restrições que estão ali codificadas em banco de dados. Aqui a gente abre um rápido parênteses para falar sobre constraints. Então, vamos relembrar que o banco de dados relacional nos traz constraints para garantir certas regras nas nossas tabelas. Então, por exemplo, ter um identificador único, que é a chave primária, que não pode ser nulo, ter valores por padrão, ou seja, quando uma operação de inserção acontece, pode existir uma constraint que vai obrigar a ter um valor inicial para aquele campo, regras de valores únicos, não nulos, expressões. Então, esse tipo de restrição, constraint em inglês, é justamente para a gente ter a consistência dos nossos dados. isolamento isolamento tem a ver com o fato de que nós teremos uma série de operações acontecendo todas elas em paralelo então muitas operações de escrita atualização e leitura estão acontecendo no banco de dados vindas de diferentes interlocutores e até que cada uma dessas transações seja completada e confirmada, então nós vamos falar aqui do comando popular commit, então até a confirmação de uma transação, essa transação é invisível e está em um ambiente separado. Isso é muito importante para que todo o paralelismo faça com que os dados estejam íntegros. Então, isso é o isolamento. E, por fim, não menos importante, nós temos a durabilidade. A durabilidade tem a ver com o fato de que, uma vez que todas as operações que compõem uma transação acontecem com sucesso, esse resultado tem que estar persistido com sucesso também. Essa informação tem que estar gravada no banco de dados. Então, a informação gravada é uma informação durável. E durabilidade aqui também pode ser associada com gravar a informação em mais de um lugar. Consequentemente, você tem essa informação mais durável também. Vamos relembrar o conceito de transação. Transação é uma operação econômica do nosso mundo real. Então, pode ser uma compra, que consequentemente vai ter uma entrega sendo feita daquele produto que foi comprado, uma transferência, um saque de conta corrente. Então, a transação aqui está vinculada a uma atividade financeira ou econômica do nosso dia a dia. Computacionalmente, uma transação é o estado transitório do dado, que está sendo alterado por uma ou mais operações de transformação. Então, transação é um conjunto de inserções e atualizações de um determinado dado. E vamos relembrar que o OLPP, os bancos de dados que suportam cargas de trabalho OLPP, onde o relacional se encaixa muito bem para isso, permite ter uma grande quantidade de adições ou modificações em um grande conjunto de dados, com muitas pessoas ou aplicações fazendo isso ao mesmo tempo, com muita concorrência e ainda com alto desempenho. E, consequentemente, nós temos assim o processamento computacional em tempo real de uma transação financeira ou econômica do negócio, da vida real. Então, isso é uma transação. E com esses dois conceitos, juntando ACID com transação, nós vamos chegar na transação ACID. E a ideia aqui é justamente que o ACID, como nós já captamos, vai garantir que os dados vão estar em um estado consistente e esperado após a execução daquelas operações que compõem a transação. E a transação só será bem sucedida se todas essas operações acontecerem com sucesso. Também é tudo ou nada. Uma transação pode impactar um registro, uma única linha em uma tabela ou um único documento em uma coleção ou vários desses registros. Uma transação que obedece à atomicidade, à consistência, ao isolamento e à durabilidade é o que nós chamamos de transação ácid. E vocês podem ter certeza que pessoas desenvolvedoras, pessoas administradoras de bancos de dados e pessoas arquitetas de solução, entre outros profissionais, estão muito interessados em ter bancos de dados, independente da sua natureza, que tenham conformidade ou que tenham suporte a transações ASCII.