Gruppera flera åtgärder i transaktioner i Azure Cosmos DB för MongoDB vCore
GÄLLER FÖR: MongoDB vCore
Det är vanligt att du vill gruppera flera åtgärder i en enda transaktion för att antingen checka in eller återställa tillsammans. I databasprinciper implementerar transaktioner vanligtvis fyra viktiga ACID-principer . ACID står för:
- Atomicitet: Transaktioner slutförs helt eller inte alls.
- Konsekvens: Databaser övergår från ett konsekvent tillstånd till ett annat.
- Isolering: Enskilda transaktioner är avskärmade från samtidiga transaktioner.
- Hållbarhet: Slutförda transaktioner är permanenta, vilket säkerställer att data förblir konsekventa, även vid systemfel.
ACID-principerna i databashantering säkerställer att transaktioner bearbetas på ett tillförlitligt sätt. Azure Cosmos DB for MongoDB vCore implementerar dessa principer så att du kan skapa transaktioner för flera åtgärder.
Förutsättningar
- Ett befintligt Azure Cosmos DB för MongoDB vCore-kluster.
- Om du inte har en Azure-prenumeration skapar du ett konto kostnadsfritt.
- Om du har en befintlig Azure-prenumeration skapar du ett nytt Azure Cosmos DB för MongoDB vCore-kluster.
Skapa en transaktion
Skapa en ny transaktion med lämpliga metoder från valfritt utvecklarspråk. Dessa metoder omfattar vanligtvis en viss omslutningsmekanism för att gruppera flera transaktioner tillsammans och en metod för att genomföra transaktionen.
Kommentar
Exemplen i det här avsnittet förutsätter att du har en samlingsvariabel med namnet collection
.
Använd
startSession()
för att skapa en klientsession för transaktionsåtgärden.const transactionSession = client.startSession();
Skapa en transaktion med och
withTransaction()
placera alla relevanta transaktionsåtgärder i återanropet.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); });
Genomför transaktionen med hjälp av
commitTransaction()
.transactionSession.commitTransaction();
Använd
endSession()
för att avsluta transaktionssessionen.transactionSession.endSession();
Återställa en transaktion
Ibland kan du behöva ångra en transaktion innan den checkas in.
Med hjälp av en befintlig transaktionssession avbryter du transaktionen med
abortTransaction()
.transactionSession.abortTransaction();
Avsluta transaktionssessionen.
transactionSession.endSession();