ACID
Nell'ambito dei database, ACID è un acronimo che riassume quattro proprietà particolarmente desiderabili in un DBMS, ovvero: Atomicità, Coerenza, Isolamento e Durabilità (lett. "Atomicity, Consistency, Isolation, and Durability" in inglese). Queste vengono tipicamente soddisfatte attraverso l'implementazione del meccanismo delle transazioni.
Descrizione
[modifica | modifica wikitesto]Atomicità
[modifica | modifica wikitesto]Il processo deve essere suddivisibile in un numero finito di unità indivisibili, chiamate transazioni. L'esecuzione di una transazione perciò deve essere per definizione o totale o nulla, e non sono ammesse esecuzioni parziali; un processo, anche parziale, invece, in quanto insieme di transazioni può non essere elementare.
Coerenza
[modifica | modifica wikitesto]Il database rispetta i vincoli di integrità, sia a inizio che a fine transazione. Non devono verificarsi contraddizioni (incoerenza dei dati) tra i dati archiviati.
Isolamento
[modifica | modifica wikitesto]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.
Sono previsti quattro livelli di isolamento:
- read uncommitted:
- consente transazioni in sola lettura, senza bloccare in lettura i dati
- una transazione può leggere dati sporchi, perché potrebbero sparire se la transazione che li ha generati abortisce
- Esempi:
- T1 aggiorna una riga r1
- T2 accede a r1
- T1 termina con un rollback
- T2 ha avuto accesso ad un dato che non è mai esistito
- read committed:
- prevede il rilascio immediato dei dati in lettura, ritardando quelli in scrittura
- letture non ripetibili all'interno della stessa transazione
- repeatable read:
- vengono bloccati sia i dati in lettura che quelli in scrittura ma solo sulle ennuple della tabella coinvolta
- genera il fenomeno dei fantasmi (phantoms)
- serializable:
- Potrebbe garantire l'effettiva serializzabilità 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.
Durabilità
[modifica | modifica wikitesto]Detta anche "persistenza", si riferisce al fatto che una volta che una transazione abbia richiesto un commit work, i cambiamenti apportati non dovranno essere più persi. Per evitare che nel lasso di tempo fra il momento in cui la base di dati si impegna a scrivere le modifiche e quello in cui le scrive effettivamente si verifichino perdite di dati dovuti a malfunzionamenti, vengono tenuti dei registri di log dove sono annotate tutte le operazioni sul DB.
Bibliografia
[modifica | modifica wikitesto]- Paolo Atzeni, Stefano Ceri, Piero Fraternali, Stefano Paraboschi e Riccardo Torlone, Basi di dati, 5ª ed., Milano, McGraw-Hill, 2018, ISBN 978-88-386-9445-5.
- (EN) Francis Botto, Dictionary of e‐Business: A Definitive Guide to Technology and Business Terms, Hoboken, Wiley, 2003, DOI:10.1002/0470861886, ISBN 9780470844700.
- (EN) Francis Botto, Dictionary of Multimedia and Internet Applications: A Guide for Developers and Users, Hoboken, Wiley, 1999, ISBN 9780471986249.
Altri progetti
[modifica | modifica wikitesto]- Wikiversità contiene risorse su ACID
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) Denis Howe, ACID, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL