quinta-feira, 26 de abril de 2007

Gerenciamento de Dados - Porque nós precisamos de transações?

Cada desenvolvedor de aplicação, tem o mesmo objetivo que é assegurar a integridade da base de dados.

Pode haver problemas se você não usar transações para assegurar a integridade da base de dados e isto pode ser ilustrado pelo seguinte cenário:

Um usuário, chamado Fred, quer transferir $50 de sua conta poupança para sua conta corrente. Neste caso, a matemática é simples:

Poupança = poupança - 50

Conta corrente = conta corrente + 50


O que aconteceria se houvesse uma falha de algum tipo entre as duas operações?

Neste caso, a conta poupança seria subtraída em $50, mas a conta corrente não seria atualizada. Pobre Fred ficou sem os $50 e existe também a questão do fundo perdido. Espere até a auditoria!

Nós podemos dizer que, neste exemplo, a integridade de dados está extrema prejudicada.

Se uma transação tivesse sido usada para assegurar que as duas operações fossem executadas como uma unidade lógica única, então se houvesse uma falha durante a execução deste simples processo, todo o processo teria sido abortado ou voltado ao seu estado inicial (rolled back - na linguagem SQL) e a integridade dos dados estaria preservada.

Assim o dinheiro, nas contas, retornaria ao valor inicial que estavam antes de iniciar a transação.

Aqui, eu deveria também adicionar o obvio: no cenário acima no qual parecem existir apenas duas operações, existiram realmente mais duas operações:

Ler o saldo da conta poupança

Ler o saldo da conta corrente

Isto é, sem considerar as modificações reais ao banco de dados.

Como nós podemos ver o processo aparentemente simples não é tão simples como parece.

Em resumo, desenvolvimento com transações é uma parte necessária de aplicações de dados integrados (data-bound applications).

Fonte: "Data Management.pdf", arquivo acompanha a instalação do eDeveloper 10, em inglês.

Nenhum comentário: