¿Qué significa que una base de datos es compatible con ACID?
En informática, ACID (atomicidad, consistencia, aislamiento, durabilidad) es un conjunto de propiedades de las transacciones de bases de datos destinadas a garantizar la validez de los datos a pesar de errores, fallos de alimentación y otros contratiempos. En el contexto de las bases de datos, una secuencia de operaciones de base de datos que satisface las propiedades ACID (que puede percibirse como una única operación lógica sobre los datos) se denomina transacción. Por ejemplo, una transferencia de fondos de una cuenta bancaria a otra, aunque implique múltiples cambios como el cargo en una cuenta y el abono en otra, es una única transacción.

En 1983, Andreas Reuter y Theo Härder acuñaron el acrónimo ACID, basándose en un trabajo anterior de Jim Gray, que denominó atomicidad, consistencia y durabilidad, pero no aislamiento, al caracterizar el concepto de transacción. Estas cuatro propiedades son las principales garantías del paradigma transaccional, que ha influido en muchos aspectos del desarrollo de los sistemas de bases de datos.

Según Gray y Reuter, el Sistema de Gestión de la Información de IBM ya admitía transacciones ACID en 1973 (aunque el acrónimo se creó más tarde).

Atomicidad
Artículo principal: Atomicidad (sistemas de bases de datos)
Las transacciones suelen estar compuestas por varias sentencias. La atomicidad garantiza que cada transacción se trate como una única "unidad", que o bien tiene éxito por completo o bien falla por completo: si alguna de las sentencias que constituyen una transacción no se completa, falla toda la transacción y la base de datos no sufre ningún cambio. Un sistema atómico debe garantizar la atomicidad en todas y cada una de las situaciones, incluidos los fallos de alimentación, los errores y las caídas. Una garantía de atomicidad impide que las actualizaciones de la base de datos se produzcan sólo parcialmente, lo que puede causar mayores problemas que rechazar de plano toda la serie. Como consecuencia, otro cliente de la base de datos no puede observar que la transacción está en curso. En un momento dado, aún no ha ocurrido, y en el siguiente, ya ha ocurrido en su totalidad (o no ha ocurrido nada si la transacción se canceló en curso).

Consistencia
Artículo principal: Consistencia (sistemas de bases de datos)
La consistencia garantiza que una transacción sólo puede llevar a la base de datos de un estado consistente a otro, preservando los invariantes de la base de datos: cualquier dato escrito en la base de datos debe ser válido según todas las reglas definidas, incluyendo restricciones, cascadas, desencadenantes y cualquier combinación de ellos. Esto evita la corrupción de la base de datos por una transacción ilegal. La integridad referencial garantiza la relación clave primaria-llave externa.

Aislamiento
Artículo principal: Aislamiento (sistemas de bases de datos)
Las transacciones se ejecutan a menudo de forma concurrente (por ejemplo, varias transacciones leen y escriben en una tabla al mismo tiempo). El aislamiento garantiza que la ejecución concurrente de transacciones deje la base de datos en el mismo estado que se habría obtenido si las transacciones se hubieran ejecutado secuencialmente. El aislamiento es el principal objetivo del control de la concurrencia; dependiendo del nivel de aislamiento utilizado, los efectos de una transacción incompleta pueden no ser visibles para otras transacciones.

Durabilidad
Artículo principal: Durabilidad (sistemas de bases de datos)
La durabilidad garantiza que una vez que una transacción se ha consignado, seguirá consignada incluso en caso de fallo del sistema (por ejemplo, corte de energía o caída). Esto suele significar que las transacciones completadas (o sus efectos) se registran en una memoria no volátil.
ACID es un acrónimo de Atomicidad, Consistencia, Aislamiento y Durabilidad.
Atomicidad significa que las acciones se producen por completo o no se producen en absoluto; no hay escrituras parciales ni situaciones en las que sólo se haya completado parte de una acción. Para una base de datos, esto significa que si los datos se escribieron en una única transacción, esa transacción se completa por completo o falla por completo sin que queden datos en un estado parcial o corrupto.
Consistencia significa que las transacciones llevan el estado de un estado válido a otro estado válido, sin que haya forma de entrar en un estado no válido.
Aislamiento significa que varios lectores/escritores de la misma base de datos no interfieren entre sí y pueden proceder sin preocuparse de los efectos de que se produzca otra acción.
Durabilidad significa que el estado se conserva a pesar de fallos y cierres, por ejemplo, que el estado se persiste en un almacenamiento permanente.