Gdy aplikacja lub baza danych nagle ulegnie awarii między zastosowaniem transakcji do A i do B, nadal będzie transakcja z state:"pending"
w globalnej kolekcji transakcji. Twój skrypt odzyskiwania, który uruchamiasz po awarii, powinien to zauważyć, sprawdzić dwa konta i zobaczyć, że istnieje oczekująca transakcja na jednym, ale nie na drugim koncie. Teraz wie wszystko, co musi wiedzieć, aby wycofać transakcję lub spróbować ją dokończyć.
Tak, napisanie tak inteligentnego skryptu odzyskiwania nie jest łatwe. Jednak transakcje w systemie baz danych, który nie jest dla nich przeznaczony, są zawsze trudne. Czasami można obejść wymaganie transakcji w MongoDB, projektując dokumenty w taki sposób, aby pola, które muszą być aktualizowane razem, zawsze znajdowały się w tym samym dokumencie, ale nie zawsze można to zrobić w rozsądny sposób. Kiedy Twój przypadek użycia absolutnie wymaga transakcji, chroń swoje zdrowie psychiczne i korzystaj z relacyjnej bazy danych.