Agrupar várias operações em transações no Azure Cosmos DB para MongoDB vCore

APLICA-SE A: MongoDB vCore

É comum querer agrupar várias operações em uma única transação para confirmar ou reverter juntas. Nos princípios de banco de dados, as transações normalmente implementam quatro princípios ACID fundamentais. ACID significa:

  • Atomicidade: As transações são concluídas totalmente ou não são concluídas.
  • Consistência: os bancos de dados transitam de um estado consistente para outro.
  • Isolamento: As transações individuais são protegidas das simultâneas.
  • Durabilidade: As transações concluídas são permanentes, garantindo que os dados permaneçam consistentes, mesmo durante falhas do sistema.

Os princípios ACID no gerenciamento de banco de dados garantem que as transações sejam processadas de forma confiável. O Azure Cosmos DB para MongoDB vCore implementa esses princípios, permitindo que você crie transações para várias operações.

Pré-requisitos

Criar uma transação

Crie uma nova transação usando os métodos apropriados a partir da linguagem de desenvolvedor de sua escolha. Esses métodos geralmente incluem algum mecanismo de encapsulamento para agrupar várias transações e um método para confirmar a transação.

Nota

Os exemplos nesta seção pressupõem que você tenha uma variável de coleção chamada collection.

  1. Use startSession() para criar uma sessão de cliente para a operação de transação.

    const transactionSession = client.startSession();
    
  2. Crie uma transação usando withTransaction() e coloque todas as operações de transação relevantes no retorno de chamada.

    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. Confirme a transação usando commitTransaction()o .

    transactionSession.commitTransaction();
    
  4. Use endSession() para encerrar a sessão de transação.

    transactionSession.endSession();
    

Reverter uma transação

Ocasionalmente, pode ser necessário desfazer uma transação antes que ela seja confirmada.

  1. Usando uma sessão de transação existente, anule a transação com abortTransaction().

    transactionSession.abortTransaction();
    
  2. Encerre a sessão de transação.

    transactionSession.endSession();
    

Próximo passo