Seskupení více operací v transakcích ve službě Azure Cosmos DB pro virtuální jádro MongoDB
PLATÍ PRO: Virtuální jádro MongoDB
Je běžné, že chcete seskupit více operací do jedné transakce, aby bylo možné potvrdit nebo vrátit zpět dohromady. V databázových principech transakce obvykle implementují čtyři klíčové principy ACID . ACID znamená:
- Atomicita: Transakce jsou zcela dokončeny nebo vůbec.
- Konzistence: Databáze přecházejí z jednoho konzistentního stavu na jiný.
- Izolace: Jednotlivé transakce jsou stíněny před souběžnými transakcemi.
- Stálost: Dokončené transakce jsou trvalé a zajišťují, aby data zůstala konzistentní, i když došlo k selhání systému.
Principy ACID při správě databází zajišťují spolehlivé zpracování transakcí. Azure Cosmos DB pro mongoDB vCore implementuje tyto principy a umožňuje vytvářet transakce pro více operací.
Požadavky
- Existující cluster azure Cosmos DB pro virtuální jádra MongoDB
- Pokud nemáte předplatné Azure, vytvořte si účet zdarma.
- Pokud máte existující předplatné Azure, vytvořte nový cluster azure Cosmos DB pro virtuální jádra MongoDB.
Vytvoření transakce
Vytvořte novou transakci pomocí vhodných metod z jazyka pro vývojáře podle vašeho výběru. Tyto metody obvykle zahrnují určitý balicí mechanismus seskupit více transakcí dohromady a metodu potvrzení transakce.
Poznámka:
Ukázky v této části předpokládají, že máte proměnnou kolekce s názvem collection
.
Slouží
startSession()
k vytvoření relace klienta pro operaci transakce.const transactionSession = client.startSession();
Vytvořte transakci pomocí
withTransaction()
a umístěte všechny relevantní transakce do zpětného volání.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); });
Potvrzení transakce pomocí
commitTransaction()
.transactionSession.commitTransaction();
Slouží
endSession()
k ukončení relace transakce.transactionSession.endSession();
Vrácení transakce zpět
Někdy může být nutné vrátit transakci zpět před potvrzením.
Pomocí existující relace transakce přerušte transakci s
abortTransaction()
.transactionSession.abortTransaction();
Ukončete relaci transakce.
transactionSession.endSession();