Sdílet prostřednictvím


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

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.

  1. Slouží startSession() k vytvoření relace klienta pro operaci transakce.

    const transactionSession = client.startSession();
    
  2. 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);
    });
    
  3. Potvrzení transakce pomocí commitTransaction().

    transactionSession.commitTransaction();
    
  4. 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.

  1. Pomocí existující relace transakce přerušte transakci s abortTransaction().

    transactionSession.abortTransaction();
    
  2. Ukončete relaci transakce.

    transactionSession.endSession();
    

Další krok