Che cosa sono le proprietà ACID dei DBMS in informatica?

Che cosa sono le proprietà ACID dei DBMS in informatica?

In ambito informatico un insieme di istruzioni di lettura e scrittura sulla base di dati viene definito transazione. Possiamo definire alcune proprietà che un DBMS dovrebbe sempre garantire per ogni transazione che vengono identificate comunemente con la sigla ACID, che deriva dall’acronimo inglese Atomicity, Consistency, Isolation, e Durability.

Che cosa sono le proprietà ACID dei DBMS in informatica
Che cosa sono le proprietà ACID dei DBMS in informatica?
Atomicità

L’atomicità di una transazione è la sua proprietà di essere eseguita in modo atomico, ovvero al termine della transazione gli effetti di quest’ultima devono essere totalmente resi visibili oppure nessun effetto deve essere mostrato. Questa proprietà viene spesso garantita dal DBMS attraverso le operazioni di UNDO per annullare una transazione e di REDO per ripetere una transazione. Se questa proprietà viene rispettata il database non rimane mai in uno stato intermedio inconsistente, infatti un qualsiasi errore fatto prima di un commit dovrebbe causare un UNDO delle operazioni fatte dall’inizio della transazione.

Consistenza o Coerenza

Questa proprietà garantisce che al termine dell’esecuzione di una transazione, i vincoli di integrità sono soddisfatti. Infatti se questa proprietà viene rispettata il database si trova in uno stato coerente sia prima della transazione che dopo la transazione. Con un piccolo esempio possiamo capire meglio cosa intendiamo per consistenza. Consideriamo una transazione bancaria tra due conti correnti, il principale vincolo di integrità che la transazione deve rispettare è che la somma dei due conti correnti prima e dopo la transazione deve essere uguale. Se la transazione rispetta questo vincolo allora possiamo dire che è coerente/consistente.

Isolamento

La proprietà di isolamento garantisce che ogni transazione deve essere indipendente dalle altre, ovvero l’eventuale fallimento di una o più transazioni non deve minimamente interferire con altre transazioni in esecuzione. Quindi affinchè l’isolamento sia possibile, ogni transazione deve sempre avere accesso a una base di dati consistente. I livelli di isolamento principali sono 4:

  1. Read Uncommitted, che consente di eseguire transazioni in sola lettura, senza quindi bloccare mai in lettura i dati.
  2. Read Committed, prevede il rilascio immediato dei dati in lettura e ritarda quelli in scrittura.
  3. Repeatable Read, vengono bloccati sia i dati in scrittura che quelli in lettura ma solo sulle n-uple della tabella coinvolta.
  4. Serializable, vengono bloccate interamente gli accessi alle tabelle in gioco, spesso questo è un livello di isolamento inefficiente.
Durabilità o Persistenza

Questa proprietà garantisce che i risultati di una transazione completata con successo siano permanenti nel sistema, ovvero non devono mai più essere persi. Ovviamente c’è un piccolo intervallo temporale tra il momento in cui la base di dati si impegna a scrivere le modifiche e la scrittura di quest’ultime, questo intervallo è un vero e proprio punto debole e quindi dobbiamo sempre garantire, per esempio con un log, che non si verifichino perdite di dati dovuti a malfunzionamenti. Per garantire questa proprietà quasi tutti i DBMS implementano un sottosistema di ripristino (recovery), che garantisce la durabilità anche a fronte di guasti ai dispositivi di memorizzazione, per esempio attraverso l’uso di back-up su supporti diversi oppure journaling delle transazioni.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *