MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Confirmação de duas fases no MongoDB


Quando o aplicativo ou banco de dados falha repentinamente entre aplicar a transação a A e aplicar a transação a B, ainda haverá uma transação com state:"pending" na coleção de transações globais. Seu script de recuperação que você executa após uma falha deve notar isso, verificar as duas contas e ver se há uma transação pendente em uma, mas não na outra conta. Agora ele sabe tudo o que precisa saber para reverter a transação ou tentar concluí-la.

Sim, escrever um script de recuperação tão inteligente não é fácil. Mas as transações em um sistema de banco de dados não projetado para eles são sempre difíceis. Às vezes, você pode contornar a exigência de transações no MongoDB projetando seus documentos de forma que os campos que precisam ser atualizados juntos estejam sempre no mesmo documento, mas nem sempre há uma maneira sensata de fazer isso. Quando seu caso de uso precisar absolutamente de transações, proteja sua sanidade e use um banco de dados relacional.