MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Commit a due fasi in MongoDB

Quando l'applicazione o il database si arresta improvvisamente in modo anomalo tra l'applicazione della transazione ad A e l'applicazione della transazione a B, ci sarà ancora una transazione con state:"pending" nella raccolta delle transazioni globali. Il tuo script di ripristino che esegui dopo un arresto anomalo dovrebbe notarlo, controllare i due account e vedere che c'è una transazione in sospeso in uno, ma non nell'altro account. Ora sa tutto ciò che deve sapere per annullare la transazione o provare a completarla.

Sì, scrivere uno script di ripristino così intelligente non è facile. Ma le transazioni in un sistema di database non progettato per loro sono sempre difficili. A volte puoi aggirare la richiesta di transazioni in MongoDB progettando i tuoi documenti in modo che i campi che devono essere aggiornati insieme siano sempre nello stesso documento, ma non c'è sempre un modo sano per farlo. Quando il tuo caso d'uso ha assolutamente bisogno di transazioni, proteggi la tua sanità mentale e usa un database relazionale.