Implementação de transações no MongoDB

Capítulo 70

Tempo estimado de leitura: 3 minutos

+ Exercício
Audio Icon

Ouça em áudio

0:00 / 0:00

MongoDB, sendo um banco de dados NoSQL, não tinha suporte para transações multi-documentos até a versão 4.0. No entanto, a partir da versão 4.0, o MongoDB introduziu o suporte para transações multi-documento, permitindo que os desenvolvedores realizassem operações complexas em vários documentos de maneira atômica. Nesta seção, vamos explorar a implementação de transações no MongoDB.

Entendendo as Transações

Em um banco de dados, uma transação é uma sequência de operações que formam uma unidade lógica de trabalho. As transações permitem que os usuários realizem várias alterações em um banco de dados como uma única operação. Isso é importante para manter a consistência e a integridade dos dados em um banco de dados.

Iniciando uma Transação

Para iniciar uma transação no MongoDB, primeiro você precisa iniciar uma sessão. Uma sessão é um objeto que agrupa as operações e permite que elas sejam enviadas ao banco de dados em um único lote. Para iniciar uma sessão, você pode usar o método startSession() do objeto MongoClient.

let session = client.startSession();

Uma vez que a sessão é iniciada, você pode iniciar uma transação usando o método startTransaction() da sessão.

session.startTransaction();

Realizando Operações em uma Transação

Depois de iniciar uma transação, você pode realizar várias operações CRUD (Create, Read, Update, Delete) em vários documentos dentro da transação. Para fazer isso, você precisa passar a sessão como uma opção para cada operação.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

collection.insertOne({ a: 1 }, { session });
collection.updateOne({ a: 1 }, { $set: { b: 1 } }, { session });

Confirmando uma Transação

Depois de realizar todas as operações necessárias, você pode confirmar a transação usando o método commitTransaction() da sessão. Isso irá aplicar todas as alterações feitas na transação ao banco de dados.

session.commitTransaction();

Desfazendo uma Transação

Se algo der errado durante a transação e você decidir não aplicar as alterações, você pode desfazer a transação usando o método abortTransaction() da sessão. Isso irá descartar todas as alterações feitas na transação.

session.abortTransaction();

Conclusão

As transações no MongoDB oferecem uma maneira poderosa de realizar operações complexas em vários documentos de maneira atômica. No entanto, eles também adicionam uma sobrecarga significativa e devem ser usados com moderação. Em muitos casos, os recursos de atomicidade de nível de documento do MongoDB, como operações findAndModify e updates complexos, podem ser suficientes para suas necessidades.

É importante notar que as transações no MongoDB requerem uma replicação de dados, o que significa que elas não estão disponíveis em uma única instância do MongoDB. Além disso, as transações têm um tempo limite de 60 segundos para evitar que operações de longa duração bloqueiem o sistema.

Finalmente, embora as transações sejam uma adição bem-vinda ao MongoDB, elas não são uma bala de prata. Como sempre, o design cuidadoso do esquema e a compreensão das necessidades de sua aplicação são cruciais para o uso efetivo das transações.

Agora responda o exercício sobre o conteúdo:

Quando o MongoDB introduziu o suporte para transações multi-documento?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

O MongoDB introduziu o suporte para transações multi-documento na versão 4.0, permitindo operações atômicas em vários documentos.

Próximo capitúlo

Gerenciamento de usuários e papéis no MongoDB

Arrow Right Icon
Capa do Ebook gratuito Criação e manutenção de banco de dados MongoDB do básico ao avançado
80%

Criação e manutenção de banco de dados MongoDB do básico ao avançado

3

(2)

88 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.