El modelo ACID de diseño de bases de datos es uno de los conceptos más antiguos e importantes de la teoría de bases de datos. Establece cuatro objetivos que cada sistema de administración de bases de datos debe esforzarse por alcanzar: atomicidad, consistencia, aislamiento y durabilidad. Una base de datos relacional que no cumpla con ninguno de estos cuatro objetivos no puede considerarse confiable. Una base de datos que posee estas características se considera compatible con ACID.
ACID Definido
Tomemos un momento para examinar cada una de estas características en detalle:
- Atomicidad establece que las modificaciones de la base de datos deben seguir una regla de "todo o nada". Se dice que cada transacción es "atómica". Si una parte de la transacción falla, la transacción completa falla. Es crítico que el sistema de administración de la base de datos mantenga la naturaleza atómica de las transacciones a pesar de cualquier DBMS, sistema operativo o falla de hardware.
- Consistencia indica que solo los datos válidos se escribirán en la base de datos. Si, por algún motivo, se ejecuta una transacción que viola las reglas de consistencia de la base de datos, la transacción completa se retrotraerá y la base de datos se restaurará a un estado compatible con esas reglas. Por otro lado, si una transacción se ejecuta con éxito, llevará la base de datos de un estado que sea consistente con las reglas a otro estado que también sea consistente con las reglas.
- Aislamiento requiere que las transacciones múltiples que ocurren al mismo tiempo no afecten la ejecución de la otra. Por ejemplo, si Joe emite una transacción contra una base de datos al mismo tiempo que Mary emite una transacción diferente, ambas transacciones deben operar en la base de datos de manera aislada. La base de datos debe realizar la transacción completa de Joe antes de ejecutar Mary, o viceversa. Esto evita que la transacción de Joe lea datos intermedios producidos como un efecto secundario de parte de la transacción de Mary que finalmente no se confirmará en la base de datos. Tenga en cuenta que la propiedad de aislamiento no garantiza qué transacción se ejecutará primero, simplemente que las transacciones no interferirán entre sí
- Durabilidad asegura que cualquier transacción comprometida con la base de datos no se perderá. La durabilidad se garantiza mediante el uso de copias de seguridad de la base de datos y los registros de transacciones que facilitan la restauración de transacciones comprometidas a pesar de cualquier falla subsiguiente en el software o hardware.
Cómo funciona ACID en la práctica
Los administradores de bases de datos utilizan varias estrategias para hacer cumplir ACID.
Uno usado para imponer la atomicidad y durabilidad es registro de escritura anticipada (WAL), en el que cualquier detalle de la transacción se escribe primero en un registro que incluye tanto la información de rehacer como la de deshacer. Esto garantiza que, dada una falla de la base de datos de cualquier tipo, la base de datos puede verificar el registro y comparar su contenido con el estado de la base de datos.
Otro método utilizado para abordar la atomicidad y durabilidad es paginación de la sombra, en el que se crea una página de sombra cuando se modifican los datos. Las actualizaciones de la consulta se escriben en la página de la sombra en lugar de en los datos reales de la base de datos. La base de datos se modifica solo cuando se completa la edición.
Otra estrategia se llama compromiso de dos fases Protocolo, especialmente útil en sistemas de bases de datos distribuidas. Este protocolo separa una solicitud para modificar datos en dos fases: una fase de solicitud de confirmación y una fase de confirmación. En la fase de solicitud, todos los DBMS en una red que se ven afectados por la transacción deben confirmar que lo han recibido y tener la capacidad para realizar la transacción. Una vez que se recibe la confirmación de todos los DBMS relevantes, se completa la fase de confirmación en la que los datos se modifican realmente.