Confirmação Atômica das Transações Distribuídas Vamos dar continuidade na nossa jornada sobre transações distribuídas e olhar este importante conceito que é a Confirmação Atômica ou Atomic Commit. Vamos lá! Muito bem, até agora nós vimos que a transação distribuída é confirmada ou revertida. Se há uma confirmação ou comando de commit, as atualizações são duráveis em todos os nós participantes dessa transação distribuída. Se há uma reversão, então não há nenhum efeito visível sobre os nossos participantes desta transação distribuída. Então, aqui nós vamos relembrar o conceito de consistência ACID, que é justamente que é justamente preservar um estado válido ou ainda levar o banco de dados do estado A para o estado B, sendo que A e B são estados válidos determinados por regras da aplicação. Isso é consistência ácida, lá dos bancos relacionais que nós discutimos até agora. Então, nós vamos perceber que, sob o contexto de transação distribuída, para nós alcançarmos a consistência ácida, que é a consistência de preservação de estado válido do banco de dados, nós temos uma dependência de atomicidade. Então, se a nossa transação distribuída atualiza dados em múltiplos nós, nós precisamos que todos os nós confirmem ou revertam essa transação. Se acontecer uma falha em um único nó que seja, então todos os demais nós participantes precisam reverter as operações desta transação distribuída. Ou seja, este é um problema de confirmação atômica, ou na literatura em inglês, Atomic Commitment. E aqui nós temos dois conceitos importantes para nós avançarmos a nossa compreensão. Então, confirmação atômica, como nós já vimos e já compreendemos, todos nós votam para confirmar ou reverter uma transação distribuída. A confirmação, ou seja, o commit, acontece somente se todo mundo, se todos os nós participantes, votarem para o commit da transação, para a confirmação desta transação. Se apenas um nó participante falhar, então toda transação tem que ser revertida em todos os nós participantes. Em contrapartida ao conceito de confirmação atômica, nós vamos encontrar e vamos detalhar mais para frente o conceito de consenso. O consenso já vai permitir uma proposição de valores para um ou mais nossos participantes vão propor um valor que seja válido, um valor que seja consistente. Qualquer valor proposto é candidato a ser escolhido como valor válido. E os nós com falhas são tolerados enquanto acontecer o quórum dos demais nós participantes. Então, percebam que aqui nós já temos grandes diferenças desses dois conceitos importantes de computação distribuída.