Tecnologie di un database server: la gestione della concorrenza

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

CONCLUSIONE - Nucleo (o Kernel) Interagisce direttamente con lhardware Interagisce direttamente con lhardware Si occupa dellesecuzione.
Introduzione ai DBMS I Sistemi di Gestione di Basi di Dati sono strumenti software evoluti per la gestione di grandi masse di dati residenti su memoria.
Architettura MySQL E Motori MySQL L. Vigliano.
Capitolo 3 Risorse e Stallo 3.1. Risorse 3.2. Introduzione
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Sicurezza e concorrenza nelle basi di dati
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Data Bases Distribuiti Finalità Caratteristiche Struttura Mario Capurso
Java: programmazione concorrente con condivisione di memoria
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema.
I file l I File sono l unità base di informazione nellinterazione tra utente e sistema operativo l Un file e costituito da un insieme di byte attinenti.
SCHEDA INFORMATIVA DI UNITÀ
Tecnologia di un data base server: Controllo della Concorrenza
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
III Antonio Mattioli Non-Interferenza e Composizione delle Policy Indice - Modello di Bell-La Padula…………1 - Non-Interferenza………………… Unwinding.
Risorse e Stallo.
Basi di dati attive Paolo Atzeni.
Presentazione del corso Paolo Atzeni 1/03/2011
Corso di Programmazione Concorrente Stallo Valter Crescenzi nz.
Basi di dati II Presentazione del corso (include la presentazione di Tecnologia delle basi di dati, corso attivo fino al e sostituito.
Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.
Le transazioni Itis Max Planck.
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Daniel Stoilov Tesi di Laurea
Transazioni.
Progetto Di Uninfrastruttura Che Permetta La Modifica Di Dati Condivisi Distribuiti Su Più Nodi Reti di calcolatori L-S Gozzi Daniele
Distributed File System Service Dario Agostinone.
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
Concorrenza e Sincronizzazione di Thread e Processi
Modulo 1 - Concetti di base della Tecnologia dell'Informazione
Cos’è una transazione? Una transazione è un’unità logica di elaborazione richiesta da un’applicazione che dà luogo a una serie di operazioni fisiche elementari.
Seconda Università degli Studi di Napoli Facoltà di Economia Corso di Informatica Prof.ssa Zahora Pina.
Corso di Basi di Dati Il Linguaggio SQL
Basi di Dati e Sistemi Informativi
File system distribuito transazionale con replicazione
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
Programma di Informatica Classi Prime
© Giuseppe Berio – DI - UNITO
Architettura Centralizzata di un DBMS Relazionale
Modulo 5 Uso delle Basi di dati Paola Pupilli 2.
1 Il Buffer Cache Unix (Bach: the Design of the Unix Operating System (cap: 3)
Pagine ASP parte 2 La gestione dei file Stefano Schacherl.
Progetto Message Queues Service Olivelli Enrico Corso di Reti di Calcolatori LS A.A
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
SCHEDA INFORMATIVA DI UNITÀ. Introduzione Applicazione della gerarchia di memoria –Memoria cache fra la CPU e la memoria centrale Il processore vedrà.
BDE-TRANS 1 Gestione di transazioni concorrenti. BDE-TRANS 2 Lock Principio: –Tutte le letture sono precedute da r_lock (lock condiviso) e seguite da.
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: –COMMIT –SAVEPOINT nome_punto.
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
Basi Dati e Laboratorio (6 + 6) crediti – curriculum Sistemi e Reti Basi dati 1 e Basi dati 2 prec.ordin. docenti: Barbara Demo Giuseppe Berio mail :
Tipo Documento: unità didattica 4 Modulo 14 Compilatore: Antonella Bolzoni Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione.
1 Input/Output. 2 Livelli del sottosistema di I/O Hardware Gestori delle interruzioni Driver dei dispositivi Software di sistema indipendente dal dispositivo.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Normalizzazione Programma del Corso.
Transazioni in MySQL 4 Transazioni in MySQL 4
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
BDE-TRANS 1 Gestione di transazioni concorrenti. BDE-TRANS 2 Controllo di concorrenza La concorrenza è fondamentale: decine o centinaia di transazioni.
Le basi di dati.
Anno Architetture dati DBMS Centralizzati Controllo di concorrenza Carlo Batini.
Anno Architetture dati - DBMS Centralizzati Recovery management Carlo Batini.
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: COMMIT SAVEPOINT nome_punto.
Transcript della presentazione:

Tecnologie di un database server: la gestione della concorrenza Paolo Atzeni Roma – Rovereto 13/05/2011

Gestione della concorrenza Base di dati Collezione di dati potenzialmene grande persistente di interesse per molti utenti e applicazioni Esempi: Conti correnti bancari Prenotazioni aeree o ferroviarie La base di dati è spesso una risorsa importante, da gestire con efficienza affidabilità 13/05/2011 Gestione della concorrenza

Molte richieste contemporanee o quasi Conti correnti bancari, prenotazioni aeree o ferroviarie: anche centinaia o migliaia di aggiornamenti attivi in un ogni momento 13/05/2011 Gestione della concorrenza

Due prelevamenti da un conto corrente Quanto c'è sul conto? 1000 Bene, allora prelevo 200 Ok, il nuovo saldo è 800 Quanto c'è sul conto? 1000 Bene, allora prelevo 100 Ok, il nuovo saldo è 900 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Qual è il problema? Le operazioni ("transazioni", vediamo fra poco) sono concorrenti: le azioni si alternano (Paperina, Paperino, Paperina, …) in modo inaccettabile Se eseguissimo prima tutte le azioni di Paperina e poi tutte quelle di Paperino non ci sarebbe problema Potremmo allora separare tutte le operazioni? no, perché le richieste possono essere tante e introdurremmo tempi di attesa eccessivi 13/05/2011 Gestione della concorrenza

Lettura, scrittura, lettura 1000 sul conto A 1000 sul conto B Quanto c'è sul conto A? 1000 Quanto c'è sul conto B? 1500 Ehi, abbiamo 2500! Sposta 500 da A a B Nuovo saldo A: 500 Nuovo saldo B: 1500 13/05/2011 Gestione della concorrenza

Lettura prima della conferma (commit) 1000 sul conto Ecco un assegno da 10.000 Bene, il nuovo saldo è 11.000 Ma l'assegno è falso! Annulliamo l'operazione Il saldo resta 1000 Quanto c'è sul conto? 11.000 Abbiamo 11.000 !?! Paperina ha letto un dato sbagliato! 13/05/2011 Gestione della concorrenza

Gestione della concorrenza La concorrenza va governata: va permessa per favorire l'efficienza ma limitata, per evitare i problemi 13/05/2011 Gestione della concorrenza

Un concetto importante Transazione: Sequenza di operazioni da considerare indivisibile ("atomica"), corretta anche in presenza di concorrenza e con effetti definitivi 07/10/2010 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Transazioni, in pratica Sequenza di operazioni caratterizzata da un inizio (non sempre esplicitato) e da una conclusione: commit per terminare ed eseguire tutto rollback per annullare (abortire) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Una transazione declare s money; select saldo into s from conti where numero = 101; update conti set saldo = s - 200 where numero = 101; commit; Quanto c'è sul conto? 1000 Bene, allora prelevo 200 Ok, il nuovo saldo è 800 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Un'altra transazione update conti set saldo = saldo - 500 where codice = 'A' update conti set saldo = saldo + 500 where codice = 'B' commit Sposta 500 da A a B Nuovo saldo A: 500 Nuovo saldo B: 1500 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Un'altra ancora update conti set saldo = saldo + 10.000 where codice = 'A' rollback Ecco un assegno da 10.000 Bene, il nuovo saldo è 11.000 Ma l'assegno è falso! Annulliamo l'operazione Il saldo resta 1000 13/05/2011 Gestione della concorrenza

Caratteristiche delle transazioni Le proprietà ACIDe Atomicità Consistenza Isolamento Durabilità (persistenza) 07/10/2010 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1 Atomicità Una sequenza di operazioni correlate: trasferimento di fondi da un conto A ad un conto B … deve essere eseguita per intero o per niente: o si fanno il prelevamento da A e il versamento su B o nessuno dei due 07/10/2010 Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 1

Basi di dati, vol.2 cap.2 Gestione delle transazioni ... Consistenza La transazione rispetta i vincoli di integrità Conseguenza: se lo stato iniziale è corretto anche lo stato finale è corretto Se lo stato finale non è corretto, la transazione deve fallire 31/03/2011 Basi di dati, vol.2 cap.2 Gestione delle transazioni ...

Basi di dati, vol.2 cap.2 Gestione delle transazioni ... Isolamento La transazione non risente degli effetti delle altre transazioni concorrenti l'esecuzione concorrente di una collezione di transazioni deve produrre un risultato che si potrebbe ottenere con una esecuzione sequenziale esempio: due prelevamenti quasi contestuali 31/03/2011 Basi di dati, vol.2 cap.2 Gestione delle transazioni ...

Durabilità (Persistenza) Gli effetti di una transazione andata in commit non vanno perduti ("durano per sempre"), anche in presenza di guasti "commit" significa "impegno" 31/03/2011 Basi di dati, vol.2 cap.2 Gestione delle transazioni ...

Transazioni e moduli di DBMS Atomicità e durabilità Gestore dell'affidabilità (Reliability manager) Isolamento: Gestore della concorrenza Consistenza: Gestore dell'integrità a tempo di esecuzione (con il supporto del compilatore del DDL) 13/05/2011 Gestione della concorrenza

Controllo di concorrenza, anomalie I tre esempi corrispondono a situazioni tipiche Due prelevamenti sullo stesso conto: Perdita di aggiornamento (lost update) Interferenza fra due scritture Lettura prima del commit Lettura sporca (dirty read) Interferenza fra scrittura non confermata e lettura Scrittura fra le due letture Letture inconsistenti (inconsistent read) Interferenza fra lettura e scrittura 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Anomalie Perdita di aggiornamento W-W Lettura sporca R-W (o W-W) con abort Letture inconsistenti R-W Un'altra, che non abbiamo visto Inserimento fantasma R-W su dato "nuovo" 13/05/2011 Gestione della concorrenza

Livelli di isolamento in SQL:1999 (e JDBC) Il livello di isolamento può essere scelto per ogni transazione read uncommitted permette letture sporche, letture inconsistenti, aggiornamenti fantasma e inserimenti fantasma read committed evita letture sporche ma permette letture inconsistenti, aggiornamenti fantasma e inserimenti fantasma repeatable read evita tutte le anomalie esclusi gli inserimenti fantasma serializable evita tutte le anomalie Nota: la perdita di aggiornamento dovrebbe essere sempre evitata, ma non è così: conviene usare sempre serializable per le transazioni che scrivono 13/05/2011 Gestione della concorrenza

Anomalie e livelli di isolamento (per le transazioni che leggono) Perdita di aggiornamento W-W read uncommitted Lettura sporca R-W (o W-W) con abort read committed Letture inconsistenti R-W repeatable read Inserimento fantasma R-W su dato "nuovo" serializable 13/05/2011 Gestione della concorrenza

Livelli di isolamento, perché? La gestione del controllo della concorrenza è costosa, se non serve, possiamo rinunciarci Nota bene: per le letture, non per le scritture 13/05/2011 Gestione della concorrenza

Livelli di isolamento, esempi Una base di dati complessa, in un momento in cui non ci sono aggiornamenti ("tempo morto"): non c'è bisogno di controllo di concorrenza: read uncommitted Una banca, molti conti correnti, molte piccole modifiche in corso, ci interessa un dato indicativo sulla media dei saldi dei conti correnti: le inconsistenze sono tollerabili (perché presumibilmente piccole): read committed Idem, ma ci interessa sapere qual è il conto con il saldo più alto: ci serve un valore preciso, non possiamo tollerare inconsistenze, nemmeno piccole serializable 13/05/2011 Gestione della concorrenza

Controllo di concorrenza Esistono libri interi dedicati alla teoria e alla tecnologia, quindi in dieci minuti possiamo vedere solo l'idea di base, accennando alle tecniche 13/05/2011 Gestione della concorrenza

Due prelevamenti da un conto corrente Quanto c'è sul conto? 1000 Bene, allora prelevo 200 Ok, il nuovo saldo è 800 Quanto c'è sul conto? 1000 Bene, allora prelevo 100 Ok, il nuovo saldo è 900 13/05/2011 Gestione della concorrenza

Schedule Sequenza di operazioni di input/output di transazioni concorrenti (tralasciando le altre operazioni) Esempi: Paperina e Paperino leggono e scrivono lo stesso dato x, il saldo del conto (con perdita di aggiornamento) read1(x) read2(x) write1(x) write2(x) Paperino scrive fra due letture di Paperina (letture inconsistenti) read1(x) write2(x) write2(y) read1(y) 13/05/2011 Gestione della concorrenza

Controllo di concorrenza Obiettivo: evitare le anomalie Schedule seriale: le transazioni sono separate, una alla volta read1(x) write1(x) read2(x) write2(x) uno schedule seriale non presenta anomalie Schedule serializzabile: produce lo “stesso risultato” di uno schedule seriale sulle stesse transazioni e quindi è accettabile Controllore di concorrenza (Scheduler): un sistema che accetta o rifiuta (o riordina) le operazioni richieste dalle transazioni (mantenendo l'ordine delle azioni in ciascuna transazione) deve ammettere solo schedule serializzabili 13/05/2011 Gestione della concorrenza

Schedule non serializzabili Paperina e Paperino leggono e scrivono lo stesso dato x, il saldo del conto (con perdita di aggiornamento) read1(x) read2(x) write1(x) write2(x) Le due letture vedono lo stesso dato, mentre in caso di schedule seriale la seconda dovrebbe vedere il dato modificato dalla prima e questo ha conseguenze sulla seconda scriuttura Paperino scrive fra due letture di Paperina (letture inconsistenti) read1(x) write2(x) write2(y) read1(y) Le due letture vedono, complessivamente, uno stato della base di dati che non esiste e non è mai esistito 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Idea base Individuare classi di schedule serializzabili per i quali la proprietà di serializzabilità sia verificabile a costo basso Schedule Schedule Seriali Schedule Serializzabili 13/05/2011 Gestione della concorrenza

Gestore della concorrenza Gestore dei metodi d’accesso Gestore delle transazioni read, write begin, commit, abort Gestore della concorrenza Tabella dei lock read, write (non tutte e in ordine ev. diverso) Gestore della memoria secondaria BD 13/05/2011 Gestione della concorrenza

Controllo della concorrenza in pratica Saltiamo la teoria … Le tecniche utilizzate 2PL (two-phase locking) multiversion (evoluzione delle tecniche su timestamp) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Lock Principio su ciascun dato: si scrive uno per volta non si può leggere se qualcuno sta scrivendo Analogo a quanto accade in altri contesti (ad esempio, file system) ma con una granularità più fine (o comunque flessibile) Come si realizza: Si chiede il permesso lo si ottiene se la risorsa (il dato) non è utilizzata, in modo conflittuale, da altri; altrimenti si viene messi in attesa; dopo l'uso, si rilascia la risorsa; 13/05/2011 Gestione della concorrenza

I lock da soli non bastano Posso leggere A? ok Quanto c'è sul conto A? 1000 Ho finito con A (unlock) Posso leggere B? Quanto c'è sul conto B? 1500 Ho finito con B (unlock) Ehi, abbiamo 2500! Posso scrivere A? Posso scrivere B? ok, ok Sposta 500 da A a B Nuovi saldi A: 500, B: 1500 Ho finito con A e con B (unlock) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Locking a due fasi (2PL) Protezione con lock di tutte le letture e scritture, con vincolo sulle richieste e i rilasci dei lock: una transazione, dopo aver rilasciato un lock, non può acquisirne altri meglio ancora, per evitare le letture sporche: ogni transazione mantiene i propri lock fino alla fine (cioè fino al commit o al rollback) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Il 2PL risolve Posso leggere A? ok Quanto c'è sul conto A? 1000 Posso leggere B? Quanto c'è sul conto B? Ho finito con A e con B (unlock) OK, abbiamo 2000! Posso scrivere A? No, aspetta! Ora puoi scrivere A Posso scrivere B? ok Sposta 500 da A a B Nuovi saldi A: 500, B: 1500 Ho finito con A e con B (unlock) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Stallo (deadlock) I lock possono portare a situazioni indesiderate: attese incrociate: due transazioni detengono ciascuna una risorsa e aspettano la risorsa detenuta dall'altra 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Stallo Posso leggere? ok Quanto c'è sul conto? 1000 Posso scrivere? No, aspetta, qualcuno sta leggendo Posso leggere? ok Quanto c'è sul conto? 1000 Posso scrivere? No, aspetta, qualcuno sta leggendo Aspetta e … spera!!! 13/05/2011 Gestione della concorrenza

Risoluzione dello stallo La tecnica più semplice: timeout: si fissa un tempo limite per l'attesa da parte di una transazione, dopo di che essa viene annullata (ed eventualmente riparte) 13/05/2011 Gestione della concorrenza

Gestione della concorrenza 2PL, stallo e riavvio Posso leggere? ok Quanto c'è sul conto? 1000 Posso scrivere? No, aspetta, qualcuno sta leggendo Mi sono stancata di aspettare, smetto Ricomincio. Posso leggere? 900 ok, puoi scrivere Bene, allora prelevo 200 Ok, il nuovo saldo è 700 Posso leggere? ok Quanto c'è sul conto? 1000 Posso scrivere? no, aspetta, qualcuno sta leggendo ora puoi scrivere Bene, allora prelevo 100 ok, il nuovo saldo è 900 13/05/2011 Gestione della concorrenza

Livelli di isolamento: implementazione Sulle scritture si ha sempre il 2PL stretto (e nonostante ciò che dicono i manuali non sempre si evita la perdita di aggiornamento; le transazioni in scrittura debbono avere il livello massimo di isolamento) read uncommitted: nessun lock in lettura (e non rispetta i lock altrui) read committed: lock in lettura (e rispetta quelli altrui), ma senza 2PL repeatable read: 2PL stretto anche in lettura, con lock sui dati serializable: 2PL stretto con lock di predicato 13/05/2011 Gestione della concorrenza

Controllo di concorrenza basato su multiversioni Per le letture: si legge il valore valido all'inizio della transazione Per le scritture: si usano lock per la sola scrittura e una transazione T viene annullata se deve scrivere un dato che è stato modificato da altre transazioni dopo l'inizio di T 13/05/2011 Gestione della concorrenza

Lettura, scrittura, lettura con multiversioni 1000 sul conto A 1000 sul conto B Quanto c'è sul conto A? 1000 Quanto c'è sul conto B? 1000 (il valore all'inizio della transazione) OK, abbiamo 2000! Sposta 500 da A a B Nuovo saldo A: 500 Nuovo saldo B: 1500 13/05/2011 Gestione della concorrenza

Due prelevamenti con multiversioni Quanto c'è sul conto? 1000 Bene, allora prelevo 200 Ok, il nuovo saldo è 800 Ho finito (commit) Quanto c'è sul conto? 1000 Bene, allora prelevo 100 Aspetta, qualcuno sta scrivendo Ho provato a scrivere, ma qualcun altro ha modificato il valore nel frattempo, debbo annullare (rollback) Ricomincio. Quanto c'è sul conto? 800 Ok, il nuovo saldo è 700 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Conclusioni Il controllo di concorrenza è fondamentale per garantire che le operazioni concorrenti leggano dati coerenti non compromettano il contenuto della base di dati Il tutto deve essere fatto senza penalizzare troppo l'efficienza I sistemi offrono buone funzionalità per la gestione della concorrenza basate su due tecniche Locking a due fasi (2PL) Multiversioni Permettono anche di "rinunciare" ad un controllo stringente, ma l'utente deve essere consapevole di ciò che ottiene 13/05/2011 Gestione della concorrenza

Per approfondire il tutto ci vorrebbe molto più tempo Molti dettagli in rete o su libri. Ad esempio il sito del corso di Basi di dati II e quello dei libri di basi di dati, link sulla mia pagina: http://www.dia.uniroma3.it/~atzeni/ 13/05/2011 Gestione della concorrenza

Gestione della concorrenza Grazie! 13/05/2011 Gestione della concorrenza