Le transazioni sono operazioni fondamentali che ci consentono di modificare e recuperare dati. Tuttavia per garantire l'integrità di un database è importante che queste transazioni vengano eseguite in modo tale da mantenere coerenza, correttezza e affidabilità anche in caso di guasti/errori. È qui che entrano in gioco le proprietà ACID.
ACID sta per Atomicity Consistency Isolation and Durability.
Proprietà dell'ACIDO:
Ci sono quattro proprietà dell'ACIDO
1. Atomicità
Atomicità significa che una transazione è tutto o niente: tutte le sue operazioni hanno successo oppure nessuna viene applicata. Se una parte qualsiasi fallisce, viene eseguito il rollback dell'intera transazione per mantenere coerente il database.
- Impegnarsi : Se la transazione va a buon fine le modifiche vengono applicate in modo permanente.
- Interrompi/Ripristina : Se la transazione fallisce, tutte le modifiche apportate durante la transazione vengono annullate.
Esempio : Consideriamo la seguente transazione T composto da T1 E T2 : Trasferimento di 0 dal conto X rendere conto E .
AtomicitàSe la transazione fallisce dopo il completamento di T1 ma prima del completamento di T2, il database rimarrebbe in uno stato incoerente. Con Atomicity, se una qualsiasi parte della transazione fallisce, l'intero processo viene riportato al suo stato originale e non vengono apportate modifiche parziali.
Coerenza nelle transazioni significa che il database deve rimanere in uno stato valido prima e dopo una transazione.
durata di Java
- Uno stato valido segue tutti i vincoli e le relazioni delle regole definite (come le chiavi primarie, le chiavi esterne, ecc.).
- Se una transazione viola una qualsiasi di queste regole, viene annullata per prevenire dati corrotti o non validi.
- Se una transazione detrae denaro da un conto ma non lo aggiunge a un altro (in un trasferimento), viola la coerenza.
Esempio : Supponiamo che la somma di tutti i saldi di un sistema bancario sia sempre costante. Prima di un trasferimento il saldo totale è 0. Dopo la transazione il saldo totale dovrebbe rimanere 0. Se la transazione fallisce nel mezzo (come l'aggiornamento di un conto ma non dell'altro) il sistema dovrebbe mantenere la sua coerenza ripristinando la transazione.
Totale prima che si verifichi = 500 + 200 = 700 .
Totale dopo che si è verificato T = 400 + 300 = 700 .
Coerenza3. Isolamento
L'isolamento garantisce che le transazioni vengano eseguite in modo indipendente senza influenzarsi a vicenda. Le modifiche apportate da una transazione non sono visibili agli altri finché non vengono confermate.
Garantisce che il risultato delle transazioni simultanee sia lo stesso che se fossero eseguite una dopo l'altra, evitando problemi come:
- Sporco si legge: lettura dei dati non impegnati
- Letture non ripetibili: i dati cambiano tra due letture
- Il fantasma recita: durante una transazione vengono visualizzate nuove righe
Esempio : Consideriamo due transazioni T e T''.
- X = 500 Y = 500
IsolamentoSpiegazione:
1. Transazione T:
- T vuole trasferirsi da X a Y.
- T legge E (valore: 500) sottrae da X (nuovo X = 450) e aggiunge a Y (nuovo Y = 550).
2. Transazione T'':
- T' ' si avvia e legge X (500) e Y (500).
- Calcola la somma: 500 + 500 = 1000.
- Nel frattempo i valori di X e Y cambiano rispettivamente a 450 e 550.
- Quindi la somma corretta dovrebbe essere 450 + 550 = 1000.
- L'isolamento garantisce che T'' non legga valori obsoleti mentre un'altra transazione (T) è ancora in corso.
- Le transazioni dovrebbero essere indipendenti e T'' dovrebbe accedere ai valori finali solo dopo il commit di T.
- Ciò evita risultati incoerenti come la somma errata calcolata da T''.
4. Durabilità:
La durabilità garantisce che, una volta confermata una transazione, le sue modifiche vengano salvate in modo permanente anche se il sistema fallisce. I dati vengono archiviati nella memoria non volatile in modo che il database possa ripristinare l'ultimo stato salvato senza perdere dati.
Esempio : Dopo aver trasferito con successo denaro dal Conto A al Conto B, le modifiche vengono archiviate su disco. Anche se si verifica un arresto anomalo subito dopo il commit, i dettagli del trasferimento rimarranno intatti quando il sistema verrà ripristinato, garantendo la durabilità.
In che modo le proprietà ACID influiscono sulla progettazione e sul funzionamento del DBMS
IL Le proprietà ACID nella loro totalità forniscono un meccanismo per garantire la correttezza e la coerenza di un database in modo tale che ogni transazione sia un gruppo di operazioni che agisce come una singola unità produce risultati coerenti agisce in isolamento da altre operazioni e gli aggiornamenti che apporta vengono archiviati in modo duraturo.
Le proprietà ACID salvaguardano l'integrità dei dati di un DBMS garantendo che le transazioni vengano completate con successo o non lascino traccia se interrotte. Impediscono che gli aggiornamenti parziali danneggino i dati e garantiscono che il database effettui la transizione solo tra stati validi.
ml in once
2. Controllo della concorrenza
Le proprietà ACID forniscono una solida struttura per la gestione delle transazioni simultanee. L'isolamento garantisce che le transazioni non interferiscano tra loro prevenendo anomalie dei dati come aggiornamenti persi, incoerenze temporanee e dati non impegnati.
3. Ripristino e tolleranza ai guasti
La durabilità garantisce che anche in caso di arresto anomalo del sistema, il database possa essere ripristinato a uno stato coerente. Grazie alle proprietà Atomicità e Durabilità, se una transazione fallisce a metà strada, il database rimane in uno stato coerente.
| Proprietà | Responsabilità del mantenimento degli immobili |
|---|---|
| Atomicità | Responsabile delle transazioni |
| Coerenza | Programmatore di applicazioni |
| Isolamento | Responsabile del controllo della concorrenza |
| Durabilità | Recupero |
Casi d'uso critici per ACID nei database
Nelle applicazioni moderne garantire l'affidabilità e la coerenza dei dati è fondamentale. Le proprietà dell'ACIDO sono fondamentali in settori come:
- Bancario : Le transazioni che coinvolgono trasferimenti di denaro, depositi o prelievi devono mantenere una rigorosa coerenza e durabilità per prevenire errori e frodi.
- E-commerce : garantire che gli ordini relativi al conteggio dell'inventario e i dettagli dei clienti vengano gestiti correttamente e in modo coerente anche durante i periodi di traffico elevato richiede la conformità ACID.
- Assistenza sanitaria : I risultati dei test e le prescrizioni delle cartelle cliniche dei pazienti devono rispettare rigorosi standard di coerenza, integrità e sicurezza.