© Giuseppe Berio – DI - UNITO

Slides:



Advertisements
Presentazioni simili
Tecnologia delle basi di dati: Strutture fisiche di accesso
Advertisements

Architettura MySQL E Motori MySQL L. Vigliano.
Database MySql.
Sicurezza e concorrenza nelle basi di dati
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
Java: programmazione concorrente con condivisione di memoria
Algoritmi e Programmazione
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
Basi di Dati prof. A. Longheu
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Progettazione ER Un database universitario contiene informazioni riguardanti i professori (identificati dal codice fiscale) e informazioni relative ai.
Base di dati Insieme organizzato di dati utilizzati per lo svolgimento delle attività di un ente, azienda, ufficio, persona Es.: elenchi telefonici, elenco.
La Modifica dei Dati in una Base Dati La modifica dei dati contenuti allinterno di una base dati è unoperazione delicata Infatti, ogni potenziale problema.
Elementi di PL/SQL.
L’uso dei database in azienda
Introduzione ai Sistemi Informativi e alle Basi di dati
File.
Tecnologie di un database server: la gestione della concorrenza
Basi di dati attive Paolo Atzeni.
Struttura dei sistemi operativi (panoramica)
Basi di dati Università Degli Studi Parthenope di Napoli
Nataliya Rassadko SQL: Lezione 8 Nataliya Rassadko
Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.
SIMULAZIONE RETE INTERNET INTERNET SERVICE PROVIDER GRUPPO 2 COMMESSA – INFORMATICA GRANATA Corso Sicurezza su Reti II Prof. A. De Santis Anno Accademico.
Le transazioni Itis Max Planck.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Programma del Corso Dati e DBMS DBMS relazionali SQL
Progettazione di una base di dati
Transazioni.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Gestione dell’Informazione: Aspetti Introduttivi
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
Basi di Dati Barbara Catania Aspetti Introduttivi.
Cos’è una transazione? Una transazione è un’unità logica di elaborazione richiesta da un’applicazione che dà luogo a una serie di operazioni fisiche elementari.
Docente: Roberto Basili Fond Inf (a.a ) Introduzione alla Progettazione Concettuale R. Basili.
Dottorato di ricerca Nuove Tecnologie e Informazione Territorio – Ambiente Nozioni fondamentali di Basi di Dati Seminario interno.
Basi di Dati e Sistemi Informativi
Corso di Basi di Dati Il Linguaggio SQL
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
File system distribuito transazionale con replicazione
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
Architettura Centralizzata di un DBMS Relazionale
ITCG “V. De Franchis” - PON FSE Modulo G/1 l’informatica”
Architettura di una CPU
FUNZIONI Dichiarazione: Definizione:
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
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.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Tipo Documento: unità didattica 4 Modulo 14 Compilatore: Antonella Bolzoni Supervisore: Data emissione: Release: Indice: A.Scheda informativa B.Introduzione.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Elementi di PL/SQL. Pl/Sql Il PL/SQL (Procedural Language/Structured Query Language) è un linguaggio di programmazione procedurale di Oracle che costituisce.
Transazioni in MySQL 4 Transazioni in MySQL 4
Basi di Dati e Sistemi Informativi Esercitazione: Il Linguaggio SQL (DDL+DML) Home page del corso:
Le basi di dati.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Anno Architetture dati DBMS Centralizzati Controllo di concorrenza Carlo Batini.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Introduzione alle basi di dati e ai sistemi di gestione di basi di dati.
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:

© Giuseppe Berio – DI - UNITO Transazioni © Giuseppe Berio – DI - UNITO

basedati centralizzata La Metodologia adottata nel Corso Mission Statement + Glossario Lista Funzionalià 3 Descrizione Funzionalità 6 Codice Transazioni In PL/SQL 1 2 4 5 Schema concettuale EA Schema Logico Relazionale Schema Fisico Architettura: basedati centralizzata 7 Verifica & Validazione Determinazione requisiti Specifica dei requisiti Progetto Implementazione 1 2,3 4 5,6 © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Contenuti Elementi preliminari Problemi canonici della concorrenza della transazioni nei DBMS Programmazione di transazioni in PL/SQL © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Transazioni: Motivi Affidabilità protezione da malfunzionamenti (hardware, e del software di base con perdita dei dati nelle memorie centrali) Impedire che programmi possano effettuare “modifiche parziali” su una basedati dovute, ad esempio, a vincoli di integrità non verificati, ad errori durante l’esecuzione dei programmi stessi Controllo della concorrenza Impedire, ragionevolmente, l’uso di dati non completamente elaborati o incerti dovuti all’esecuzione concorrente di più programmi su una basedati A C I D © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Proprietà ACID A atomicity C consistency I isolation D durability © Giuseppe Berio – DI - UNITO

Architettura di un DBMS Relazionale Gestore autorizzazioni Gestore catalogo Ottimizzatore Esecutore piani d’accesso Gestore accesso Gestore strutture di memorizzazione Gestore affidabilità Gestore concorrenza Gestore buffer Gestore memoria permanente Moduli di gestione delle transazioni Dati © Giuseppe Berio – DI - UNITO

Definizione di Transazione in ambiente relazionale Una transazione è una sequenza d’istruzioni (in SQL) su una basedati, con un inizio ed una fine In generale, la fine della transazione può essere esplicita attraverso le due istruzioni seguenti: Commit Rollback L’istruzione di rollback può essere implicita cioè eseguita dal DBMS e non parte della transazione © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Database Voli e Prenotazioni Tratte(NumVolo, Da, A, ora-partenza, ora-arrivo) Voli(NumVolo, DataVolo, aeroplano, posti-totali) Tariffe-disponibili(id-tariffa, NumVolo, DataVolo, num-posti, prezzo) Prenotazioni(id-prenotazione, id-passeggero, NumVolo, DataVolo, prezzo) Transazione che prenota, per un dato cliente, un posto di minor prezzo nel volo 13 per il 13 Luglio. (b) Transazione che stampa un rapporto contenente per ogni volo la percentuale di posti che sono prenotati e il guadagno totale. Database Conti Bancari e Clienti Clienti(cod-fiscale, nome-cognome, indirizzo, citta’, cap, telefono, stato) Conti(num-conto, cod-fiscale, saldo) Operazioni(num-conto, num-operazione, data-operazione, somma, sportello) Transazione che deposita una somma di denaro su un determinato conto corrente. (b) Transazione che trasferisce soldi da un conto corrente ad un altro. (c) Transazione che trova la somma dei prelievi relativi ad uno specifico sportello (automatico o meno). (d) La transazione che stampa la lettera (la quale informa di un nuovo tipo di conto) per ogni cliente la cui somma dei saldi di ciascun conto supera 10000 Euro. © Giuseppe Berio – DI - UNITO

Fondamenti della teoria della gestione della concorrenza Update Emp Set Department = ‘Sales’ Where code=567 Update Emp Set Department = ‘Sales’ Where code=567 W(t) R(t) Update Emp Set Department = ‘Sales’ Where Department = ‘Service’ And Position <> ‘Manager’ R(t1) R(t2)…. W(t1) W(t2)…. © Giuseppe Berio – DI - UNITO

Aggiornamento fantasma P1 Passo P2 1 r (x) 2 x := x – 10 3 w (x) sum := 0 4 r (x) 5 r (y) 6 sum := sum +x 7 sum := sum + y 8 9 r (y) 10 y := y + 10 11 w (y) schedule somma sbagliata Osservazioni: il problema è l’interleaving r2(x) w2(x) r1(x) r1(y) r2(y) w2(y) il problema non sorge se l’esecuzione è sequenziale © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Lost Update P1 Passo P2 /* x = 100 */ r (x) 1 2 r (x) x := x+100 4 x := x+200 w (x) 5 /* x = 200 */ 6 w (x) /* x = 300 */ update “lost” Osservazione: il problema è l’interleaving r1(x) r2(x) w1(x) w2(x) il problema non sorge se l’esecuzione è sequenziale © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Dirty Read P1 Passo P2 r (x) 1 x := x + 100 2 w (x) 3 4 r (x) 5 x := x - 100 failure & rollback 6 7 w (x) non può assicurare la validità dei dati letti Osservazione: il rollback di una transazione incide sulle transazioni concorrenti il problema non sorge se l’esecuzione è sequenziale © Giuseppe Berio – DI - UNITO

Letture inconsistenti P1 Passo P2 1 r (x) 2 x := x – 10 3 w (x) r (x) 4 5 6 x := x + 20 7 w (x) r (x) 8 Non legge il medesimo valore Osservazioni: il problema è l’interleaving r2(x) w2(x) r1(x) w2(x) r1(x) il problema non sorge se l’esecuzione è sequenziale © Giuseppe Berio – DI - UNITO

Sequenzialità e Concorrenza Ipotesi (conti correnti): 500000 clienti, 30000 transazioni di richiesta deposito, Necessario capire cosa deve essere concorrente e cosa deve essere sequenziale: teoria della concorrenza Un cliente potrebbe attendere: 30000*0,1’’=3000’’ 30000*0,01’’=300’’ 30000*0,001’’=30’’ © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Serializzabilità Dato un qualunque schedule tra due o più transazioni, si dice serializzabile sse il risultato della sua esecuzione è uguale ad uno schedule sequenziale delle transazioni Uno schedule relativo a un insieme di transazioni è sequenziale sse corrisponde all’esecuzione in una certa sequenza della transazioni stesse La serializzabilità non coincide con la sequenzialità © Giuseppe Berio – DI - UNITO

Livelli di Isolamento SQL 92 Livello Letture Sporche Letture inconsistenti Fantasma Read uncommitted Si Read committed No Repeatable read Serializable SQL 92 © Giuseppe Berio – DI - UNITO

