Las propiedades ACID son un conjunto de principios que garantizan que las transacciones en una base de datos se procesen de manera confiable. ACID es un acrónimo que representa Atomicidad, Consistencia, Aislamiento y Durabilidad. Estas propiedades son fundamentales para asegurar la integridad de los datos en sistemas de bases de datos transaccionales.

  1. Atomicidad

Definición

La atomicidad asegura que una transacción se ejecute completamente o no se ejecute en absoluto. Si alguna parte de la transacción falla, todo el proceso se revierte, dejando la base de datos en su estado original.

Ejemplo

BEGIN TRANSACTION;

-- Intentamos insertar un nuevo registro en la tabla de clientes
INSERT INTO clientes (nombre, email) VALUES ('Juan Pérez', '[email protected]');

-- Intentamos actualizar el saldo de la cuenta de un cliente
UPDATE cuentas SET saldo = saldo - 100 WHERE cliente_id = 1;

-- Si ambas operaciones son exitosas, confirmamos la transacción
COMMIT;

-- Si alguna operación falla, revertimos la transacción
ROLLBACK;

Explicación

En este ejemplo, si la inserción en la tabla clientes o la actualización en la tabla cuentas falla, la transacción se revertirá completamente, asegurando que la base de datos no quede en un estado inconsistente.

  1. Consistencia

Definición

La consistencia garantiza que una transacción lleve a la base de datos de un estado válido a otro estado válido, manteniendo las reglas y restricciones definidas en la base de datos.

Ejemplo

-- Supongamos que tenemos una restricción de clave única en el email de la tabla clientes
ALTER TABLE clientes ADD CONSTRAINT unique_email UNIQUE (email);

BEGIN TRANSACTION;

-- Intentamos insertar un nuevo registro con un email duplicado
INSERT INTO clientes (nombre, email) VALUES ('Ana Gómez', '[email protected]');

-- Confirmamos la transacción
COMMIT;

Explicación

En este ejemplo, la inserción fallará debido a la restricción de clave única en el campo email. La base de datos mantendrá su consistencia al no permitir la inserción de un registro que viole esta restricción.

  1. Aislamiento

Definición

El aislamiento asegura que las transacciones concurrentes se ejecuten de manera independiente, sin interferir entre sí. El nivel de aislamiento puede variar, desde no aislamiento (lectura sucia) hasta serialización completa.

Ejemplo

-- Transacción 1
BEGIN TRANSACTION;
UPDATE cuentas SET saldo = saldo - 100 WHERE cliente_id = 1;

-- Transacción 2
BEGIN TRANSACTION;
SELECT saldo FROM cuentas WHERE cliente_id = 1;

-- Confirmamos ambas transacciones
COMMIT;

Explicación

Dependiendo del nivel de aislamiento configurado, la transacción 2 puede ver el saldo actualizado por la transacción 1 o el saldo original. Los niveles de aislamiento más comunes son:

  • Read Uncommitted: Permite lecturas sucias.
  • Read Committed: Evita lecturas sucias.
  • Repeatable Read: Evita lecturas no repetibles.
  • Serializable: Asegura la serialización completa de las transacciones.

  1. Durabilidad

Definición

La durabilidad garantiza que una vez que una transacción ha sido confirmada (commit), sus cambios se mantendrán permanentemente en la base de datos, incluso en caso de fallos del sistema.

Ejemplo

BEGIN TRANSACTION;

-- Insertamos un nuevo registro en la tabla de transacciones
INSERT INTO transacciones (cliente_id, monto, fecha) VALUES (1, 100, NOW());

-- Confirmamos la transacción
COMMIT;

Explicación

En este ejemplo, una vez que la transacción se confirma, el nuevo registro en la tabla transacciones se mantendrá en la base de datos, incluso si el sistema falla inmediatamente después del commit.

Resumen

Las propiedades ACID son esenciales para garantizar la integridad y confiabilidad de las transacciones en una base de datos. Aseguran que las transacciones se ejecuten de manera completa y consistente, sin interferencias y con persistencia de los datos. Estas propiedades son fundamentales para cualquier sistema de bases de datos que maneje transacciones críticas.

Preparación para el siguiente tema

En el próximo tema, exploraremos las Instrucciones de control de transacciones, donde aprenderemos cómo manejar explícitamente las transacciones en SQL utilizando comandos como BEGIN, COMMIT y ROLLBACK.

Curso de SQL

Módulo 1: Introducción a SQL

Módulo 2: Consultas básicas de SQL

Módulo 3: Trabajando con múltiples tablas

Módulo 4: Filtrado avanzado de datos

Módulo 5: Manipulación de datos

Módulo 6: Funciones avanzadas de SQL

Módulo 7: Subconsultas y consultas anidadas

Módulo 8: Índices y optimización de rendimiento

Módulo 9: Transacciones y concurrencia

Módulo 10: Temas avanzados

Módulo 11: SQL en la práctica

Módulo 12: Proyecto final

© Copyright 2024. Todos los derechos reservados