Applicazioni Transazionali
Un'applicazione di tipo transazionale è un sistema software progettato per gestire transazioni, ovvero sequenze di operazioni che devono essere eseguite come un'unità indivisibile. In altre parole, o tutte le operazioni all'interno di una transazione vengono completate con successo, o nessuna di esse ha effetto.
Caratteristiche principali
Le applicazioni transazionali sono fondamentali in contesti in cui l'integrità dei dati è cruciale, come:
Sistemi bancari: Trasferimenti di denaro, pagamenti, ecc.
E-commerce: Ordini, pagamenti, gestione dell'inventario.
Sistemi di prenotazione: Voli, hotel, eventi.
Sistemi di gestione dei database (DBMS): Garantire la coerenza dei dati.
Proprietà ACID
Le transazioni in un database relazionale devono aderire alle seguenti quattro proprietà, note come ACID:
Atomicità (Atomicity): Tutte le operazioni all'interno di una transazione vengono trattate come una singola unità. O vengono eseguite tutte con successo, o nessuna di esse ha effetto.
Coerenza (Consistency): Una transazione porta il database da uno stato valido a un altro stato valido. Non può violare le regole di integrità del database.
Isolamento (Isolation): Le transazioni concorrenti vengono eseguite come se fossero isolate l'una dall'altra. Nessuna transazione può interferire con un'altra.
Durabilità (Durability): Una volta che una transazione è stata completata (commit), le sue modifiche sono permanenti e non possono essere perse, anche in caso di guasto del sistema.
Esempio
Immagina un trasferimento di denaro da un conto A a un conto B. Questa transazione deve essere atomica:
Prelievo dell'importo dal conto A.
Deposito dell'importo nel conto B.
Se una delle due operazioni fallisce, l'intera transazione deve essere annullata (rollback) per evitare incongruenze.