uni
Una transazione deve essere un insieme di operazioni atomico (indivisibile) e definitivo, corretto anche in presenza di concorrenza e con effetti definitivi. La conclusione positiva di una transazione corrisponde ad un impegno a mantenere traccia del risultato in modo definitivo.
In altre parole una transazione identifica una unit’ elementare di lavoro svolta da un’applicazione, che deve rispettare particolari caratteristiche di correttezza, robustezza e isolamento: è quindi una successione di comandi e/o operazioni in esecuzione che forma un’unit’ logica di elaborazione sulla base di dati.
Una transazione comprende una o piĂą operazioni di accesso al Database:
- read, lettura: interrogazioni
- write, scrittura: inserimenti, cancellazioni, modifiche
In termini più informatici una transazione è una parte di programma caratterizzata da inizio, una fine e al cui interno deve essere eseguita una sola volta uno dei seguenti comandi: commit
per terminare correttamenterollback
/abort
per abortire la transazione
In SQL:begin-transaction
end transaction
Esempio di transazione:
start transaction;
update ContoCorrente
set Saldo = Saldo + 10
where NumConto = 12202;
if (NumConto > 0) commit work
else rollback work;
Stato di una transazione
Una transazione entra nello stato attivo subito dopo essere iniziata, e ci rimane per tutta la sua esecuzione.
Quando termina entra nello stato di commit parziale, se è stata eseguita con successo e tutti i suoi aggiornamenti sul Database sono permanenti si sposta nello stato commit, in caso contrario entra nello stato fallito dal quale passa ad abortito quando tutti i suoi aggiornamenti al Database sono stati annullati.
ProprietĂ delle transazioni
AtomicitĂ
Una transazione è un’unità atomica di elaborazione. Non può lasciare il database in uno stato intermedio, se fallisce deve annullare i cambiamenti svolti.
Consistenza
La transazione deve rispettare i vincoli di integrità , se lo stato iniziale è corretto allora lo è anche lo stato finale.
Il sistema deve sempre essere in un ostato consistente, solo durante l’esecuzione della transazione può non esserlo.
Isolamento
La transazione non è influenzata dagli effetti delle altre transazioni concorrenti, l’esecuzione concorrente di una collezione di transazioni deve produrre un risultato uguale a quello che si otterrebbe con un’esecuzione sequenziale. Quindi una transazione non espone i suoi stati intermedi: si evita un effetto domino.
DurabilitĂ (o persistenza)
Gli effetti di una transazione andata in commit sono persistenti e non vanno perduti quindi anche dopo un guasto possiamo sempre ripristinare il database ad uno stato consistente.
Sistema Transazionale
Un sistema che offre un meccanismo per la definizione e l’esecuzione di transazioni è detto sistema transazionale (OLTP), questo esegue transazioni per conto di applicazioni concorrenti.