16. Implementando transacciones en MongoDB

MongoDB, al ser una base de datos NoSQL, no admitía transacciones de múltiples documentos hasta la versión 4.0. Sin embargo, a partir de la versión 4.0, MongoDB introdujo soporte para transacciones de múltiples documentos, lo que permitió a los desarrolladores realizar operaciones complejas en múltiples documentos de manera atómica. En esta sección, exploraremos la implementación de transacciones en MongoDB.

Comprensión de las transacciones

En una base de datos, una transacción es una secuencia de operaciones que forman una unidad lógica de trabajo. Las transacciones permiten a los usuarios realizar múltiples cambios en una base de datos como una sola operación. Esto es importante para mantener la coherencia e integridad de los datos en una base de datos.

Iniciar una transacción

Para iniciar una transacción en MongoDB, primero debe iniciar una sesión. Una sesión es un objeto que agrupa operaciones y permite enviarlas a la base de datos en un solo lote. Para iniciar una sesión, puede utilizar el método startSession() del objeto MongoClient.

let sesión = client.startSession();

Una vez iniciada la sesión, puede iniciar una transacción utilizando el método startTransaction() de la sesión.

sesión.startTransaction();

Realizar operaciones en una transacción

Después de iniciar una transacción, puede realizar varias operaciones CRUD (Crear, Leer, Actualizar, Eliminar) en varios documentos dentro de la transacción. Para hacer esto, debe pasar la sesión como una opción para cada operación.

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

Confirmar una transacción

Después de realizar todas las operaciones necesarias, puede confirmar la transacción utilizando el método commitTransaction() de la sesión. Esto aplicará todos los cambios realizados en la transacción a la base de datos.

sesión.commitTransaction();

Deshacer una transacción

Si algo sale mal durante la transacción y decide no aplicar los cambios, puede deshacer la transacción usando el método abortTransaction() de la sesión. Esto descartará todos los cambios realizados en la transacción.

sesión.abortTransaction();

Conclusión

Las transacciones en MongoDB proporcionan una manera poderosa de realizar operaciones complejas en múltiples documentos de manera atómica. Sin embargo, también añaden una sobrecarga significativa y deben utilizarse con moderación. En muchos casos, las funciones de atomicidad a nivel de documento de MongoDB, como las operaciones findAndModify y las actualizaciones complejas, pueden ser suficientes para sus necesidades.

Es importante tener en cuenta que las transacciones en MongoDB requieren replicación de datos, lo que significa que no están disponibles en una única instancia de MongoDB. Además, las transacciones tienen un tiempo de espera de 60 segundos para evitar que operaciones de larga duración bloqueen el sistema.

Finalmente, si bien las transacciones son una adición bienvenida a MongoDB, no son una solución milagrosa. Como siempre, un diseño cuidadoso del esquema y la comprensión de las necesidades de su aplicación son cruciales para el uso eficaz de las transacciones.

Ahora responde el ejercicio sobre el contenido:

¿Cuándo introdujo MongoDB soporte para transacciones de múltiples documentos?

¡Tienes razón! Felicitaciones, ahora pasa a la página siguiente.

¡Tú error! Inténtalo de nuevo.

Imagen del artículo Gestión de usuarios y roles en MongoDB

Siguiente página del libro electrónico gratuito:

71Gestión de usuarios y roles en MongoDB

3 minutos

¡Obtén tu certificado para este curso gratis! descargando la aplicación Cursa y leyendo el libro electrónico allí. ¡Disponible en Google Play o App Store!

Disponible en Google Play Disponible en App Store

+ 6,5 millones
estudiantes

Certificado gratuito y
válido con código QR

48 mil ejercicios
gratis

Calificación de 4.8/5
en tiendas de aplicaciones

Cursos gratuitos de
vídeo, audio y texto.