Passa al contenuto principale

ACID

Atomicity Consistency Isolation Durability

È un insieme di proprietà che si applicano, nella fase di creazione e sviluppo di un database (banca dati), alle logiche delle transazioni uniche (ad esempio, un trasferimento di fondi da un conto bancario a un altro, anche con modifiche multiple come l’addebito su un conto e l’accredito su un altro, è un’unica operazione) sui dati contenuti (Atomicity, Consistency, Isolation, e Durability).

In dettaglio:

  • Atomicità: il processo deve essere diviso in transazioni (una transazione deriva dalla suddivisione di un numero finito di unità indivisibili);
  • Coerenza: il database rispetta i vincoli di integrità, sia a inizio che a fine transazione perché non devono verificarsi contraddizioni (incoerenza dei dati) tra i dati archiviati;
  • Isolamento: ogni transazione deve essere eseguita in modo isolato e indipendente dalle altre transazioni, l’eventuale fallimento di una transazione non deve interferire con le altre transazioni in esecuzione e per questo sono previsti i seguenti livelli di isolamento:
    • leggi senza impegno: consente transazioni in sola lettura, senza bloccare in lettura i dati e una transazione può leggere dati sporchi, perché potrebbero sparire se la transazione che li ha generati abortisce;
    • letto impegnato: prevede il rilascio immediato dei dati in lettura, ritardando quelli in scrittura e le letture non sono ripetibili all’interno della stessa transazione;
    • lettura ripetibile: vengono bloccati sia i dati in lettura che quelli in scrittura ma solo sulle ennuple della tabella coinvolta in questo modo si genera il fenomeno dei fantasmi (phantoms);
    • serializzabile: potrebbe garantire l’effettiva serialità del codice bloccando gli accessi alle tabelle in gioco, tuttavia si tratta di soluzioni troppo inefficienti per essere utilizzate in applicazioni critiche, in realtà la modalità serializzata si limita a evitare i fenomeni esaminati per i livelli più bassi di isolamento.