Compartir a través de


Agrupación de varias operaciones en transacciones en Azure Cosmos DB para núcleo virtual de MongoDB

SE APLICA A: núcleo virtual de MongoDB

Es habitual querer agrupar varias operaciones en una sola transacción para confirmarlas o revertirlas juntas. En los principios de la base de datos, las transacciones suelen implementar cuatro principios clave ACID. ACID es un acrónimo que, en inglés, está formado por:

  • Atomicidad: las transacciones se completan completamente o no.
  • Coherencia: las bases de datos pasan de un estado coherente a otro.
  • Aislamiento: las transacciones individuales están blindadas de las simultáneas.
  • Durabilidad: las transacciones terminadas son permanentes, lo que garantiza que los datos sean coherentes, incluso durante los errores del sistema.

Estos principios de ACID en la administración de bases de datos garantizan que las transacciones se procesan de forma confiable. El núcleo virtual de Azure Cosmos DB for MongoDB implementa estos principios, lo que le permite crear transacciones para varias operaciones.

Requisitos previos

Creación de una transacción

Cree una transacción con los métodos adecuados del lenguaje de desarrollador que prefiera. Estos métodos suelen incluir algún mecanismo de ajuste para agrupar varias transacciones y un método para confirmar la transacción.

Nota:

En los ejemplos de esta sección se asume que tiene una variable de colección denominada collection.

  1. Use startSession() para crear una sesión de cliente para la operación de transacción.

    const transactionSession = client.startSession();
    
  2. Cree una transacción mediante withTransaction() y coloque todas las operaciones de transacción pertinentes dentro de la devolución de llamada.

    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 la transacción mediante commitTransaction().

    transactionSession.commitTransaction();
    
  4. Use endSession() para finalizar la sesión de transacción.

    transactionSession.endSession();
    

Reversión de una transacción

En ocasiones, es posible que tenga que deshacer una transacción antes de confirmarla.

  1. Con una sesión de transacción existente, anule la transacción con abortTransaction().

    transactionSession.abortTransaction();
    
  2. Finalice la sesión de transacción.

    transactionSession.endSession();
    

Paso siguiente