📌 1. Transazione
Definizione: insieme di operazioni eseguite in blocco come unitĂ logica. Se una fallisce, tutte vengono annullate.
Esempio: bonifico
BEGIN TRANSACTION;
UPDATE Conti SET saldo = saldo - 100 WHERE id = 1;
UPDATE Conti SET saldo = saldo + 100 WHERE id = 2;
COMMIT; -- salva tutto
-- oppure ROLLBACK in caso di errore
đź§Ş 2. Le 4 proprietĂ ACID
A
AtomicitĂ
Tutto o niente: o tutte le operazioni hanno successo, o nessuna viene salvata.
C
Consistenza
Il database passa da uno stato valido a un altro, rispettando tutti i vincoli.
I
Isolamento
Transazioni concorrenti non interferiscono: ognuna vede il DB come se fosse sola.
D
DurabilitĂ
Dopo il COMMIT, le modifiche sono permanenti anche in caso di crash.
⚛️ 3. AtomicitĂ
- Stati possibili: Commit (tutto salvato) o Rollback (tutto annullato).
- Problema SENZA Atomicità : crash dopo il prelievo → soldi del mittente scalati, destinatario non riceve.
- Con AtomicitĂ : rollback automatico, stato iniziale ripristinato.
📏 4. Consistenza
- Rispetta tutti i vincoli: PRIMARY KEY, FOREIGN KEY, CHECK, NOT NULL, UNIQUE.
- Problema tipico: inserire un ordine per un cliente inesistente → viola la FK.
- Con consistenza: l'inserimento viene rifiutato.
đź”’ 5. Isolamento
- Impedisce interferenze tra transazioni contemporanee.
- Esempio senza isolamento: due clienti prenotano la stessa camera → entrambi ottengono la prenotazione (doppia prenotazione).
- Con isolamento: la seconda transazione attende e vede la camera giĂ occupata.
đź’ľ 6. DurabilitĂ
- Commit = modifiche salvate su disco.
- Crash dopo il commit non causa perdite.
đź’» 7. Comandi SQL
| Comando | Uso |
|---|---|
BEGIN TRANSACTION | Inizia le operazioni. |
COMMIT | Conferma e rende permanenti. |
ROLLBACK | Annulla tutto e ripristina lo stato iniziale. |
SAVEPOINT nome | Ripristino parziale intermedio. |
đź›’ 8. Scenario: Acquisto e-commerce
Un cliente compra un prodotto da 50€:
- BEGIN TRANSACTION
- Controllo consistenza: magazzino e saldo sufficienti.
- Esegui operazioni in modo atomico e isolato.
- COMMIT: modifiche permanenti (durabilitĂ ).
đź“‹ 9. Riepilogo ACID
| Proprietà | In sintesi | Se manca → |
|---|---|---|
| AtomicitĂ | Tutto o niente | Operazioni a metĂ , soldi che spariscono |
| Consistenza | Regole rispettate | Saldi negativi, riferimenti a dati inesistenti |
| Isolamento | Nessuna interferenza | Lost update, doppie prenotazioni |
| Durabilità | Modifiche permanenti | Dati persi dopo blackout (post‑commit) |
âś“ Con ACID
- Dati sempre corretti
- Nessuna perdita
- Resistente ai crash
- Operazioni atomiche
- Transazioni sicure
âś— Senza ACID
- Dati inconsistenti
- Soldi che spariscono
- Operazioni parziali
- Crash = perdite
- Conflitti concorrenti
Punti chiave:
- Transazione = unitĂ logica di lavoro.
- ACID garantisce affidabilitĂ .
- Comandi base: BEGIN, COMMIT, ROLLBACK.
- Usato da banche, e-commerce, sistemi critici.