Atomicity, Consistency, Isolation and Durability.
En los sistemas de bases de datos relacionales (RDBMS) como MySQL, PostgreSQL y Oracle donde éstas, se utilizan en aplicaciones donde la integridad y la consistencia de los datos son críticas, tales como sistemas bancarios, aplicaciones empresariales, etc. Cumplir con los principios ACID es obligatorio, pues garantiza que las transacciones se manejen de manera fiable y segura.
Pero… ¿qué es ACID?
ACID es el acrónimo en inglés de Atomicity, Consistency, Isolation and Durability.
En español: Atomicidad, Consistencia, Aislamiento y Durabilidad.
Cada uno de estos principios asegura un correcto funcionamiento de la base de datos garantizando la integridad de los datos.
Atomicidad (Atomicity):
Garantiza que las transacciones se completen en su totalidad o no se realice nada, es decir, una transacción debe completarse completamente y en caso de fallo revertirse y hacer como si nunca hubiera pasado nada, como si la transacción nunca se hubiera realizado y garantizar que la base de datos regrese a su estado original.
Ejemplo: En una aplicación bancaria, al realizar una transferencia donde se transfiere dinero de la cuenta “A” a la cuenta “B”, puede ocurrir que falle y el dinero se reste de la cuenta “A” pero no se acrediten en la cuenta “B”. En ese caso la transacción se debe deshacer asegurando que ninguna cuenta pierda dinero. A esto nos referimos con “atomicidad”.
Consistencia (Consistency):
Se refiere a que después de completar una transacción exitosa, deben cumplirse todas las reglas definidas para la base de datos como integridad referencial, restricciones, etc. Manteniendo así la coherencia de los datos y asegurando que se ejecuten solo aquellas operaciones que no van a romper las reglas de la base de datos.
Ejemplo: En una aplicación bancaria cuya base de datos sigue reglas de integridad referencial, no se podría realizar una transferencia que haga referencia a una cuenta inexistente. Las transacciones deben asegurar que estas reglas se mantengan.
Aislamiento (Isolation):
Se trata de aislar las transacciones u operaciones concurrentes para que no interfieran entre sí.
Básicamente significa que cada transacción debe funcionar como si fuera la única operación en curso garantizando que las transacciones concurrentes no afecten la integridad de los datos y que éstos sean coherentes y consistentes.
Ejemplo: Siguiendo con la aplicación bancaria en caso de que el usuario 1 quisiera hacer una transferencia al usuario 2 y éste, a su vez, quisiera transferir también algo de dinero al usuario 1, sino hubiera aislamiento, las transacciones podrían interferir entre si y producir resultados inconsistentes como por ejemplo que en una cuenta haya más o menos dinero del que tendría que haber, etc.
Durabilidad (Durability):
Asegura que una vez que una transacción se ha completado, los cambios realizados por ésta se mantengan permanentes en la base de datos incluso en caso de fallos del sistema.
Ejemplo: En una transacción bancaria cuando se ha completado y confirmado, los cambios en los saldos de las cuentas se deben conservar tal y no perderse en caso de que el sistema falle, aunque sea inmediatamente después de realizar la transferencia.
Como hemos visto, los principios ACID son un estándar en el diseño de bases de datos y son fundamentales para mantener la integridad de los datos. Proveen una base sólida para el manejo de transacciones, asegurando que los datos se manejen de manera segura y consistente.
Por último y antes de finalizar, debo comentar a modo de “nota” o de información extra que no todas las bases de datos deben de cumplir con estos principios, como son por ejemplo el caso de las bases de datos NoSQL dónde aquí ACID no es importante y en su lugar se tiene en cuenta modelos como eventual consistency y modelo BASE (Pág 15).
Sobre el autor
Este artículo está publicado bajo una licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional . Puedes compartirlo y adaptarlo, incluso con fines comerciales, siempre que cites al autor y mantengas esta misma licencia.