Delen via


Meerdere bewerkingen groeperen in transacties in Azure Cosmos DB voor MongoDB vCore

VAN TOEPASSING OP: MongoDB vCore

Het is gebruikelijk om meerdere bewerkingen te groeperen in één transactie om samen te zetten of terug te draaien. In databaseprincipes implementeren transacties doorgaans vier belangrijke ACID-principes . ACID staat voor:

  • Atomiciteit: Transacties worden helemaal voltooid of helemaal niet.
  • Consistentie: Databases gaan van de ene consistente status naar de andere.
  • Isolatie: afzonderlijke transacties worden afgeschermd van gelijktijdige transacties.
  • Duurzaamheid: voltooide transacties zijn permanent, zodat gegevens consistent blijven, zelfs tijdens systeemfouten.

De ACID-principes in databasebeheer zorgen ervoor dat transacties betrouwbaar worden verwerkt. Azure Cosmos DB voor MongoDB vCore implementeert deze principes, zodat u transacties voor meerdere bewerkingen kunt maken.

Vereisten

Een transactie maken

Maak een nieuwe transactie met behulp van de juiste methoden uit de taal voor ontwikkelaars van uw keuze. Deze methoden bevatten doorgaans een wrappingmechanisme om meerdere transacties samen te groeperen en een methode om de transactie vast te leggen.

Notitie

In de voorbeelden in deze sectie wordt ervan uitgegaan dat u een verzamelingsvariabele hebt met de naam collection.

  1. Hiermee startSession() maakt u een clientsessie voor de transactiebewerking.

    const transactionSession = client.startSession();
    
  2. Maak een transactie met behulp van withTransaction() en plaats alle relevante transactiebewerkingen binnen de callback.

    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. Voer de transactie door met behulp van commitTransaction().

    transactionSession.commitTransaction();
    
  4. Gebruik endSession() dit om de transactiesessie te beëindigen.

    transactionSession.endSession();
    

Een transactie terugdraaien

Soms moet u een transactie mogelijk ongedaan maken voordat deze wordt doorgevoerd.

  1. Als u een bestaande transactiesessie gebruikt, moet u de transactie afbreken met abortTransaction().

    transactionSession.abortTransaction();
    
  2. Beëindig de transactiesessie.

    transactionSession.endSession();
    

Volgende stap