Compartilhar via


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

APLICA-SE AO: MongoDB vCore

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

  • Atomicidade: as transações são totalmente concluídas 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 de ACID no gerenciamento de bancos de dados garantem que as transações sejam processadas de forma confiável. O Azure Cosmos DB for MongoDB no vCore implementa esses princípios, permitindo criar transações para várias operações.

Pré-requisitos

Criar uma transação

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

Observação

Os exemplos desta 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().

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

    transactionSession.endSession();
    

reverter uma transação

Ocasionalmente, talvez seja 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óxima etapa