In un database, una transazione è una sequenza di una o più operazioni (es. una serie di `INSERT` e `UPDATE`) che vengono eseguite come un'unica unità di lavoro logica. La caratteristica fondamentale di una transazione è che deve essere atomica: o tutte le operazioni al suo interno hanno successo, o nessuna di esse viene applicata. Se qualcosa va storto a metà, l'intero gruppo di operazioni viene annullato ("rollback").
Le proprietà che garantiscono il funzionamento affidabile delle transazioni sono note con l'acronimo ACID.
A - Atomicity (Atomicità)
È la proprietà "tutto o niente". Una transazione non può essere completata a metà. Se una qualsiasi delle sue operazioni fallisce, l'intero stato del database viene riportato a com'era prima dell'inizio della transazione.
Esempio: Un bonifico bancario. La transazione deve sottrarre i soldi da un conto E aggiungerli a un altro. Se la seconda operazione fallisce, anche la prima deve essere annullata.
C - Consistency (Consistenza)
La consistenza garantisce che ogni transazione porti il database da uno stato valido a un altro stato valido. La transazione deve rispettare tutti i vincoli di integrità del database (es. chiavi uniche, foreign keys). Il database non permetterà mai di completare una transazione che lascerebbe i dati in uno stato inconsistente.
I - Isolation (Isolamento)
L'isolamento garantisce che le transazioni concorrenti (eseguite contemporaneamente da utenti diversi) non interferiscano l'una con l'altra. Ogni transazione si svolge come se fosse l'unica in esecuzione sul sistema. I meccanismi di "locking" (blocco) del database si occupano di gestire questo isolamento.
D - Durability (Durabilità)
La durabilità garantisce che, una volta che una transazione è stata completata con successo ("committata"), le sue modifiche sono permanenti e non andranno perse, nemmeno in caso di un crash del sistema o di un'interruzione di corrente.
Il supporto per le transazioni ACID è la caratteristica distintiva dei database relazionali come MySQL (con InnoDB) e PostgreSQL, e li rende la scelta obbligata per applicazioni finanziarie e mission-critical.
Hai bisogno di una soluzione su misura?
Dalla Web App al gestionale custom, trasformiamo le tue idee in software performante. Contattaci per una consulenza gratuita.
Richiedi una consulenza