Realizzazione del Controllo della Concorrenza nei DBMS Controllo ottimistico La probabilità di dover annullare ciò che è stato fatto poiché non si ha serializzabilità è bassa Efficiente Controllo pessimistico La probabilità di dover annullare ciò che è stato fatto poiché non si ha serializzabilità è alta Molto sicuro © Giuseppe Berio – DI - UNITO

Gestire la serializzabilità con il Locking a due fasi © Giuseppe Berio – DI - UNITO

Funzionamento del locking a due fasi P1 Passo P2 1 Lock(x,w) r (x) 2 x := x – 10 3 w (x) 4 Lock(y,w) 5 r (y) 6 y := y + 10 7 w (y) 8 Unlock(x) 9 Unlock(y) sum := 0 10 Lock(x,r) 11 Lock(y,r) 12 r (x) 13 r (y) 14 sum := sum +x 15 sum := sum + y 16 Unlock(x) 17 Unlock(y) 18 Fase 1 Fase 2 © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO Deadlock P1 Time P2 1 Lock(y,w) Lock(x,w) 2 Lock(y,w) 3 4 Lock(x,w) © Giuseppe Berio – DI - UNITO

Un problema aggiuntivo: il fantasma Emp Jones Service Clerk 20000 Meier Service Clerk 22000 Paulus Service Manager 42000 Smyth Toys Cashier 25000 Brown Sales Clerk 28000 Albert Sales Manager 38000 Name Department Position Salary Update transaction t: Delete From Emp Where Department = ‘Service’ And Position = ‘Manager’ Insert Into Emp Values (‘Smith’, ‘Service’, ‘Manager’, 40000) (c) Update Emp Set Department = ‘Sales’ And Position <> ‘Manager’ (‘Stone’, ‘Service’, ‘Clerk’, 13000) Retrieval transaction q: Select Name, Position, Salary From Emp Where Department = ‘Service’ Retrieval transaction p: Select Name, Position, Salary From Emp Where Department = ‘Sales’ Osservazioni: Interleaving di q e t produce un cosiddetto fantasma Mettere un lock sui record nelle tabelle non risolve il problema ma è necessario passare ad un lock su predicato © Giuseppe Berio – DI - UNITO

Gestione dell’affidabilità (in breve) Transazione: Delete From Emp Where Department = ‘Service’ And Position = ‘Manager’ Commit; Controllo della concorrenza Gestore dell’affidabilità File di log (del, BeforeState(p1!)); ….; (del, BeforeState(pn!))….commit; Dati © Giuseppe Berio – DI - UNITO

Controllo della Concorrenza in Oracle Controllo della concorrenza multiversione; transazioneT1 transazione T2 Snapshot 2 Snapshot 1 dato first commiter wins © Giuseppe Berio – DI - UNITO

Programmazione di Transazioni Una transazione è programmata attraverso una serie di istruzioni SQL, in un qualche linguaggio di programmazione (e con un certo approccio) E’ quindi necessario distinguere tra: il programma attraverso cui si programma(no) la(e) transazione(i) la singola transazione Ciò implica anche la distinzione del concetto di terminazione che può essere del programma della transazione © Giuseppe Berio – DI - UNITO

Introduzione al PL/SQL Un linguaggio di programmazione completo di tutte le istruzioni e strutture dati di un linguaggio di programmazione imperativo Permette di usare select, update, delete e insert nel programma Permette di usare commit e rollback nel programma Ipotizza un controllo ottimistico della concorrenza Usa le eccezioni per gestire eventuali problemi che possono sorgere nell’esecuzione di un’istruzione Progettato anche per ORACLE come ORDBMS © Giuseppe Berio – DI - UNITO

© Giuseppe Berio – DI - UNITO   if qt1<> 0 then begin update Merce set quantitàdiponibile=quantitàdisponibile-qt1where tipo=1; update OrdiniTipo1 set stato='evaso' where codordine=ilcodordine; exception when others then RAISE MerceInsufficente; end; if qt2<> 0 then update Merce set quantitàdiponibile=quantitàdisponibile-qt2 where tipo=2; update OrdiniTipo2 set stato='evaso' where codordine=ilcodordine; if qt3<> 0 then update Merce set quantitàdiponibile=quantitàdisponibile-qt3 where tipo=3; update OrdiniTipo3 set stato='evaso' where codordine=ilcodordine; Commit; Exception when MerceInsufficente then begin rollback; :riprovare:='riprovare'; end; when others then rollback; / print(riprovare); (SQLPLUS) variable riprovare varchar; (SQLPLUS) Declare ilcodordine varchar2(5); qt1,qt2,qt3 number(6); MerceInsufficente Exception;   begin begin select quantitàordinata into qt1 from OrdiniTipo1 where codordine=ilcodordine; exception when no_data_found then qt1:=0; end; begin select quantitàordinata into qt2 from OrdiniTipo2 where codordine=ilcodordine; exception when no_data_found then qt2:=0; end; begin select quantitàordinata into qt3 from OrdiniTipo3 where codordine=ilcodordine; exception when no_data_found then qt3:=0; end; © Giuseppe Berio – DI - UNITO