Freigeben über


Gruppieren mehrerer Vorgänge in Transaktionen in Azure Cosmos DB for MongoDB vCore

GILT FÜR: MongoDB-vCore

Es ist üblich, mehrere Vorgänge in einer einzelnen Transaktion zu gruppieren, um entweder einen Commit oder ein Rollback durchzuführen. In Datenbankprinzipien implementieren Transaktionen in der Regel vier wichtige ACID-Prinzipien. ACID steht für Folgendes:

  • Atomarität: Transaktionen werden vollständig oder gar nicht abgeschlossen.
  • Konsistenz: Datenbanken wechseln von einem konsistenten Zustand in einen anderen.
  • Isolation: Einzelne Transaktionen sind von gleichzeitigen Transaktionen abgeschirmt.
  • Dauerhaftigkeit: Abgeschlossene Transaktionen sind dauerhaft und stellen sicher, dass die Daten auch bei Systemausfällen konsistent bleiben.

Die ACID-Prinzipien in der Datenbankverwaltung stellen sicher, dass Transaktionen zuverlässig verarbeitet werden. Azure Cosmos DB for MongoDB vCore implementiert diese Prinzipien, sodass Sie Transaktionen für mehrere Vorgänge erstellen können.

Voraussetzungen

Erstellen einer Transaktion

Erstellen Sie eine neue Transaktion mit den entsprechenden Methoden der Entwicklersprache Ihrer Wahl. Diese Methoden umfassen in der Regel einen Wrappingmechanismus zum Gruppieren mehrerer Transaktionen und eine Methode zum Committen der Transaktion.

Hinweis

In den Beispielen in diesem Abschnitt wird davon ausgegangen, dass Sie über eine Sammlungsvariable mit dem Namen collection verfügen.

  1. Verwenden Sie startSession(), um eine Clientsitzung für den Transaktionsvorgang zu erstellen.

    const transactionSession = client.startSession();
    
  2. Erstellen Sie mithilfe von withTransaction() eine Transaktion, und platzieren Sie alle relevanten Transaktionsvorgänge innerhalb des Rückrufs.

    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. Committen Sie die Transaktion mithilfe von commitTransaction().

    transactionSession.commitTransaction();
    
  4. Verwenden Sie endSession(), um die Transaktionssitzung zu beenden.

    transactionSession.endSession();
    

Durchführen des Rollbacks für eine Transaktion

Gelegentlich müssen Sie eine Transaktion möglicherweise rückgängig machen, bevor sie committet wird.

  1. Wenn Sie eine vorhandene Transaktionssitzung verwenden, brechen Sie die Transaktion mit abortTransaction() ab.

    transactionSession.abortTransaction();
    
  2. Beenden Sie die Transaktionssitzung.

    transactionSession.endSession();
    

Nächster Schritt