← Tutti gli episodi
Copertina di Tutto o niente: le transazioni e la promessa ACID
Stagione 53 · Episodio 003

Tutto o niente: le transazioni e la promessa ACID

12 settembre 2026 4:55
0:00 4:55

Ciao, e benvenuto nella terza puntata della cinquantatreesima stagione. Oggi parliamo della prima grande promessa che Postgres fa a chi gli affida i propri dati, una promessa così importante che, senza di essa, nessuna applicazione seria potrebbe esistere. Oggi capiamo le transazioni, e la promessa del tutto o niente.

Partiamo dal problema, perché è concreto e antico. Molte operazioni sui dati non sono una cosa sola, ma un gruppo di cose che devono succedere tutte insieme. L'esempio classico è un bonifico: togliere del denaro da un conto, e aggiungerlo a un altro. Sono due passaggi. Ma pensa al disastro se ne va a buon fine solo uno: il denaro sparisce dal primo conto e non arriva mai al secondo. Oppure appare sul secondo senza mai lasciare il primo. Un mezzo lavoro, qui, è peggio di nessun lavoro: crea denaro dal nulla, o lo distrugge.

Voglio darti la soluzione, perché ha un nome. La soluzione si chiama transazione. Una transazione è un gruppo di operazioni che Postgres tratta come se fosse una cosa sola, indivisibile. O riescono tutte, o non ne accade nessuna. Non esistono vie di mezzo. Nel bonifico, o partono e arrivano entrambi i movimenti, o non se ne fa nessuno. Se qualcosa va storto a metà, se manca la corrente, se il programma va in tilt tra il primo e il secondo passaggio, Postgres annulla tutto e riporta le cose com'erano prima. È il tutto o niente, e in inglese lo chiamano atomicità: la transazione è come un atomo, non la puoi spezzare a metà.

Voglio allargare la promessa, perché è più ampia. L'atomicità è la prima di quattro promesse che vanno insieme. La seconda è la coerenza: una transazione porta la base di dati da uno stato valido a un altro stato valido, senza mai lasciarla in uno stato assurdo che viola le sue regole. La terza è l'isolamento: se tante transazioni avvengono insieme, ognuna si comporta come se fosse sola, senza pestarsi i piedi con le altre. E la quarta è la durabilità: una volta che Postgres ti ha detto è fatto, quel dato è al sicuro per sempre, anche se un istante dopo salta la corrente. Quattro promesse, un solo patto di fiducia. Sono spesso indicate con la parola inglese acid, che raccoglie le loro iniziali: atomicità, coerenza, isolamento e durabilità. Ma il nome conta poco; conta che sono il midollo di cosa vuol dire prendere sul serio i dati di qualcuno.

Voglio dirti perché questo cambia tutto, perché è liberatorio. Queste promesse ti tolgono dalle spalle un peso enorme. Senza di esse dovresti scrivere tu, ogni volta, il codice per gestire ogni possibile modo in cui le cose vanno a metà: e se va giù qui? E se due utenti fanno la stessa cosa insieme? Sarebbe un incubo, e sbaglieresti di sicuro. Con le transazioni, invece, dici a Postgres queste cose vanno insieme, e lui si prende la responsabilità di garantire che vadano tutte o nessuna. Ti fa ragionare per operazioni intere e sensate, invece che per singoli passi fragili. E questa, in fondo, è la vera comodità: non tanto che i dati siano protetti, ma che tu possa smettere di pensarci, delegando a Postgres la parte più difficile e sottile di tutto il mestiere.

Voglio darti l'immagine che rende chiara questa idea, perché la conosci. Pensa a spedire un pacco importante con la firma alla consegna. Non è consegnato finché il destinatario non firma. Se qualcosa va storto lungo la strada, il pacco torna indietro, intatto: non resta a metà, abbandonato in un magazzino. O arriva e viene firmato, o torna al mittente. Non esiste lo stato consegnato a metà. La transazione è quella firma: la garanzia che l'operazione, o si completa davvero, o è come se non fosse mai cominciata.

Voglio trarre la lezione generale, perché è il fondamento. La lezione è che il mondo reale è pieno di crash, di cadute di corrente, di utenti che fanno cose insieme nello stesso istante. In quel caos, la transazione è lo scudo. È il meccanismo con cui Postgres protegge la coerenza dei tuoi dati dal disordine della realtà, garantendo che ogni operazione sia intera. Le prossime puntate mostreranno come mantiene queste promesse anche quando mille persone lavorano insieme, e anche quando la macchina muore nel momento peggiore. Ma la promessa, il patto, comincia qui.

Per oggi ci fermiamo qui. Abbiamo visto le transazioni. Molte operazioni sono gruppi di passi che devono succedere tutti insieme, come il bonifico dove togliere e aggiungere denaro devono andare a buon fine entrambi: un mezzo lavoro è peggio di nessuno. La transazione è un gruppo di operazioni trattato come una cosa sola indivisibile, il tutto o niente, che in inglese chiamano atomicità. È la prima di quattro promesse, con coerenza, isolamento e durabilità: un solo patto di fiducia. Ti toglie dalle spalle la gestione di ogni modo in cui le cose vanno a metà. Come un pacco con firma alla consegna: o arriva davvero, o torna intatto, mai consegnato a metà. La lezione: nel caos della realtà, la transazione è lo scudo della coerenza. Nella prossima puntata: leggere e scrivere senza fare la fila. Nelle note trovi qualche spunto. Se ti è utile, condividila. Grazie per l'ascolto, e ci sentiamo alla prossima.