El model ACID de disseny de bases de dades és un dels conceptes més antics i més importants de la teoria de bases de dades. Defineix quatre objectius que tot sistema de gestió de bases de dades ha d'esforçar-se per assolir: atomització, consistència, aïllament i durabilitat. Una base de dades relacional que no compleixi cap d'aquests quatre objectius no es pot considerar fiable. Una base de dades que posseeix aquestes característiques es considera compatible amb ACID.
ACID definit
Prenguem un moment per examinar detalladament cadascuna d'aquestes característiques:
- Atomicitat estableix que les modificacions de la base de dades han de seguir una regla "tot o res". Es diu que cada operació és "atòmica". Si una part de la transacció falla, la transacció completa falla. És fonamental que el sistema de gestió de bases de dades mantingui la naturalesa atòmica de les transaccions malgrat qualsevol SGBD, sistema operatiu o fallada del maquinari.
- Consistència estableix que només es redactaran dades vàlides a la base de dades. Si, per alguna raó, s'executa una transacció que viola les regles de coherència de la base de dades, es transforma tota la transacció i la base de dades es restaurarà a un estat coherent amb aquestes regles. D'altra banda, si una transacció s'executa amb èxit, prendrà la base de dades d'un estat que sigui coherent amb les regles a un altre estat que també sigui coherent amb les regles.
- Aïllament requereix que les transaccions múltiples que es produeixin al mateix temps no afectin l'execució de l'altra. Per exemple, si Joe emet una transacció contra una base de dades al mateix temps que Mary emet una transacció diferent, ambdues operacions haurien d'operar de manera aïllada a la base de dades. La base de dades ha de realitzar la transacció completa de Joe abans d'executar Mary's, o viceversa. Això evita que la transacció de Joe llegeixi dades intermedi produïdes com a efecte secundari de part de la transacció de Mary que eventualment no es comprometi amb la base de dades. Tingueu en compte que la propietat d'aïllament no garanteix quina transacció s'executarà primerament, només que les transaccions no interfereixin entre si
- Durabilitat garanteix que no es perdin cap transacció compromesa amb la base de dades. La durabilitat es garanteix mitjançant l'ús de còpies de seguretat de la base de dades i registres de transaccions que faciliten la restauració de les transaccions compromeses, malgrat els errors de programari o maquinari posteriors.
Com funciona ACID en la pràctica
Els administradors de base de dades utilitzen diverses estratègies per fer complir l'ACID.
Un que es fa servir per fer complir l'atomització i la durabilitat és registre d'escriptura prèvia (WAL), en el qual qualsevol detall de transacció s'escriu per primera vegada en un registre que inclou tant la informació de redo com la desfer. Això garanteix que, atès un fracàs de la base de dades de qualsevol tipus, la base de dades pot comprovar el registre i comparar els seus continguts amb l'estat de la base de dades.
Un altre mètode utilitzat per abordar l'atomització i la durabilitat és ombra de paginació, en què es crea una pàgina d'ombra quan es modifiquen les dades. Les actualitzacions de la consulta s'escriuen a la pàgina d'ombres i no a les dades reals de la base de dades. La base de dades només es modifica quan es completa l'edició.
Una altra estratègia es diu la compromís en dues fases protocol, especialment útil en sistemes de bases de dades distribuïdes. Aquest protocol separa una sol·licitud per modificar dades en dues fases: una fase de sol·licitud de compromís i una fase de compromís. En la fase de sol·licitud, tots els SGBD d'una xarxa afectats per la transacció han de confirmar que l'han rebut i tenen la capacitat de realitzar la transacció. Un cop rebuda la confirmació de tots els SGBD rellevants, es completa la fase de compromís en què les dades són realment modificades.