La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema che possa verificarsi durante la modifica ad un dato, potrebbe ripercuotersi sul dato stesso Se una tale ripercussione si avvera, è necessario disporre di meccanismi concettuali e di sistema per riconoscerla ed eliminarla
Transazione La transazione è il concetto tipico fornito dai DBMS per gestire le modifiche ai dati La transazione poggia su di una strategia di gestione dell'affidabilità che permette di non tenere conto di eventuali condizionamenti esterni ad es. malfunzionamenti o uso condiviso che potrebbero accadere durante lesecuzione della transazione
Cosa è una Transazione è un programma sequenziale costituito da un insieme di operazioni di lettura e scrittura della base di dati e di operazioni in memoria temporanea che il sgbd esegue garantedno le proprietà di: atomicità persistenza serializzabilità
Proprietà di una Transazione Proprietà ACID: atomicity (atomicità) consistency (consistenza dello stato) isolation (serializzabilità) durability (persistenza)
Cosa contiene una Transazione Contiene, in generale, istruzioni integrate in un linguaggio di programmazione che permettono la modifica ai dati di una base dati Le istruzioni, una volta compilato il codice, producono operazioni che possono essere classificate in due tipi: –read(x) –write(x)
Transazione Una transazione deve trasformare una istanza consistente di una bd in una istanza anchessa consistente La consistenza di cui si parla è una proprietà logica di una base dati, espressa dai vincoli dello schema Altri tipi di consistenza devono essere mantenuti in modo esplicito dalle transazioni e dalle applicazioni
Transazione Le transazioni costituiscono un possibile strato applicativo in unarchitettura contenente un DBMS Tuttavia, in sistemi estremamente complessi, le transazioni non sono sufficienti per la definizione delle applicazioni La transazioni hanno dunque una certa granularità legata al ruolo che loro viene riservato in unarchitettura complessa
Stati di una Transazione il sgbd tiene traccia di alcuni stati in cui una transazione può trovarsi questo costituisce un modello concettuale della transazione terminata: effetti della trans resi permanenti annullata: modifiche disfatte creata e attiva eseguita abortita terminata annullata Abort Commit begin read/write
Gestione dell'Affidabilità Un DBMS deve garantire una totale affidabilità rispetto a tutto ciò che può accadere e principalmente dovuto ad accadimenti esterni e indipendenti Esempi sono: la mancanza di corrente, la rottura di hardware, la caduta del SO È necessario distinguere tra: –danneggiamento di dati della base dati –malfunzionamenti generali di sistema –fallimento di una singola transazione (abort)
Componenti per la Gestione dellAffidabilità Sono generalmente memorizzati su supporti permanenti (con gli stessi meccanismi del DBMS) ma diversi da quelli usati per la basi dati utente. Sono: –Copia(e) della base dati o back up –Giornale o file di log Accade anche che la copia della base dati non sia strettamente necessaria poiché già presente nell'architettura globale Il giornale è invece una componente essenziale e rappresenta lo stato di tutte le transazioni
Giornale Il giornale è un insieme ordinato di record Ogni record può contenere: –(begin, Tid) –(commit, Tid) –(abort, Tid) –(W, Tid, Pid, V old, V new ) Può contenere altre tipologie di record a seconda dellinformazione gestita dal DBMS
Giornale Il giornale registra tutte le modifiche che dovrebbero essere eseguite sulla base dati Il giornale deve essere mantenuto su memoria permanente e trattato come fossero dati della base dati
Esecuzione di Istruzioni di una Transazione Commit ( registra sempre nel giornale (commit,Tid) ): –posticipato, se si forza il trasferimento nella base dati delle pagine eventualmente presenti nel buffer e poi si registra nel giornale (commit,Tid) –immediato, altrimenti, mentre nel giornale ogni Write registra (W,Tid...V new ) Write ( modifica sempre le pagine nel buffer ): –immediato, se si permette il trasferimento di una pagina dal buffer nella base dati subito, registrando nel giornale (W,Tid...V old ) –posticipato, altrimenti
Ripristino di Transazioni
Ripresa dai Malfunzionamenti (Immediato,Immediato) Se labort è di una singola transazione, allora si scrive (abort,Tid) e si esegue Disfare(Tid) Se il malfunzionamento è di sistema è necessario riportare la base dati in uno stato consistente: –per ogni coppia (begin,Tid), (commit,Tid) si esegue Rifare(Tid) –per (begin,Tid) non seguito da (commit,Tid) si esegue Disfare(Tid)
Checkpoint È un modo di migliorare la ripresa dai malfunzionamenti In pratica si indica nel giornale un punto (con un record apposito) in cui si è sicuri che lo stato della base dati è modificato secondo le transazioni che precedono il checkpoint: –non è quindi necessario procedere oltre il checkpoint per ripristinare uno stato consistente della base dati
Pagine Ombra Servono per eseguire in modo atomico tutte le operazioni di modifica che avvengono sulle pagine Servono anche per tornare indietro, qualora sia necessario disfare ciò che si è fatto con una transazione Tabella delle pagine del file della base dati Pagina vecchia (prima della transazione) Pagina nuova (dopo il commit della transazione