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.
- Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Jeśli masz istniejącą subskrypcję platformy Azure, utwórz nowy 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
.
Użyj
startSession()
polecenia , aby utworzyć sesję klienta dla operacji transakcji.const transactionSession = client.startSession();
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); });
Zatwierdź transakcję przy użyciu polecenia
commitTransaction()
.transactionSession.commitTransaction();
Użyj polecenia
endSession()
, aby zakończyć sesję transakcji.transactionSession.endSession();
Wycofywanie transakcji
Czasami może być wymagane cofnięcie transakcji przed jej zatwierdzeniu.
Korzystając z istniejącej sesji transakcji, przerwij transakcję za pomocą polecenia
abortTransaction()
.transactionSession.abortTransaction();
Zakończ sesję transakcji.
transactionSession.endSession();