Integridad y Consistencia de Datos: El Poder de las Transacciones en Bases de Datos

Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones

Escrito el en español con un tamaño de 4,46 KB

Concepto Fundamental de las Transacciones en Bases de Datos

Una transacción es una unidad de trabajo compuesta por diversas tareas, cuyo resultado final debe ser que se ejecuten todas o ninguna de ellas.

Por regla general, en un sistema de base de datos, todas las operaciones relacionadas entre sí que se ejecuten dentro de un mismo flujo lógico de trabajo deben ejecutarse en bloque.

De esta manera, si todas funcionan, la operación conjunta de bloque tiene éxito; pero si falla cualquiera de ellas, deberán retrocederse todas las anteriores que ya se hayan realizado. De esta forma, evitamos que el sistema de datos quede en un estado inconsistente.

Ejemplo Práctico de una Transacción

Consideremos el siguiente escenario para entender mejor una transacción:

Pasos de una Transferencia Bancaria:

  • Comprobar que nuestra cuenta existe, sea válida y esté operativa.
  • Comprobar el saldo disponible en nuestra cuenta.
  • Comprobar los datos de la cuenta receptora (que exista, que tenga posibilidad de recibir dinero, etc.).
  • Retirar el dinero de nuestra cuenta.
  • Ingresar el dinero en la cuenta del vendedor.

Dentro de este proceso, hay cinco operaciones, las cuales deben tener éxito o fallar conjuntamente.

En el caso de las operaciones 4 y 5, que modifican datos, es obvio que no puede funcionar una y fallar la otra.

¿Cómo se Logra la Integridad de Datos?

Precisamente para evitar este tipo de situaciones existen las transacciones: marcan bloques completos de operaciones y comprueban que, o se realizan todas, o que si hay algún problema, se deshacen todas.

Propiedades ACID de las Transacciones

Las transacciones deben cumplir con las siguientes condiciones para garantizar la fiabilidad y consistencia de los datos:

Atomicidad:
Las operaciones que componen una transacción deben considerarse como una sola unidad. O se ejecutan todas, o no se ejecuta ninguna.
Consistencia:
Una operación nunca deberá dejar datos inconsistentes. La transacción debe llevar la base de datos de un estado válido a otro estado válido.
Aislamiento:
Los datos "sucios" deben estar aislados, evitando que los usuarios utilicen información que aún no está confirmada o validada. (Por ejemplo: ¿sigue siendo válido el saldo mientras realizo la operación?)
Durabilidad:
Una vez completada la transacción, los datos actualizados ya serán permanentes y confirmados, sobreviviendo a fallos del sistema.

Tipos de Definición de Transacciones

Las transacciones pueden definirse de diferentes maneras, dependiendo de cómo el gestor de bases de datos las maneje o cómo el programador las controle:

  • De confirmación automática: El gestor de datos inicia una transacción automáticamente por cada operación que actualice datos. De este modo, mantiene siempre la consistencia de la base de datos, aunque puede generar bloqueos.
  • Implícitas: Cuando el gestor de datos comienza una transacción automáticamente cada vez que se produce una actualización de datos, pero el programador debe indicar si dicha transacción se confirma o se deshace.
  • Explícitas: Son las que iniciamos nosotros "a mano" mediante instrucciones SQL. Somos nosotros, los programadores, quienes indicamos qué operaciones va a abarcar.

El Problema de la Concurrencia en Transacciones

¿Qué pasaría si, al mismo tiempo que se está realizando nuestra transferencia, entra en nuestra cuenta un cargo diferido que teníamos pendiente? Sería posible que, de repente, nos quedásemos sin saldo para realizar la operación actual o, peor aún, que se anotasen mal ambos cargos en cuenta de modo que se "pisasen", dejando un saldo inconsistente.

¿Cómo se Soluciona este Problema?

Gestión de la Concurrencia y los Bloqueos

Para evitar los problemas de concurrencia y asegurar la integridad de los datos, los sistemas de bases de datos implementan mecanismos de gestión de la concurrencia y bloqueos. Estos mecanismos garantizan que múltiples transacciones puedan ejecutarse simultáneamente sin interferir entre sí, manteniendo las propiedades ACID.

Entradas relacionadas: