ACID es un acrónimo de las cuatro propiedades principales de una base de datos: atomicidad, consistencia, 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 de ACID. Las transacciones 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 el ÁCIDO de la base de datos?
Una base de datos que sigue 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 “todas o nada” las transacciones para que no pierda datos si una parte de una transacción falla a mitad de camino.
- Coherencia: Las restricciones de tabla en las bases de datos de ACID requieren que todas las transacciones almacenen datos en un formato consistente.
- Aislamiento: Una base de datos ACID garantiza que las transacciones no devuelvan lecturas o escrituras sucias al aislar datos y realizar transacciones una por una.
- Durabilidad: La falla del sistema (p. ej., 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 evite la pérdida de datos de 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 INSERTAR para agregar un registro a los pedidos y a las tablas products_ordered. Si no se puede agregar un registro a la tabla de pedidos, entonces no desea agregar un registro a la tabla products_ordered. Esto crearía un registro huérfano.
Con atomicidad, la base de datos revierte todas las transacciones cuando una falla, de modo que los datos se mantengan consistentes y eviten la corrupción. Los datos se almacenan solo cuando se completan correctamente todos los pasos de una transacción. Atomicity evita la corrupción de datos, la pérdida de datos y los registros huérfanos.
Consistencia
Las bases de datos relacionales tienen restricciones que permiten almacenar solo tipos específicos de datos. Las bases de datos NoSQL almacenan datos con su propio formato establecido. Por ejemplo, si especifica que solo se puede almacenar un número decimal en una columna de total de orden, entonces intentar almacenar una cadena provocará una falla. Mantener la uniformidad 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 en particular, obtendrá un resultado esperado. Al usar el ejemplo de tabla de órdenes, sabe que recibirá un valor decimal para cualquier consulta que recupere un valor de la columna de total de órdenes.
Aislamiento
Las lecturas sucias y las escrituras sucias ocurren 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 desea conocer el total de todos los pedidos del mes, es posible que obtenga un resultado incorrecto si lee los datos en el momento en que se actualiza el total de un pedido. Lo mismo puede suceder con las acciones de escritura si los datos se leen antes de que se pueda ejecutar una declaración de actualización anterior.
Las lecturas y escrituras sucias pueden corromper sus datos y destruir la integridad de los datos. Las transacciones aisladas ejecutan estados de cuenta uno por uno, por lo que los datos permanecen consistentes 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 consistente y permanente después de que se complete una transacción, incluso si hay una falla en el sistema. También se deben implementar los registros de transacciones y las fallas en la infraestructura, pero la base de datos en sí debe poder almacenar datos de manera consistente y sin causar corrupción de 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 datos.
Por ejemplo, un corte de energía podría interrumpir una transacción a mitad de camino. Ya sea que el administrador necesite revertir transacciones o recuperar datos, la base de datos debe poder manejar la falla. Para la mayoría de los administradores, la conmutación por error también se maneja con copias de seguridad y redundancia. ACID puede ayudar con la estrategia de recuperación ante desastres más grande de una organización.
Conclusiones
Las bases de datos de misión crítica necesitan propiedades ACID para admitir aplicaciones empresariales. Las propiedades de ACID son esenciales para la integridad de los datos y para garantizar que sus datos puedan ser recuperados y utilizados por todas las aplicaciones que desee. Los administradores aún necesitan realizar copias de seguridad y asegurarse de que el servidor de base de datos funcione sin problemas, pero tener propiedades ACID es fundamental para la continuidad del negocio.