En los sistemas de software —especialmente aquellos que manejan dinero, inventarios, contratos o cualquier información crítica— la integridad de los datos es un requisito innegociable. Para garantizar esta integridad, las bases de datos transaccionales utilizan un conjunto de propiedades conocido como ACID.
En este artículo, entenderemos de forma clara y práctica qué es el modelo ACID, por qué es tan importante y cómo cada una de sus propiedades actúa para mantener los datos confiables incluso en escenarios de fallas, concurrencia y alto volumen de operaciones.
¿Qué es ACID?
ACID es un acrónimo que define cómo debe comportarse una transacción de base de datos:
- Atomicidad (Atomicity)
- Consistencia (Consistency)
- Isolación (Isolation)
- Durabilidad (Durability)
Una transacción es un conjunto de operaciones que debe ejecutarse como una única unidad lógica de trabajo.
Atomicidad
La atomicidad garantiza el principio de “todo o nada”. Esto significa que:
- O bien todas las operaciones de la transacción se completan con éxito
- O ninguna de ellas se aplica a la base de datos
- Si alguna etapa falla, la base de datos ejecuta un rollback, deshaciendo todas las modificaciones realizadas hasta ese momento.
Ejemplo
Imagina una transferencia bancaria:
- Debitar R$100 de la cuenta A
- Acreditar R$100 en la cuenta B
Si el crédito en la cuenta B falla por cualquier motivo (error, pérdida de conexión, violación de reglas), el débito en la cuenta A no puede permanecer. Toda la transacción debe revertirse.
Consistencia
La consistencia garantiza que la base de datos siempre pase de un estado válido a otro estado válido.
Después de hacer commit de una transacción, deben respetarse todas las reglas de integridad, tales como:
- Reglas de negocio
- Constraints (NOT NULL, UNIQUE, CHECK)
- Claves primarias y foráneas
- Tipos de datos y validaciones
Si alguna regla se viola, la transacción no se completa.
Ejemplo
- Una tabla exige que el saldo nunca sea negativo
- Una transacción intenta guardar un saldo menor que cero
- Incluso si la lógica de la aplicación lo permite, la base de datos rechaza la operación, preservando la consistencia.
Aislamiento
El aislamiento define cómo se comporta una transacción en relación con otras transacciones concurrentes.
Aunque varias transacciones se estén ejecutando al mismo tiempo, cada una debe comportarse como si fuera la única en ejecución.
En la práctica, esto evita problemas como:
- Lecturas sucias (dirty reads)
- Lecturas no repetibles
- Lecturas fantasmas
Ejemplo
Dos transacciones simultáneas:
Transacción 1:
- Debitar R$100 de la cuenta A
- Acreditar R$100 en la cuenta B
Transacción 2:
- Debitar R$100 de la cuenta A
- Acreditar R$100 en la cuenta C
La base de datos, mediante aislamiento, garantiza que estas operaciones no causen inconsistencias, como permitir que ambas debiten un saldo que solo permitiría una de ellas.
Niveles de aislamiento
Los sistemas de bases de datos normalmente implementan diferentes niveles de aislamiento, como:
- Read Uncommitted
- Read Committed
- Repeatable Read
- Serializable
Cuanto mayor es el aislamiento, mayor es la seguridad —y generalmente mayor el costo en rendimiento. La elección depende del tipo de sistema y del riesgo implicado.
Durabilidad
La durabilidad garantiza que, después del commit, los datos se graban de forma permanente.
Incluso si ocurren eventos como:
- Corte de energía
- Falla del servidor
- Reinicio de la base de datos
Los cambios confirmados no se pierden.
Ejemplo
Si una transacción de pago fue confirmada (commit), el sistema puede caerse inmediatamente después; al volver, los datos siguen allí. Esto es posible gracias a mecanismos como el write-ahead log, archivos de registro (log) y replicación.
Conclusión
El modelo ACID es la base de la confiabilidad de las bases de datos transaccionales modernas. Es esencial para sistemas que no pueden tolerar inconsistencias, tales como:
- Sistemas financieros
- Bancos
- E-commerce
- Sistemas de facturación
- Plataformas de pago
Incluso en arquitecturas modernas con microservicios y sistemas distribuidos, entender ACID es fundamental para tomar decisiones conscientes. Antes de renunciar a ACID en nombre del rendimiento, es crucial entender qué se está sacrificando.
Gracias!

Top comments (0)