5° Anno TEORIA 5. Architettura di un DBMS - Page 5

17. Architettura di un DBMS Vers.2.0 – Maggio 2020 c) Una delle proprietà fondamentali di una transazione è l’atomicità. Atomicità significa far apparire una transazione come un’unica azione indivisibile. In questo modo le conseguenze delle azioni elementari che la compongono sono "visibili" sulla base dati solo nel caso in cui la transazione sia completata con successo. SCENARIO: In generale in una base di dati accade che più utenti lavorino nello stesso momento sugli stessi dati attivando più transazioni. E’ dunque fondamentale che un DBMS gestisca la concorrenza degli accessi. Gestire la concorrenza vuol dire assicurare che un accesso simultaneo da parte di più utenti agli stessi dati non comprometta la loro integrità, impedendo che gli stessi possano diventare incongruenti o inconsistenti. PROBLEMA: Le due situazioni anomale più diffuse che potrebbero avere luogo in un sistema transazionale sono: 1) situazione dell’ultima modifica persa o "last update": Ipotizziamo due soli utenti e le relative transazioni chiamate T1 e T2 che agiscono sullo stesso dato X in modifica ed in modo concorrente. Può in teoria verificarsi la seguente situazione così riassunta. 1) a1: la transazione T1 legge il dato X 2) b1: la transazione T2 legge il dato X 3) a2: la transazione T1 modifica il dato X 4) b2: la transazione T2 modifica il dato X La modifica al passo 3) verrà irrimediabilmente persa. 2) situazione della lettura sporca o "dirty read": Ipotizziamo due soli utenti e le relative transazioni chiamate T1 e T2 che agiscono sullo stesso dato X in modifica ed in modo concorrente. Può in teoria verificarsi la seguente situazione così riassunta. 1) a1: la transazione T1 legge il dato X 2) a2: la transazione T1 modifica il dato X 3) b1: la transazione T2 legge il dato X 4) a3: la transazione T1 abortisce e ripristina il vecchio valore del dato X 5) b2: la transazione T2 modifica X sulla base del valore letto La modifica al passo 5) si basa su di un valore del dato X che non esiste più in quanto sostituito dal precedente valore dalla transazione T1. SOLUZIONE: La più semplice e diffusa soluzione per il problema della concorrenza e la tecnica di serializzazione delle transazioni. Questa tecnica, utilizzando il meccanismo di blocco temporaneo o lock, consente ad ogni singola transazione di avere la sensazione di operare in ambiente monoutente. Un lock è un lucchetto che il DBMS aggiunge ad ogni dato ed ad ogni elemento della base di dati, per evitare che altre transazioni possano utilizzarlo quando è già in uso da parte di una transazione. Autore: Rio Chierego (email: riochierego@libero.it - sito web: www.riochierego.it) Pag. 5