Udostępnij za pośrednictwem


Grupowanie wielu operacji w transakcjach w usłudze Azure Cosmos DB dla rdzeni wirtualnych bazy danych MongoDB

DOTYCZY: Rdzenie wirtualne bazy danych MongoDB

Często trzeba grupować wiele operacji w jedną transakcję, aby zatwierdzić lub wycofać ze sobą. W zasadach bazy danych transakcje zwykle implementują cztery kluczowe zasady ACID . ACID oznacza:

  • Niepodzielność: Transakcje zakończą się całkowicie lub w ogóle nie.
  • Spójność: bazy danych przechodzą z jednego spójnego stanu na inny.
  • Izolacja: Pojedyncze transakcje są chronione przed równoczesnymi.
  • Trwałość: Zakończone transakcje są trwałe, zapewniając spójność danych nawet podczas awarii systemu.

Zasady ACID w zarządzaniu bazami danych zapewniają niezawodne przetwarzanie transakcji. Rdzenie wirtualne usługi Azure Cosmos DB dla bazy danych MongoDB implementują te zasady, umożliwiając tworzenie transakcji dla wielu operacji.

Wymagania wstępne

  • Istniejący klaster usługi Azure Cosmos DB dla rdzeni wirtualnych bazy danych MongoDB.

Tworzenie transakcji

Utwórz nową transakcję przy użyciu odpowiednich metod z wybranego języka dewelopera. Te metody zazwyczaj obejmują pewien mechanizm zawijania, aby grupować wiele transakcji razem i metodę zatwierdzania transakcji.

Uwaga

W przykładach w tej sekcji założono, że masz zmienną kolekcji o nazwie collection.

  1. Użyj startSession() polecenia , aby utworzyć sesję klienta dla operacji transakcji.

    const transactionSession = client.startSession();
    
  2. Utwórz transakcję przy użyciu metody withTransaction() i umieść wszystkie odpowiednie operacje transakcji w wywołaniu zwrotnym.

    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. Zatwierdź transakcję przy użyciu polecenia commitTransaction().

    transactionSession.commitTransaction();
    
  4. Użyj polecenia endSession() , aby zakończyć sesję transakcji.

    transactionSession.endSession();
    

Wycofywanie transakcji

Czasami może być wymagane cofnięcie transakcji przed jej zatwierdzeniu.

  1. Korzystając z istniejącej sesji transakcji, przerwij transakcję za pomocą polecenia abortTransaction().

    transactionSession.abortTransaction();
    
  2. Zakończ sesję transakcji.

    transactionSession.endSession();
    

Następny krok