ACID

De Viquipèdia
Dreceres ràpides: navegació, cerca

En el context de bases de dades, ACID (acrònim anglès de Atomicity, Consistency, Isolation, Durability) són tot un seguit de propietats que ha de complir tot sistema de gestió de bases de dades per tal de garantir que les transaccions siguin fiables.

Una transacció, en el context de bases de dades, és una simple operació lògica feta sobre les dades. Un exemple de transacció és la transferència de fons d'un compte a un altre, encara que consisteixi en diverses operacions individuals (com extreure d'un compte i ingressar a l'altre).

Concretament, l'acrònim ACID significa:

  • Atomicitat: Una transacció o bé finalitza correctament i confirma o bé no deixa cap rastre de la seva execució.
  • Consistència: La concurrència de transaccions no pot produir resultats anòmals.
  • AÏllament (o Isolament): Cada transacció del sistema s'ha d'executar com si fos l'única que s'executa en aquell moment en el sistema.
  • Definitivitat: Si es confirma una transacció, el resultat d'aquesta ha de ser definitiu i no es pot perdre.

Atomicitat[modifica | modifica el codi]

És l'habilitat d'un SGBD de garantir que, o són executades totes les tasques que intervenen en una transacció, o bé no se n'executa cap. Una transferència de fons es pot completar o bé pot fallar per multitud de raons, però l'atomicitat garanteix que un compte no li seran retirats els fons si l'altre compte no els rep.

Consistència[modifica | modifica el codi]

La consistència es referix a que la base de dades ha d'estar en un estat quan acaba una transacció que ha de ser coherent amb l'estat que tenia en començar la transacció. Això vol dir que una transacció no pot trencar les regles, o les restriccions d'integritat de la base de dades. Si una restricció d'integritat planteja que tots els comptes han de tenir un balanç positiu, aleshores, qualsevol transacció que doni un balanç negatiu del compte serà avortada.

Aïllament[modifica | modifica el codi]

L'aïllament es refereix a l'habilitat de les aplicacions de fer que les operacions en una transacció estiguin aïllades de totes les altres operacions. Això vol dir que cap operació externa a la transacció podrà veure les dades en un estadi intermedi. Un treballador d'un banc pot veure els fons transferits d'un compte o de l'altre, però mai quan ja s'havien extret d'un compte i encara no s'havien carregat a l'altre. Més formalment, l'aïllament significa que la història de les transaccions és serialitzable. Per motius de rendiment, aquesta habilitat és sovint relaxada.

Definitivitat[modifica | modifica el codi]

La definitivitat o durabilitat es refereix a la garantia que un cop un usuari ha estat notificat de l'èxit d'una transacció, aquesta persistirà, no pot ser desfeta. Això vol dir que ha de poder sobreviure a una fallada del sistema, i que el sistema de base de dades ha comprovat les restriccions d'integritat i no ha d'avortar la transacció. Molts SGBD implementen la durabilitat escrivint totes les transaccions en un registre que pot ser tornat a executar per recrear l'estat del sistema just abans de la fallada. Una transacció solament pot ser considerada 'tancada' (committed) un cop s'ha inclòs al registre.