1 / 75

Basi di Dati e Sistemi Informativi

Basi di Dati e Sistemi Informativi. Struttura di un DBMS: Gestione delle Transazioni Home page del corso : http:// www.cs.unibo.it /~ difelice / dbsi /. Gestione delle Transazioni.

tarak
Download Presentation

Basi di Dati e Sistemi Informativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di Dati e SistemiInformativi Struttura di un DBMS: GestionedelleTransazioni Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. GestionedelleTransazioni • Transazione sequenza di operazioni SQL la cui esecuzionedeveavveniregarantendoalcunecaratteristiche di correttezza, isolamento e robustezza. • Unatransazionetermina con commit ( “procedi”) o con abort ( “annulla”). • Definite dall’utente, tramitecomandi SQL: • start transaction … end transaction. • Definite automaticamentedal sistema.

  3. GestionedelleTransazioni PROPRIETA’ ACIDE DELLE TRANSAZIONI Atomicita’  La transazionedeveessereeseguita con la regola del “tuttoo niente”. Consistenza La transazionedevelasciareil DB in unostatoconsistente, eventualivincoli di integrita’ non devonoessereviolati. Isolamento  L’esecuzione di unatransazionedeveessereindipendentedallealtre. Persistenza  L’effetto di unatransazioneche ha fattocommit non deveessereperso.

  4. GestionedelleTransazioni • Gestoredellaconsistenza tipicamenteimplementatadaicompilatori del DDL. • Prima di eseguireun’istruzione SQL, ilsuoeffettovienesimulato. • Si verificachetuttiivincoli di integrita’ sianorispettati, in casocontrariosi genera un errore e sibloccal’esecuzionedell’istruzionecorrente.

  5. Gestore di Interrogazioni e aggiornamenti Gestoredelle transazioni Gestoredellaconcorrenza Gestoredei metodid’accesso Gestoredella affidabilità Gestore del buffer Gestoredella memoriasecondaria Memoria secondaria GestionedelleTransazioni • Gestoredelleaffidabilita’  garantisceatomicita’ e persistenzadelletransazioni. • Gestoredellaconcorrenza garantiscel’isolamentodelletransazioni.

  6. Gestore di Interrogazioni e aggiornamenti Gestoredelle transazioni Gestoredellaconcorrenza Gestoredei metodid’accesso Gestoredella affidabilità Gestore del buffer Gestoredella memoriasecondaria Memoria secondaria GestionedelleTransazioni • Gestoredelleaffidabilita’ garantisceatomicita’ e persistenzadelletransazioni. • Gestoredellaconcorrenza garantiscel’isolamentodelletransazioni.

  7. GestionedelleTransazioni • Gestoredel’affidabilita’  verificachesianogarantite le proprieta’ di atomicita’ e persistenzadelletransazioni. • Responsabile di implementareicomandi di: start transaction, commit, rollback • Responsabile di ripristinareilsistemadopomalfunzionamentisoftware (ripresa a caldo) • Responsabile di ripristinareilsistemadopomalfunzionamenti hardware (ripresa a freddo)

  8. GestionedelleTransazioni Il controllore di affidabilita’ utilizza un log, nel quale sono indicate tutte le operazionisvolte dal DBMS. LOG, strutturafisica <10:34, 11/12/2012, Transaction: T1, INSERT(3,Mario, Rossi) INTO IMPIEGATI> <10:35, 11/12/2012, Transaction: T2, DELETE(3,Mario, Rossi) INTO IMPIEGATI> <10:36, 11/12/2012, Transaction: T3, INSERT(6,Maria, Bianchi) INTO IMPIEGATI>

  9. GestionedelleTransazioni Il controllore di affidabilita’ utilizza un log, nel quale sono indicate tutte le operazionisvolte dal DBMS. LOG, strutturalogica 10:36 10:34 10:35 Time T3, INSERT T1, INSERT T2, DELETE Tramiteil log, e’ possibile fare do/undo delletransazioni …

  10. GestionedelleTransazioni • Tramiteil log, e’ possibileripristinare lo statocompleto del DBMS in caso di malfunzionamenti/guasti … a pattoche non sianopersiancheidati del log! • Si assume cheidati del log sianomemorizzatisumemoria stabile (astrazione!). • Si possonousare opportune tecnologie per aumentarel’affidabilita’ RAID (Redundant Array of Independent Disks)

  11. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Due tipi di record: Record di transizione tengonotracciadelle operazionisvolte da ciascunatransizionesul DBMS. Record di sistema tengonotracciadelle operazioni di sistema (dump/checkpoint).

  12. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Due tipi di record: Record di transizione tengonotracciadelle operazionisvolte da ciascunatransizionesul DBMS. Record di sistema tengonotracciadelle operazioni di sistema (dump/checkpoint).

  13. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di begin, commit, abort: tengonotraccia del tipo di operazione e del nome (univoco) dellatransazione. B(T),C(T),B(T2),C(T2),B(T3),A(T3), etc

  14. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di update: tengonotraccia del del nome (univoco) dellatransazione, dell’oggettomodificato(O), dellostatoprecedente (BS) e dellostatoattuale(AS). U(T,O,BS,AS) -> U(T1,”CONTO”,4,5)

  15. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di insert: tengonotraccia del del nome (univoco) dellatransazione, dell’oggettomodificato(O), dellostatoattuale(AS). I(T,O,AS) -> I(T1,”CONTO”,1000)

  16. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di delete: tengonotraccia del del nome (univoco) dellatransazione, dell’oggettomodificato(O), dellostatoprecedente(BS). D(T,O,BS) -> D(T1,”CONTO”,1000)

  17. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time • Ricapitolando, irecord delletransazionisono del tipo: • B(T), C(T), A(T) • U(T, O, BS, AS), • I(T, O, AS) • D(T,O,BS)

  18. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Due tipi di record: Record di transizione tengonotracciadelle operazionisvolte da ciascunatransizionesul DBMS. Record di sistema tengonotracciadelle operazioni di sistema (dump/checkpoint).

  19. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di dump: tengonotracciadeglieventi di backup completodella base di datisumemoria stabile. Talieventisonoeffettuati con unacertaperiodicita’ definitadall’amministratore del sistema. DUMP(DB)

  20. GestionedelleTransazioni Il log sipresenta come un file sequenzialesuddiviso in record: Time Record di checkpoint: tengonotracciadelletransazioniattivepresentinelsistema. Transazioneattiva  transazioneche non si e’ ancoraconclusacon un’azione di commit o rollback. CK(T1,T2,T3 …, Tn)

  21. GestionedelleTransazioni Per aumentarel’efficienzaprestazionale, tuttii DBMS utilizzano un buffer temporaneodi informazioni in memoriaprincipale, il quale vieneperiodicamente scrittosumemoriasecondaria. RS Gestore del buffer (modulo del DBMS) RAM HD Buffer del DBMS DBMS

  22. GestionedelleTransazioni Quandosieffettua un checkpoint: Si sospendonotutte le operazioni in corsosul DBMS. Si rendonoeffettiveanchesumemoriasecondariatutte le operazionieffettuate da transazionichehannofattocommit, i cui datisitrovinoancoranel buffer (flush). Si scrivononel record di checkpoint del log tuttele transazioniattivedel sistema. Si riprendel’esecuzionedelleoperazioni.

  23. GestionedelleTransazioni REGOLE di SCRITTURA del LOG • Regola Write Ahead Log  la parte BS (before state) di ogni record di log deveesserescritta prima che la corrispondenteoperazionevengaeffettuatanella base di bati. • In pratica: I record di log devonoesserescritti prima dellecorrispondentioperazionisulla base di dati, in modo da poter fare undodelleoperazioni!

  24. GestionedelleTransazioni REGOLE di SCRITTURA del LOG • Regola di Commit Precedence la parte AS (after state) di ogni record di log deveesserescrittanel log prima di effettuareilcommitdellatransazione. • In pratica: I record di log devonoesserescritti prima di effettuarel’operazione di commit, in modo da potergarantireilredo di unatransazione non ancorascrittasumemoriasecondaria.

  25. GestionedelleTransazioni ESEMPI di SCHEDULING di OPERAZIONI I(T,X,AS) I(T,Y,AS) C(T) B(T) SCRITTURE SUL LOG SCRITTURE SUL DB Time w(Y) w(X) • Regola Write Ahead Log  OK • Regola Commit Precedence  OK

  26. GestionedelleTransazioni ESEMPI di SCHEDULING di OPERAZIONI I(T,Y,AS) I(T,X,AS) C(T) B(T) SCRITTURE SUL LOG SCRITTURE SUL DB Time w(X) w(Y) • Regola Write Ahead Log  NO! • Regola Commit Precedence  OK

  27. GestionedelleTransazioni ESEMPI di SCHEDULING di OPERAZIONI I(T,X,AS) I(T,Y,AS) C(T) B(T) SCRITTURE SUL LOG SCRITTURE SUL DB Time w(X) w(Y) • Regola Write Ahead Log  OK • Regola Commit Precedence  OK

  28. GestionedelleTransazioni ESEMPI di SCHEDULING di OPERAZIONI I(T,X,AS) I(T,Y,AS) C(T) B(T) SCRITTURE SUL LOG SCRITTURE SUL DB Time w(X) w(Y) • Nellapratica: le scritturesulla base di dati • possonoavvenire in qualsiasimomentoa • patto di garantire le due regole sui log ..

  29. GestionedelleTransazioni • I guastipossonoesseredovuti a: • Malfunzionamentisoftware perdita del contenutodellamemoriaprincipale, nessundanno per la memoriasecondaria. • Malfunzionamentihardware (1)  perdita di datinellamemoriasecondaria, ma non nellamemoria stabile. • Malfunzionamentihardware (2)  perdita di datinellamemoriasecondaria e stabile.

  30. Fail Stop Normal Fail Boot Restart completato Restart GestionedelleTransazioni • Modello di funzionamento (fail-stop) • Il DBMS usatrestati: • Normal esecuzionenormale • Stop occorrenza di un guasto • Restart ripristinodaiguasti

  31. Fail Stop Normal Fail Boot Restart completato Restart GestionedelleTransazioni • Modello di funzionamento (fail-stop) • Due tipi di operazioni di ripristino: • Ripresa a caldo  Malfunziomentisoftware. • Ripresa a freddo Malfunzionamenti hardware (1).

  32. GestionedelleTransazioni • La ripresa a caldosiarticola in 4 fasi: Si accede al log, lo siscorrefinoall’ultimo record di checkpoint. B(T1) B(T2) U(T2,O1,B1,A1), I(T1,O2,A2), B(T3), C(T1), B(T4), U(T3,O2, B3, A3), U(T3,O3, B4, A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7), A(T3), C(T5), I(T2,O6,A8)

  33. GestionedelleTransazioni • Si decidono le transazioni da annullare (undo) o da rifare (redo). • Si costruiscono due insiemi: UNDO e REDO. • UNDO e’ inizializzato con la listadelletransazioniattive, REDO e’ vuoto. • Si aggiungono ad UNDO tutte le transazioni T di cui esiste un record B(T). • Si spostano da UNDO a REDO tutte le transazioni di cui esiste un record C(T).

  34. GestionedelleTransazioni Per il set di UNDO siripercorreil file di log, disfacendotutte le azionieffettuate da ognitransazione T contenutanel set, dallapiu’ recenteallamenorecente. Per il set di REDO  siapplicano le azioniaffettuate da ognitransazione T contenutanel set, dallamenorecenteallapiu’ recente.

  35. GestionedelleTransazioni B(T1) B(T2) U(T2,O1,B1,A1), I(T1,O2,A2), B(T3), C(T1), B(T4), U(T3,O2, B3, A3), U(T4,O3, B4, A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7), A(T3), C(T5), I(T2,O6,A8) Transazioniattiveall’ultimo CK: {T2, T3, T4}. CostruzionedegliinsiemiUNDO/REDO UNDO={T2,T3,T4}, REDO={} C(T4)  UNDO={T2,T3} REDO={T4} B(T5)  UNDO={T2,T3,T5} REDO={T4} C(T5)  UNDO={T2,T3} REDO={T4,T5}

  36. GestionedelleTransazioni B(T1) B(T2) U(T2,O1,B1,A1), I(T1,O2,A2), B(T3), C(T1), B(T4), U(T3,O2, B3, A3), U(T4,O3, B4, A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7), A(T3), C(T5), I(T2,O6,A8) UNDO delletransazioni{T2,T3}: I(T2,O6,A8)  DELETE O6 D(T3,O5,B7)  INSERT (O5=B7) U(T3,O3,B5,A5)  O3=B5 U(T3,O2,B3,A3)  O2=B3 U(T2,O1,B1,A1)  O1=B1

  37. GestionedelleTransazioni B(T1) B(T2) U(T2,O1,B1,A1), I(T1,O2,A2), B(T3), C(T1), B(T4), U(T3,O2, B3, A3), U(T4,O3, B4,A4) CK(T2,T3,T4) C(T4) B(T5) U(T3,O3,B5,A5) U(T5,O4,B6,A6) D(T3,O5,B7), A(T3), C(T5), I(T2,O6,A8) REDO delletransazioni{T4,T5}: U(T4,O3,B4,A4)  O3=A4 U(T5,O4,B6,A6)  O4=B6

  38. GestionedelleTransazioni • La ripresa a freddosiarticola in 4 fasi: Si copiaildumpnel DB attuale (cercando di sovrascrivere solo la parte deteriorata). Relativamentealla parte deteriorata, siscorreil log dal dump in poi finoall’ultimocheckpoint, e sieffettuanotutte le azionidellatransazioniconcluse con un commit. Si effettua la ripresa a caldo(con l’algoritmovisto prima).

  39. Gestore di Interrogazioni e aggiornamenti Gestoredelle transazioni Gestoredellaconcorrenza Gestoredei metodid’accesso Gestoredella affidabilità Gestore del buffer Gestoredella memoriasecondaria Memoria secondaria GestionedelleTransazioni • Gestoredelleaffidabilita’  garantisceatomicita’ e persistenzadelletransazioni. • Gestoredellaconcorrenza garantiscel’isolamentodelletransazioni.

  40. GestionedelleTransazioni In un DMBS, le transazionivengonoeseguite in concorrenzaper ragioni di efficienza / scalabilita’ … Tuttavia, l’esecuzioneconcorrentedetermina un insieme di problematichechedevonoesseregestite … T1= Read(x); x=x+1; Write(x); Commit Work T2= Read(x); x=x+1; Write(x); Commit Work Se x=3, al terminedelletransazioni x vale 5 (esecuzionesequenziale) … ma in esecuzioneconcorrente?

  41. GestionedelleTransazioni Problema1: Perdita di Aggiornamento T2 scrive 4 T1 scrive 4

  42. GestionedelleTransazioni Problema2: Letturasporca T2 legge 4!

  43. GestionedelleTransazioni Problema3: Lettureinconsistenti T1 legge 3! T1 legge 4!

  44. GestionedelleTransazioni Problema4: Aggiornamento Fantasma Vincolo: x+y+z deve essere = a 1000 Vincolo violato!!

  45. GestionedelleTransazioni Date un insieme di transazioniT1,T2, Tn, di cui ciascunaformata da un certoinsieme di operazioni di scrittura (wi) e lettura (ri): Es. T1=r1(x) r1(y) r1(z) w1(y) … Si definisceschedule la sequenza di operazioni di lettura/scrittura di tutte le transazionicosi’ come eseguitesulla base di dati: r1(x) r2(y) r1(y) w4(y) w2(z) …

  46. GestionedelleTransazioni Uno schedule Ssi dice seriale se le azioni di ciascunatransazioneappaiono in sequenza, senzaessereinframezzateda azioni di altretransazioni. S={T1, T2, … Tn} Schedule serialeottenibile se: Le transazionisonoeseguiteunoallavolta(scenario non realistico) Le transazionisonocompletamenteindipendentil’unadall’altra (improbabile)

  47. Schedule Serializzabili Schedule Seriali Schedule GestionedelleTransazioni Uno schedule Ssi dice serializzabilese produce lo stessorisultato di un qualunque scheduler serialeS’dellestessetransazioni. CLASSI

  48. GestionedelleTransazioni • Come implementareilcontrollodellaconcorrenza? • I DMBS commercialiusanoilmeccanismodeilock per potereffettuareunaqualsiasioperazioni di lettura/scritturasuunarisorsa (tabella o valore di unacella), e’ necessario aver precedentementeacquisitoilcontrollo (lock) sullarisorsastessa. • Lock in lettura(accessocondiviso) • Lock in scrittura(mutuaesclusione)

  49. GestionedelleTransazioni • Su ogni lock possonoessere definite due operazioni: • Richiesta del lock in lettura/scrittura. • Rilascio del lock (unlock) acquisito in precedenza. STATO DELLA RISORSA AZIONE

  50. GestionedelleTransazioni Lock Manager  componente del DBMS responsabile di gestirei lock allerisorse del DB, e di rispondereallerichiestedelletransazioni. Per ciascunoggettox del DBMS: State(x)  statodell’oggetto(libero/r_locked/w_locked) Active(x)  listatransazioniattivesull’oggetto Queued(x)  listatransazionibloccatesull’oggetto STRUTTURE DATI del LOCK MANAGER

More Related