🗄️ Transazioni e ACID — Riassunto

Concetti chiave, proprietĂ  ACID, comandi SQL e scenario pratico

📌 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

ComandoUso
BEGIN TRANSACTIONInizia le operazioni.
COMMITConferma e rende permanenti.
ROLLBACKAnnulla tutto e ripristina lo stato iniziale.
SAVEPOINT nomeRipristino parziale intermedio.

đź›’ 8. Scenario: Acquisto e-commerce

Un cliente compra un prodotto da 50€:

  1. BEGIN TRANSACTION
  2. Controllo consistenza: magazzino e saldo sufficienti.
  3. Esegui operazioni in modo atomico e isolato.
  4. COMMIT: modifiche permanenti (durabilitĂ ).

đź“‹ 9. Riepilogo ACID

ProprietàIn sintesiSe manca →
AtomicitĂ Tutto o nienteOperazioni a metĂ , soldi che spariscono
ConsistenzaRegole rispettateSaldi negativi, riferimenti a dati inesistenti
IsolamentoNessuna interferenzaLost update, doppie prenotazioni
DurabilitàModifiche permanentiDati 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:
  1. Transazione = unitĂ  logica di lavoro.
  2. ACID garantisce affidabilitĂ .
  3. Comandi base: BEGIN, COMMIT, ROLLBACK.
  4. Usato da banche, e-commerce, sistemi critici.