Comment implémenter le traitement des transactions dans MongoDB via des instructions SQL ?
Résumé : En tant que base de données non relationnelle, MongoDB a toujours été connue pour ses hautes performances et son évolutivité. Cependant, pour les applications nécessitant un traitement de transactions, MongoDB ne prenait pas en charge la fonctionnalité de transaction dans les versions antérieures. Cependant, à partir de la version 4.0 de MongoDB, une fonctionnalité appelée Transactions ACID multi-documents a été introduite, qui peut utiliser des instructions SQL pour implémenter le traitement des transactions. Cet article présentera en détail comment implémenter le traitement des transactions via des instructions SQL dans MongoDB et fournira des exemples de code spécifiques.
2.1 Créer une transaction
Avant de démarrer une transaction, vous devez d'abord créer une session, qui sera utilisée pour les opérations de transaction ultérieures. . L'exemple de code pour créer une session est le suivant :
var session = db.getMongo().startSession();
2.2 Démarrage d'une transaction
Après avoir créé une session, nous pouvons démarrer une nouvelle transaction en exécutant l'instruction BEGIN TRANSACTION. L'exemple de code est le suivant :
session.startTransaction();
2.3 Effectuer des opérations de transaction
Dans une transaction, nous pouvons exécuter plusieurs instructions SQL pour implémenter la logique métier. Par exemple, si nous devons insérer deux enregistrements dans une transaction, l'exemple de code est le suivant :
session.getDatabase('test').users.insert({name: '张三', age: 25}); session.getDatabase('test').users.insert({name: '李四', age: 30});
2.4 Valider ou annuler la transaction
Une fois toutes les opérations de transaction exécutées, nous pouvons choisir de valider ou d'annuler la transaction. Si toutes les opérations de transaction sont exécutées avec succès, nous pouvons utiliser l'instruction COMMIT pour valider la transaction. L'exemple de code est le suivant :
session.commitTransaction();
Si une erreur ou une exception se produit lors de l'exécution de la transaction, nous pouvons utiliser l'instruction ROLLBACK pour annuler la transaction. L'exemple de code est le suivant :
session.abortTransaction();
2.5 Fin des transactions et des sessions
Après avoir validé ou annulé la transaction, nous pouvons utiliser l'instruction END TRANSACTION pour mettre fin à la transaction. Dans le même temps, la session doit également être terminée. L'exemple de code est le suivant :
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(); }
Dans l'exemple ci-dessus, nous avons d'abord créé une session puis démarré une nouvelle transaction. Ensuite, les informations sur le compte sont obtenues en fonction du compte source et du compte cible du transfert. Si le solde du compte source est suffisant, l'opération de transfert est effectuée et le solde du compte est mis à jour. Enfin, l'ensemble du processus de transfert est complété par la soumission de la transaction.
Résumé : La mise en œuvre du traitement des transactions dans MongoDB via des instructions SQL peut rendre les opérations inter-documents plus pratiques. Bien que MongoDB soit une base de données non relationnelle, en introduisant la fonction Multi-Document ACID Transactions, nous pouvons utiliser des instructions SQL pour implémenter le traitement des transactions. Dans l'exemple de code, nous utilisons le pilote officiel de MongoDB pour exécuter des instructions SQL, mais d'autres outils tiers peuvent également être utilisés pour y parvenir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!