Wie implementiert man die Transaktionsverarbeitung in MongoDB durch SQL-Anweisungen?
Zusammenfassung: Als nicht-relationale Datenbank war MongoDB schon immer für seine hohe Leistung und Skalierbarkeit bekannt. Für Anwendungen, die eine Transaktionsverarbeitung erfordern, unterstützte MongoDB jedoch in früheren Versionen keine Transaktionsfunktionalität. Ab MongoDB Version 4.0 wurde jedoch eine Funktion namens Multi-Document ACID Transactions eingeführt, die SQL-Anweisungen zur Implementierung der Transaktionsverarbeitung verwenden kann. In diesem Artikel wird detailliert beschrieben, wie die Transaktionsverarbeitung über SQL-Anweisungen in MongoDB implementiert wird, und es werden spezifische Codebeispiele bereitgestellt.
2.1 Eine Transaktion erstellen
Bevor Sie eine Transaktion starten, müssen Sie zunächst eine Sitzung erstellen, die für nachfolgende Transaktionsvorgänge verwendet wird. . Das Codebeispiel zum Erstellen einer Sitzung lautet wie folgt:
var session = db.getMongo().startSession();
2.2 Starten einer Transaktion
Nach dem Erstellen einer Sitzung können wir eine neue Transaktion starten, indem wir die BEGIN TRANSACTION-Anweisung ausführen. Das Codebeispiel lautet wie folgt:
session.startTransaction();
2.3 Transaktionsoperationen ausführen
In einer Transaktion können wir mehrere SQL-Anweisungen ausführen, um Geschäftslogik zu implementieren. Wenn wir beispielsweise zwei Datensätze in eine Transaktion einfügen müssen, lautet das Codebeispiel wie folgt:
session.getDatabase('test').users.insert({name: '张三', age: 25}); session.getDatabase('test').users.insert({name: '李四', age: 30});
2.4 Transaktion festschreiben oder zurücksetzen
Nachdem alle Transaktionsvorgänge ausgeführt wurden, können wir wählen, ob die Transaktion festgeschrieben oder zurückgesetzt werden soll. Wenn alle Transaktionsvorgänge erfolgreich ausgeführt wurden, können wir die COMMIT-Anweisung verwenden, um die Transaktion festzuschreiben. Das Codebeispiel lautet wie folgt:
session.commitTransaction();
Wenn während der Transaktionsausführung ein Fehler oder eine Ausnahme auftritt, können wir die ROLLBACK-Anweisung verwenden, um die Transaktion zurückzusetzen. Das Codebeispiel lautet wie folgt:
session.abortTransaction();
2.5 Transaktionen und Sitzungen beenden
Nachdem wir die Transaktion festgeschrieben oder zurückgesetzt haben, können wir die END TRANSACTION-Anweisung verwenden, um die Transaktion zu beenden. Gleichzeitig muss die Sitzung beendet werden. Das Codebeispiel lautet wie folgt:
session.endSession();
var session = db.getMongo().startSession(); session.startTransaction(); try { var fromAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '123456'}); var toAccount = session.getDatabase('bank').accounts.findOne({accountNumber: '654321'}); var amount = 100; if (fromAccount.balance >= amount) { session.getDatabase('bank').accounts.updateOne({accountNumber: '123456'}, {$inc: {balance: -amount}}); session.getDatabase('bank').accounts.updateOne({accountNumber: '654321'}, {$inc: {balance: amount}}); } else { throw new Error('Insufficient balance'); } session.commitTransaction(); } catch (error) { session.abortTransaction(); print('Transaction failed: ' + error); } finally { session.endSession(); }
Im obigen Beispiel haben wir zuerst eine Sitzung erstellt und dann eine neue Transaktion gestartet. Anschließend werden die Kontoinformationen basierend auf dem Quellkonto und dem Zielkonto der Überweisung ermittelt. Wenn der Saldo des Quellkontos ausreicht, wird der Übertragungsvorgang durchgeführt und der Kontostand aktualisiert. Abschließend ist der gesamte Überweisungsvorgang mit der Übermittlung der Transaktion abgeschlossen.
Zusammenfassung: Die Implementierung der Transaktionsverarbeitung in MongoDB über SQL-Anweisungen kann dokumentübergreifende Vorgänge komfortabler machen. Obwohl MongoDB eine nicht relationale Datenbank ist, können wir durch die Einführung der Funktion „Multi-Document ACID Transactions“ SQL-Anweisungen verwenden, um die Transaktionsverarbeitung zu implementieren. Im Codebeispiel verwenden wir den offiziellen Treiber von MongoDB, um SQL-Anweisungen auszuführen, es können aber auch andere Tools von Drittanbietern verwendet werden, um dies zu erreichen.
Das obige ist der detaillierte Inhalt vonWie implementiert man die Transaktionsverarbeitung in MongoDB über SQL-Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!