Partager via


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

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.

  1. Utilisez startSession() pour créer une session client pour l’opération de transaction.

    const transactionSession = client.startSession();
    
  2. 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);
    });
    
  3. Validez la transaction avec commitTransaction().

    transactionSession.commitTransaction();
    
  4. 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.

  1. En utilisant une session de transaction existante, abandonnez la transaction avec abortTransaction().

    transactionSession.abortTransaction();
    
  2. Mettre fin à la session de transaction.

    transactionSession.endSession();
    

Étape suivante