ACID es un acrónimo de las cuatro propiedades principales de una base de datos: atomicidad, coherencia, aislamiento y durabilidad. A menudo se asocia con bases de datos relacionales, pero una base de datos NoSQL (no relacional) también puede seguir las reglas ACID. Las transacciones de ACID son comunes en muchos de los motores de bases de datos populares disponibles en el mercado y garantizan que las acciones de lectura y escritura no interfieran con la integridad de sus datos.
¿Qué es la base de datos ACID?
Una base de datos que siga las mejores prácticas de ACID tiene las siguientes características:
- Atomicidad: Evite la pérdida de datos, los registros huérfanos y las transacciones parciales con atomicidad. Una base de datos con atomicidad proporciona transacciones «todo o nada» para que no pierda datos si una parte de una transacción falla a mitad de camino.
- Coherencia: Las limitaciones de tabla en las bases de datos ACID exigen que todas las transacciones almacenen los datos en un formato coherente.
- Aislamiento: Una base de datos ACID garantiza que las transacciones no devuelven lecturas o escrituras sucias al aislar los datos y realizar transacciones una a una.
- Durabilidad: Un fallo del sistema (por ejemplo, un corte de energía) puede interferir con las transacciones, por lo que una base de datos ACID garantiza que la conmutación por error impide la pérdida de datos debido a un evento crítico.
Atomicidad
Las transacciones de bases de datos modernas tienen más de un paso para finalizar un registro. Por ejemplo, un cliente puede crear un pedido, por lo que un procedimiento almacenado utiliza una declaración INSERT para añadir un registro a las tablas orders and products_ordered. Si la adición de un registro a la tabla de pedidos falla, no quiere añadir un registro a la tabla products_ordered. Esto crearía un registro huérfano.
Con la atomicidad, la base de datos revierte todas las transacciones cuando una falla, para que los datos se mantengan homogéneos y eviten la corrupción. Solo cuando todos los pasos de una transacción se completan con éxito se almacenan los datos. La atomicidad evita la corrupción de los datos, la pérdida de datos y los registros huérfanos.
Coherencia
Las bases de datos relacionales tienen limitaciones que permiten que solo se almacenen tipos específicos de datos. Las bases de datos NoSQL almacenan los datos con su propio formato de conjunto. Por ejemplo, si especifica que solo se puede almacenar un número decimal en una columna de orden total, el intento de almacenar una cadena provocará un fallo. Mantener la coherencia de los datos proporciona a los desarrolladores un valor conocido cuando trabajan con un conjunto de datos.
La coherencia en una base de datos significa que los datos pueden predecirse, lo que significa que si extrae datos para un registro concreto, obtendrá un resultado esperado. Usando el ejemplo de tabla de pedido, sabe que recibirá un valor decimal para cualquier consulta que recupere un valor de la columna de total de pedido.
Aislamiento
Las lecturas sucias y las escrituras sucias se producen cuando un usuario ejecuta una consulta en el momento específico en que la base de datos también realiza cambios en un valor. Por ejemplo, si quiere saber el total de todos los pedidos del mes, puede obtener un resultado incorrecto si lee los datos en el momento en que se actualiza el total de un pedido. Lo mismo puede ocurrir con las acciones de escritura si los datos se leen antes de que pueda ejecutarse una declaración de actualización anterior.
Las lecturas y escrituras sucias pueden dañar sus datos y destruir la integridad de los datos. Las transacciones aisladas ejecutan declaraciones una por una, por lo que los datos permanecen constantes y sin corromper, incluso con millones de transacciones diarias. Las transacciones aisladas pueden bloquear registros, realizar cambios y luego liberar registros para la siguiente transacción.
Durabilidad
Tanto las bases de datos estructuradas como las no estructuradas deben almacenar los datos de manera constante y permanente después de que se complete una transacción, incluso si hay un fallo del sistema. Los registros de transacciones y los fallos de infraestructura también deben implementarse, pero la propia base de datos debe ser capaz de almacenar los datos de manera constante y sin causar ningún daño en los datos. Los motores de bases de datos tienen sus propias estrategias y técnicas de conmutación por error, pero los administradores deben poder confiar en ellos para recuperar los datos.
Por ejemplo, un fallo de alimentación puede interrumpir una transacción a mitad de camino. Tanto si el administrador tiene que revertir las transacciones como recuperar los datos, la base de datos debe ser capaz de gestionar el fallo. Para la mayoría de los administradores, la conmutación por error también se gestiona con copias de seguridad y redundancia. El ÁCIDO puede ayudar con la estrategia de recuperación de desastres más grande de una organización.
Conclusión
Las bases de datos de misión crítica necesitan propiedades ACID para soportar las aplicaciones empresariales. Las propiedades ACID son esenciales para la integridad de los datos y para garantizar que sus datos puedan ser recuperados y utilizados por tantas aplicaciones como desee. Los administradores siguen teniendo que realizar copias de seguridad y asegurarse de que el servidor de bases de datos funciona sin problemas, pero tener propiedades ACID es fundamental para la continuidad operativa.