sql >> Databasteknik >  >> NoSQL >> MongoDB

Tvåfas commit i MongoDB

När applikationen eller databasen plötsligt kraschar mellan att tillämpa transaktionen på A och tillämpa transaktionen på B, kommer det fortfarande att finnas en transaktion med state:"pending" i den globala transaktionssamlingen. Ditt återställningsskript som du kör efter en krasch bör märka detta, kontrollera de två kontona och se att det finns en väntande transaktion i det ena, men inte det andra kontot. Den vet nu allt den behöver veta för att antingen återställa transaktionen eller försöka slutföra den.

Ja, det är inte lätt att skriva ett återställningsskript som är så smart. Men transaktioner i ett databassystem som inte är designat för dem är alltid svårt. Ibland kan du kringgå att kräva transaktioner i MongoDB genom att designa dina dokument på ett sätt så att fält som behöver uppdateras tillsammans alltid finns i samma dokument, men det finns inte alltid ett vettigt sätt att göra detta. När ditt användningsfall absolut behöver transaktioner, skydda ditt förstånd och använd en relationsdatabas.



  1. Importera data till MongoDB från JSON-fil med Java

  2. Hur loggar man frågorna som körs av Spring Data MongoDB?

  3. Redis - Anslut till fjärrserver

  4. Hur säkert är det att lagra sessioner med Redis?