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
- Um cluster vCore do Azure Cosmos DB for MongoDB existente.
- Caso não tenha uma assinatura do Azure, crie uma conta gratuitamente.
- Se você tiver uma assinatura existente do Azure, crie um cluster VCore do Azure Cosmos DB for MongoDB.
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
.
Use
startSession()
para criar uma sessão de cliente para a operação de transação.const transactionSession = client.startSession();
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); });
Confirme a transação usando
commitTransaction()
.transactionSession.commitTransaction();
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.
Usando uma sessão de transação existente, anule a transação com
abortTransaction()
.transactionSession.abortTransaction();
Encerre a sessão de transação.
transactionSession.endSession();