Skip to main content

Transacciones

Las transacciones en una base de datos relacional son un conjunto de operaciones que se ejecutan de manera unitaria e indivisible, garantizando que o bien todas las operaciones se completen con éxito y se confirmen de manera permanente (commit), o bien si ocurre algún error en alguna parte de la transacción, se revierten todas las operaciones ejecutadas hasta el momento (rollback). Aquí tienes una explicación detallada de cómo funcionan las transacciones en una base de datos relacional:

  1. Atomicidad: La atomicidad garantiza que una transacción se ejecute de manera completa e indivisible. Todas las operaciones dentro de una transacción se consideran como una única unidad de trabajo. Si alguna parte de la transacción falla, todas las operaciones realizadas hasta ese momento se deshacen y la base de datos vuelve a su estado original.

  2. Consistencia: La consistencia asegura que la base de datos pase de un estado válido a otro estado válido después de una transacción. Esto significa que todas las restricciones y reglas de integridad de la base de datos se mantienen en todo momento durante una transacción. Si una transacción viola alguna regla de integridad, se revierte y no se confirma.

  3. Aislamiento: El aislamiento controla el grado en que una transacción puede ver los cambios realizados por otras transacciones mientras está en curso. Proporciona la ilusión de que cada transacción se ejecuta de manera independiente de otras transacciones. Esto se logra a través de técnicas como bloqueo de registros, control de concurrencia y niveles de aislamiento.

  4. Durabilidad: La durabilidad garantiza que los cambios realizados por una transacción confirmada permanezcan permanentes, incluso en caso de fallo del sistema, apagón o reinicio del servidor de base de datos. Una vez que una transacción se ha confirmado (commit), los cambios son escritos en el almacenamiento permanente y no se pueden deshacer.

Las transacciones se utilizan para garantizar la integridad y la consistencia de los datos en la base de datos, especialmente en entornos donde múltiples usuarios realizan operaciones concurrentes. Permiten mantener la integridad de los datos incluso en situaciones de fallo del sistema o de error humano.

Ejemplo:

Supongamos que estamos realizando una transferencia bancaria entre dos cuentas en una base de datos relacional. Una transacción típica para esta operación podría incluir las siguientes etapas:

  1. Restar el monto a transferir de la cuenta origen.
  2. Sumar el monto a transferir a la cuenta destino.
  3. Confirmar (commit) las operaciones si ambas fueron exitosas.

Si en algún momento ocurre un error (por ejemplo, la cuenta destino no existe), se revierten todas las operaciones realizadas hasta ese momento (rollback), garantizando que ninguna cuenta quede en un estado inconsistente.

Operaciones en las transacciones

Las principales operaciones de una transacción en una base de datos relacional se pueden resumir en cuatro acciones fundamentales, a menudo abreviadas como "ACID", que representan las propiedades que deben cumplir las transacciones para garantizar su integridad y consistencia. Aquí están las principales operaciones de una transacción:

  1. Inicio (BEGIN): Esta operación marca el inicio de una transacción. A partir de este punto, todas las operaciones que se realicen formarán parte de la transacción actual. Una vez que se inicia una transacción, las operaciones realizadas pueden ser revertidas (rollback) si ocurre algún error, o confirmadas (commit) si todas las operaciones se completan con éxito.

  2. Confirmación (COMMIT): Esta operación confirma todas las operaciones realizadas dentro de una transacción y las hace permanentes en la base de datos. Una vez que se realiza el commit, los cambios realizados por la transacción se vuelven inamovibles y no pueden ser revertidos. Esto garantiza la durabilidad de los datos.

  3. Reversión (ROLLBACK): Esta operación deshace todas las operaciones realizadas dentro de una transacción que aún no se han confirmado (commit). Se utiliza en caso de que ocurra un error durante la ejecución de la transacción, lo que garantiza que la base de datos vuelva al estado anterior a la ejecución de la transacción y se mantenga la consistencia de los datos.

  4. Guardar punto de guardado (SAVEPOINT): Esta operación permite dividir una transacción en puntos de guardado (savepoints), lo que facilita la reversión parcial de una transacción en caso de error. Con los puntos de guardado, es posible realizar un rollback hasta un punto específico dentro de la transacción sin tener que revertir todas las operaciones realizadas.

Estas son las principales operaciones que conforman una transacción en una base de datos relacional. Garantizan que las transacciones se ejecuten de manera consistente, con integridad y durabilidad, lo que es fundamental para mantener la integridad y la confiabilidad de los datos en el sistema de base de datos.