Sistemi*monoutente*e*multiutente*

Transcript

Sistemi*monoutente*e*multiutente*
INTRODUZIONE*ALLA*GESTIONE*
DELLE*TRANSAZIONI*
!
2
Sistemi*monoutente*e*multiutente*
!  Sistema(Monoutente!
!  Solo!un!utente!alla!volta!accede!al!DB!(es.,!DB!
personali!su!disposi6vi!mobili).!!
!  Sistemi(Mul.utente!
!  Mol6!uten6!possono!accedere!
contemporaneamente!al!sistema!
!  In!sistemi!con!CPU!singola!il!sistema!opera6vo!alterna!
l’uso!della!CPU!fra!i!diversi!uten6!(esecuzione!
concorrente).!
!  In!un!sistema!con!più!CPU/core!è!possibile!
l’esecuzione!parallela!
Giorgio Giacinto 2011
3
Definizione*di*Transazione*
!  È!una!unità!logica!di!elaborazione!nella!base!di!da6!che!
comprende!una!o!più!operazioni!di!accesso!alla!base!di!
da6!
!  ScriIura:!Inserimen6,!cancellazioni,!modifiche!
!  LeIura:!interrogazioni!
!  Le!transazioni!possono!essere!
!  Specificate!in!un!linguaggio!di!alto!livello!come!SQL!
!  Specificate!interaNvamente!
!  Incapsulate!in!un!programma!applica6vo.!
!  I!comandi!di!una!transazione!sono!defini6!all’interno!di!
una!sezione!delimitata!dai!comandi!Begin(Transac.on(e!
End(Transac.on(
Giorgio Giacinto 2011
4
Modello*di*Base*di*Dati**
!  Una!base!di!da6!è!una!raccolta!di!elemen6!(data!item)!
denomina6!
!  Per!elemento!si!può!intendere!un!campo,!un!record!o!un!
blocco!di!disco!
!  I!conceN!rela6vi!alle!transazioni!sono!indipenden6!dalla!
granularità!
!  Operazioni!di!base:!
!  read_item(X):!legge!un!elemento!della!base!di!da6!
denominato!X!e!lo!copia!in!una!variabile!del!programma!
(per!semplicità!la!indichiamo!con!X)!
!  write_item(X):!Scrive!il!valore!della!variabile!di!
programma!X!nell’item!X!della!base!di!da6!
Giorgio Giacinto 2011
5
Operazioni*di*Lettura*
!  Il!trasferimento!di!da6!fra!disco!e!memoria!
principale!viene!eseguito!a!blocchi!a!prescindere!dai!
da6!oggeIo!dell’operazione!di!leIura!e!scriIura!
!  read_item(X)!
!  Trova!l’indirizzo!del!blocco!di!disco!che!con6ene!
l’elemento!X.!
!  Copia!il!contenuto!del!blocco!del!disco!in!un!buffer!
della!memoria!principale.!
!  Copia!l’elemento!X!del!buffer!nella!variabile!di!
programma!denominata!X.!!!!
Giorgio Giacinto 2011
6
Operazioni*di*Scrittura*
!  write_item(X)!
!  Trova!l’indirizzo!del!blocco!di!disco!che!con6ene!
l’elemento!X.!
!  Copia!il!contenuto!del!blocco!del!disco!in!un!buffer!
della!memoria!principale.!
!  Copia!l’elemento!X!dalla!variabile!di!programma!
denominata!X!nella!posizione!correIa!nel!buffer.!!
!  Copia!il!blocco!aggiornato!dal!buffer!sul!disco!
(immediatamente!o!in!un!secondo!momento)!
Giorgio Giacinto 2011
7
Esempi*di*Transazioni*
!  read(set(
!  insieme!di!elemen6!leN!in!una!transazione!
!  in!T1!(X,Y)!–!in!T2!(X)!
!  write(set(
!  insieme!di!elemen6!scrN!in!una!transazione!
!  in!T1!(X,Y)!–!in!T2!(X)!
Giorgio Giacinto 2011
8
Transazioni*concorrenti*(1)*
!  Sono!necessari!meccanismi!di!controllo!per!evitare!
!  lost!update!–!perdita!di!aggiornamento!
!  una!transazione!legge!il!valore!di!un!elemento!mentre!
un’altra!transazione!lo!sta!modificando!
!  Il!valore!finale!dipende!dalla!transazione!che!conclude!
per!ul6ma!
Giorgio Giacinto 2011
9
Lost*Update*
Giorgio Giacinto 2011
10
Transazioni*concorrenti*(2)*
!  Sono!necessari!meccanismi!di!controllo!per!evitare!
!  dirty!read!!
!  una!transazione!T2!legge!il!valore!di!un!elemento!
modificato!da&un’altra!transazione!T1!
!  T1!fallisce!e!tuIe!le!modifiche!devono!essere!annullate!
!  T2!elabora!un!dato!non!memorizzato!
permanentemente!
!  nonrepeatable!read!
!  una!transazione!T!legge!due!volte!un!elemento!
!  fra!le!due!leIure!l’elemento!viene!cambiato!da!
un’altra!transazione!
Giorgio Giacinto 2011
11
Dirty*Read*
Giorgio Giacinto 2011
12
Transazioni*concorrenti*(3)*
!  Sono!necessari!meccanismi!di!controllo!per!evitare!
!  incorrect!summary!
!  una!transazione!T2!calcola!una!funzione!aggregata!su!
alcuni!record!
!  altre!transazioni!modificano!alcuni!record!leN!da!T2!!
!  T2!legge!alcuni!elemen6!prima&della!modifica,!altri!
elemen6!dopo&la&modifica!
Giorgio Giacinto 2011
13
Incorrect*Summary*
Giorgio Giacinto 2011
14
Terminazione*di*una*transazione*
!  Commit!
!  La!transazione!di!conclude!correIamente!e!l!
risultato!finale!viene!memorizzato!in!modo!
permanente!nella!base!di!da6!
!  Abort!
!  La!transazione!non!termina!correIamente!ed!
eventuali!modifiche!già!apportate!devono!essere!
annullate!
Giorgio Giacinto 2011
15
Fallimento*di*una*transazione**(1)*
!  System!Crash!
!  guas6!hardware,!errori!so[ware,!errori!di!rete!
!  Errore!di!transazione!o!di!sistema!
!  Errori!logici!di!programmazione!
!  Interruzione!della!transazione!da!parte!dell’utente!
!  Errori!locali!o!condizioni!di!eccezione!rilevate!dalla!
transazione!
!  Una!condizione!prevista!dal!programmatore!che!
causa!l’annullamento!della!transazione!
Giorgio Giacinto 2011
16
Fallimento*di*una*transazione**(2)*
!  ANvazione!del!controllo!di!concorrenza!
!  Il!DBMS!può!annullare!una!transazione!in!caso!di!
mancata!sincronizzazione!con!altre!transazioni!o!per!
evitare!(o!uscire!da)!condizioni!di!stallo!
!  Disk!failure!
!  Errori!dovu6!ai!dischi!
!  Problemi!fisici!e!catastrofi!
!  Even6!naturali,!sabotaggi,!errori!accidentali,!ecc.!
Le&ul1me&due&cause&coinvolgono&l’intero&sistema&più&che&
la&singola&transazione&
Giorgio Giacinto 2011
17
Concetti*di*transazione*e*di*sistema*
!
Giorgio Giacinto 2011
18
Stati*delle*transazioni*
!  La!transazione!è!una!operazione!atomica!
!  o!viene!completata!nella!sua!interezza!(commit)!
!  o!non!viene!eseguita!affaIo!(abort!o!rollback)!
!  Il!sistema!6ene!traccia!degli!sta6!di!una!transazione!
Giorgio Giacinto 2011
19
Il*log*di*sistema*
!  È!un!file!sequenziale!in!cui!vengono!registrate!le!
operazioni!eseguite!durante!una!transazione!
!  scriIo!solo!“in!aggiunta”!
!  memorizzato!su!disco!
!  si!effeIuano!copie!di!backup!
!  In!caso!di!fallimento!di!una!transazione,!si!può!
ripercorrere!il!log!all’indietro!!
!  per!annullare!(undo)!alcune!operazioni!
!  per!ripetere!(redo)!alcune!operazioni!
Giorgio Giacinto 2011
20
Record*di*log*
!  A!ogni!transazione!è!associato!un!iden6ficatore!di!
transazione!T!
!  Tipi!di!record!
!  [start_transac6on,!T]!
!  [write_item,!T,!X,old_value,!new_value]!
!  [read_item,!T,!X]!
!  [commit,!T]!
!  [abort,!T]!!
Giorgio Giacinto 2011
21
Proprietà*ACID*di*una*transazione*
!  Atomicity!
!  Una!transazione!che!deve!essere!eseguita!come!una!unità!
indivisibile!di!elaborazione!!
!  Consistency!
!  Una!transazione!deve!mantenere!la!base!di!da6!in!uno!
stato!valido!!
!  Isola6on!
!  L’esecuzione!di!una!transazione!non!deve!interferire!con!
altre!transazioni!concorren6!
!  Durability!(Persistenza)!
!  Le!modifiche!apportate!alla!base!di!da6!dopo!un!commit!
devono!essere!registrate!in!modo!permanente!
Giorgio Giacinto 2011