Regrouper plusieurs opérations dans des transactions dans Azure Cosmos DB for MongoDB vCore
S’APPLIQUE À : MongoDB vCore
Il est courant de vouloir regrouper plusieurs opérations en une seule transaction pour les valider ou les restaurer ensemble. Dans les principes de base de données, les transactions implémentent généralement quatre principes ACID clés. ACID signifie :
- Atomicité : les transactions se terminent entièrement ou pas du tout.
- Cohérence : les bases de données passent d’un état cohérent à un autre.
- Isolation : les transactions individuelles sont à l’abri des transactions simultanées.
- Durabilité : les transactions terminées sont permanentes, garantissant la cohérence des données, même en cas de défaillance du système.
Les principes ACID dans la gestion de base de données garantissent que les transactions sont traitées de manière fiable. Azure Cosmos DB for MongoDB vCore implémente ces principes, ce qui vous permet de créer des transactions pour plusieurs opérations.
Prérequis
- Un cluster vCore Azure Cosmos DB for MongoDB existant.
- Si vous n’avez pas d’abonnement Azure, créez un compte gratuitement.
- Si vous disposez d’un abonnement Azure, créez un cluster Azure Cosmos DB for MongoDB vCore.
Créer une transaction
Créez une transaction à l’aide des méthodes appropriées à partir du langage de développement de votre choix. Ces méthodes incluent généralement un mécanisme d’enveloppement pour regrouper plusieurs transactions et une méthode pour valider la transaction.
Remarque
Les exemples de cette section supposent que vous disposez d’une variable de collection nommée collection
.
Utilisez
startSession()
pour créer une session client pour l’opération de transaction.const transactionSession = client.startSession();
Créez une transaction avec
withTransaction()
et placez toutes les opérations de transaction pertinentes dans le rappel.await transactionSession.withTransaction(async () => { await collection.insertOne({ name: "Coolarn shirt", price: 38.00 }, transactionSession); await collection.insertOne({ name: "Coolarn shirt button", price: 1.50 }, transactionSession); });
Validez la transaction avec
commitTransaction()
.transactionSession.commitTransaction();
Utilisez
endSession()
pour mettre fin à la session de transaction.transactionSession.endSession();
Restaurer une transaction
Parfois, vous devrez peut-être annuler une transaction avant qu’elle soit validée.
En utilisant une session de transaction existante, abandonnez la transaction avec
abortTransaction()
.transactionSession.abortTransaction();
Mettre fin à la session de transaction.
transactionSession.endSession();