Tecnologie Web T Gestione delle Transazioni e Livelli di Isolamento

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tecnologie Web T Gestione delle Transazioni e Livelli di Isolamento"

Transcript

1 Tecnologie Web T Gestione delle Transazioni e Livelli di Isolamento Home Page del corso: Versione elettronica: 4.03.Transazioni.pdf Versione elettronica: Transazioni-2p.pdf 1 Introduzione Caratteristica di base delle nostre applicazioni Web è quella di avere un elevato numero di utenti che accedono, anche in maniera concorrente, ai dati (base di dati) verso i quali si interfacciano Il sistema di gestione dei dati (DBMS) deve garantire affidabilità e prestazioni la base di dati deve essere sempre in uno stato consistente La gestione della concorrenza e della affidabilità nell'accesso ai dati è una delle proprietà fondamentali che ci offrono i moderni DBMS Un concetto cardine è quello di transazione 2 1

2 Transazioni Informalmente, una transazione è una sequenza di operazioni che può concludersi con un successo o un insuccesso in caso di successo: il risultato delle operazioni deve essere permanente in caso di insuccesso: si deve tornare allo stato precedente all'inizio della transazione 3 Definizione di transazione Transazione parte di programma caratterizzata da un inizio (begintransaction, start transaction in SQL), una fine (end-transaction, non esplicitata in SQL) e al cui interno deve essere eseguito una e una sola volta uno dei seguenti comandi: commit work per terminare correttamente rollback work per abortire la transazione Un sistema transazionale (OLTP) è in grado di definire ed eseguire transazioni per conto di un certo numero di applicazioni concorrenti 4 2

3 Applicazioni e transazioni L'esecuzione di un programma può essere visto come una sequenza di transazioni (eventualmente intervallate da operazioni non relative ai dati) begin T1 AZIONI TRANSAZIONE T1 PROGRAMMA APPLICATIVO end T1 begin T2 AZIONI TRANSAZIONE T2 end T2 5 Una transazione SQL Esempio: trasferimento di 10 unità dal conto al conto start transaction; update ContoCorrente set Saldo = Saldo + 10 where NumConto = 12202; update ContoCorrente set Saldo = Saldo - 10 where NumConto = 42177; commit work; 6 3

4 Una transazione con varie decisioni Esempio: trasferimento di 10 unità dal conto al conto con il controllo che il saldo del cc da cui si preleva sia positivo start transaction; update ContoCorrente set Saldo = Saldo + 10 where NumConto = 12202; update ContoCorrente set Saldo = Saldo 10 where NumConto = 42177; select Saldo as A from ContoCorrente where NumConto = 42177; if (A>=0) then commit work; else rollback work; 7 Il concetto di transazione Una definizione più precisa di transazione: unità di elaborazione che gode delle proprietà "ACIDE" (ACID): Atomicità Consistenza Isolamento Durabilità (persistenza) 8 4

5 ACID: Atomicità Una transazione è una unità atomica (tutto o niente) di elaborazione È fondamentale per garantire l'integrità dei dati Se qualcosa va storto il sistema deve essere in grado di annullare tutti i cambiamenti fatti a partire dall'inizio della transazione La base di dati non può essere lasciata in uno stato intermedio un guasto o un errore prima del commit debbono causare l'annullamento (UNDO) delle operazioni svolte un guasto o errore dopo il commit non deve avere conseguenze Esito Commit = caso "normale" e più frequente Abort (o rollback) richiesto dall'applicazione = suicidio richiesto dal sistema (violazione dei vincoli, concorrenza, incertezza in caso di fallimento) = omicidio 9 ACID: Consistenza La transazione rispetta i vincoli di integrità Conseguenza: se lo stato iniziale è corretto anche lo stato finale è corretto 10 5

6 ACID: 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 Conseguenza: una transazione non espone i suoi stati intermedi 11 ACID: Durabilità (Persistenza) Gli effetti di una transazione andata in commit non vanno perduti ("durano per sempre"), anche in presenza di guasti Commit significa impegno 12 6

7 Controllo di concorrenza Se la proprietà di isolamento non è completamente soddisfatta, due (o più) transazioni effettuate su un database consistente possono portare il database in uno stato inconsistente Due azioni sullo stesso oggetto si dicono essere in confitto se almeno una delle due è una operazione di scrittura Date due transazioni T1 e T2 in conflitto, si possono verificare tre tipologie di situazioni anomale conflitto Write-Read (W-R): T2 legge un dato precedentemente scritto da T1 conflitto Read-Write (R-W): T2 scrive un dato precedentemente letto da T1 conflitto Write-Write (W-W): T2 scrive un dato precedentemente scritto da T1 13 Conflitti WR: Reading uncommitted data Si può verificare una anomalia se una transazione T2 legge un dato che è stato modificato da una transazione T1 non ancora conclusa (quindi uncommitted) In particolare questa situazione può generare letture sporche 14 7

8 Lettura sporca t 1 traferisce 100 da A a B t 2 incrementa sia A che B del 6% N.B. Assumiamo sempre un begin of transaction (BOT ) come prima operazione di ogni transazione 15 Lettura sporca supponiamo che sia A che B all'inizio valgano 1000: con una esecuzione seriale t 1 t 2 t 1 t 2 tempo r 1 (A) A = A w 1 (A) r 1 (B) B = B w 1 (B) commit r 2 (A) A = A * 1.06 w 2 (A) r 2 (B) B = B * 1.06 w 2 (B) commit A = 900*1.06 = 954 B = 1100*1.06 = 1166 A+B=

9 Lettura sporca supponiamo che sia A che B all'inizio valgano 1000: con una esecuzione seriale t 2 t 1 t 1 t 2 tempo r 1 (A) A = A w 1 (A) r 1 (B) B = B w 1 (B) commit r 2 (A) A = A * 1.06 w 2 (A) r 2 (B) B = B * 1.06 w 2 (B) commit A = 960 B = 1160 A+B = Lettura sporca supponiamo che sia A che B all'inizio valgano 1000: con esecuzione concorrente di t 2 t 1 t 1 t 2 tempo r 1 (A) A = A w 1 (A) r 1 (B) B = B w 1 (B) commit r 2 (A) A = A * 1.06 w 2 (A) r 2 (B) B = B * 1.06 w 2 (B) commit t 2 ha letto uno stato intermedio ("sporco") A = 954 B = 1160 NB: alla fine qualcuno ci ha perso... e il totale cambia: chi ha guadagnato? 18 9

10 Conflitti RW: Unrepeatable read Si possono verificare diverse anomalie se una transazione T2 cambia il valore di un dato che è stato letto da una transazione T1 mentre T1 è ancora in esecuzione In particolare, questa situazione può generare: perdita di aggiornamento, lettura inconsistente (unrepeatable read) 19 Letture inconsistenti t 1 legge due volte x : t 1 t 2 tempo r 1 (x) r 1 (x) commit r 2 (x) x = x + 1 w 2 (x) commit t 1 legge due valori diversi per x! 20 10

11 Perdita di aggiornamento Due transazioni identiche: t 1 : r(x), x = x + 1, w(x) t 2 : r(x), x = x + 1, w(x) Inizialmente x=2; dopo una esecuzione seriale x=4 Una esecuzione concorrente: tempo t 1 t 2 r 1 (x) x = x + 1 w 1 (x) commit r 2 (x) x = x + 1 w 2 (x) commit Un aggiornamento viene perso: x = 3 21 Conflitti WW: Overwriting uncommitted data Si possono verificare anomalie se una transazione T2 sovrascrive il valore di un dato che è già stato modificato da una transazione T1, mentre T1 è ancora in esecuzione questa situazione può generare effetti fantasma 22 11

12 Effetti fantasma vincolo: x+y+z=1000 tempo t 1 t 2 sum = 0 read(x) sum = sum + x read(y) sum = sum + y read(z) sum = sum + z commit read(y) y = y write(y) read(z) z = z write(z) commit T1 calcola in maniera errata la somma di x, y, z (supponiamo T2 stia spostando soldi dal conto y al conto z: il totale di cassa non cambia per T1 invece si!) 23 Gestione di transazioni mediante lock I DBMS per evitare anomalie nelle transazione concorrenti usano diverse tecniche Una delle più comuni è basata su lock Il lock è un meccanismo che blocca l'accesso ai dati ai quali una transazione accede ad altre transazioni lock a livello di riga, tabella, database lock in operazioni di scrittura/lettura Quando una risorsa è bloccata, le transazioni che ne richiedono l'accesso vengono messe in coda quindi devono aspettare (che il lock sia rimosso) In sostanza, questo è un meccanismo efficace, ma influisce sulle prestazioni 24 12

13 Livelli di isolamento Idealmente vorremmo avere sempre garantita la proprietà di isolamento delle transazioni Ma questa proprietà ha dei costi che possono limitare le prestazioni del sistema I DBMS offrono diversi livelli di isolamento: maggiori restrizioni, minori prestazioni Il programmatore deve conoscere i livelli di isolamento e scegliere quello sufficiente ai propri obiettivi 25 Livelli di isolamento SQL SERIALIZABLE assicura che la transazione T legge solo cambiamenti fatti da transazioni concluse nessun valore letto o scritto da T verrà cambiato da altre transazione finché T non è conclusa se T legge un insieme di valori acceduti secondo qualche condizione di ricerca, l'insieme non viene modificato da altre transazione finché T non è conclusa REPEATABLE READ assicura che la transazione T legge solo cambiamenti fatti da transazioni concluse nessun valore letto o scritto da T verrà cambiato da altre transazione finché T non è conclusa READ COMMITTED assicura che la transazione T legge solo cambiamenti fatti da transazioni concluse T non vede nessun cambiamento eventualmente effettuato da transazioni concorrenti non concluse tra i valori letti all'inizio di T READ UNCOMMITTED a questo livello di isolamento una transazione T può leggere modifiche fatte ad un oggetto da un transazione in esecuzione; ovviamente l'oggetto può essere cambiato mentre T è in esecuzione. Quindi T è soggetta a effetti fantasma 26 13

14 Livelli di isolamento SQL 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 è sempre evitata Inoltre le transazioni possono essere definite read-only 27 Livelli di isolamento e anomalie livello di isolamento lettura sporca lettura inconsistente effetto fantasma READ UNCOMMITTED READ COMMITTED REPEATABLE READ può verificarsi può verificarsi può verificarsi NO può verificarsi può verificarsi NO NO può verificarsi SERIALIZABLE NO NO NO 28 14

15 Transazioni in SQL START TRANSACTION SET TRANSACTION ISOLATION LEVEL livello istruzioni SQL COMMIT 29 Transazioni in JDBC Scelta della modalità delle transazioni: un metodo definito nell'interfaccia Connection: setautocommit(boolean autocommit) connection.setautocommit(true) (default) "autocommit ": ogni operazione è una transazione connection.setautocommit(false) gestione delle transazioni da programma connection.commit() connection.rollback() N.B. non c'èstart transaction 30 15

16 JDBC e livelli di isolamento Il metodo settransactionisolation() permette di modificare il livello di isolamento delle transazioni Riceve un parametro intero che può assumere uno dei valori costanti definiti nella interfaccia Connection TRANSACTION_NONE: le transazioni non vengono supportate. Passare questo parametro a settransactionisolation() è equivalente ad una chiamata al metodo setautocommit(true) TRANSACTION_READ_UNCOMMITTED: nessun livello di isolamento è garantito, quindi possono presentarsi tutte le anomalie 31 JDBC e livelli di isolamento TRANSACTION_READ_COMMITTED: vengono prevenute solo le letture sporche. Le altre anomalie possono ancora presentarsi TRANSACTION_REPEATABLE_READ: possono presentarsi solo inserimenti fantasma TRANSACTION_SERIALIZABLE: è il massimo livello di isolamento. Nessuna anomalia può presentarsi 32 16

17 Esempio transazioni con JDBC public void evadiordine (int codprodotto, String idordine, int qnt, Connection con) throws PersistenceException { try { try { con.setautocommit(false); con.setautocommit(false); con.settransactionlevel(connection.transaction_repeatable_read); PreparedStatement PreparedStatement updateprod updateprod = = con.preparestatement("update prodotti SET quantita=(quantita -?) WHERE codiceprodotto =? "); updateprod.setint(1, updateprod.setint(1, codprodotto); codprodotto); updateprod.setint(2, updateprod.setint(2, qnt); qnt); PreparedStatement PreparedStatement updateord = updateord = con.preparestatement("update con.preparestatement("update ordini SET ordini stato = SET 'evaso' stato where = 'evaso' idordine=?"); where idordine=?"); updateord.setint(1, updateord.setint(1, idordine); idordine); int nprod = int prepareprod.executeupdate(); nprod = prepareprod.executeupdate(); int nord = int prepareord.executeupdate(); nord = prepareord.executeupdate(); if (nprod+nord if (nprod+nord!= 2)!= 2) con.rollback(); con.rollback(); else else con.commit(); con.commit(); } catch (SQLException ex) { try } catch { (SQLException ex) { con.rollback(); try { con.rollback(); throw new PersistenceException("Transaction failed: " + ex.getmessage()); throw new PersistenceException("Transaction failed: " + ex.getmessage()); } catch (SQLException sqx) { } catch (SQLException sqx) { throw new PersistenceException("Rollback failed: sqx.getmessage()); throw new PersistenceException("Rollback failed: " + sqx.getmessage()); } } } 33 JDBC e livelli di isolamento Attenzione: non tutti i DBMS supportano le transazioni e non tutti quelli che le supportano permettono l'impostazioni di tutti i livelli di isolamento previsti da JDBC È compito del programmatore che usa l'api JDBC verificare le effettive capacità del DBMS in uso A tal fine l'interfaccia Connection mette a disposizione il metodo getmetadata(), che restituisce un oggetto DatabaseMetaData 34 17

18 JDBC e livelli di isolamento L'interfaccia DatabaseMetaData offre metodi per reperire informazioni sul DBMS In particolare, per verificare il supporto alle transazioni, abbiamo i metodi: supportstransactions(): restituisce true se le transazioni sono supportate dal database, false se non lo sono. In questo ultimo caso, il metodo commit() non esegue alcuna operazione e il livello di isolamento è sempre TRANSACTION_NONE supportstransactionisolationlevel(int): permette di sapere se il DBMS supporta il livello di isolamento passato come parametro (secondo le costanti definite dall'interfaccia Connection nella slide precedente) 35 JDBC e livelli di isolamento import java.sql.*; public class TransactionCapabilities { public static void main(string[] args) throws SQLException { try { Class.forName("COM.ibm.db2.jdbc.app.DB2Driver"); } catch(classnotfoundexception e) { System.err.println("Driver non trovato"); } String url = "jdbc:db2:tw_stud"; Connection con = null; try { con = DriverManager.getConnection(url, ******", ******"); }catch(sqlexception e){ System.err.println("Connessione non restituita"); } try { DatabaseMetaData dbmetadata = con.getmetadata(); if (dbmetadata.supportstransactions()) System.out.println("tranzazioni supportate"); if (dbmetadata.supportstransactionisolationlevel(connection.transaction_read_uncommitted)) System.out.println("TRANSACTION_READ_UNCOMMITTED"); if (dbmetadata.supportstransactionisolationlevel(connection.transaction_read_committed)) System.out.println("TRANSACTION_READ_COMMITTED"); if (dbmetadata.supportstransactionisolationlevel(connection.transaction_repeatable_read)) System.out.println("TRANSACTION_REPEATABLE_READ"); if (dbmetadata.supportstransactionisolationlevel(connection.transaction_serializable)) System.out.println("TRANSACTION_SERIALIZABLE"); } catch(sqlexception e){ System.err.println("Errori lettura metadati"); } finally { con.close(); } } } 36 18

19 Limiti di JDBC JDBC rappresenta una buona soluzione per la gestione di transazioni che manipolano un unico DB, ovvero che coinvolgono una unica Connection! In sistemi che manipolano dati appartenenti a diversi DB, ogni unità di lavoro richiede l accesso a più di una risorsa in questi casi non è possibile garantire la propietà ACID di atomicità con JDBC! Occorre un transaction manager in grado di gestire diverse sorgenti dati (DB) in un unico sistema transazionale 37 Java Transaction API (JTA) Java Transaction API (JTA) fornisce un servizio per la gestione di transazioni distribuite per la piattaforma J2EE Una transazione distribuita coinvolge un transaction manger e uno o più resource manger (ovvero qualunque tipo di datastore persistente) Il transaction manger è responsabile del coordinamento di tutti i partecipanti alla transazione 38 19

20 JTA JTA permette l interazione con lo sviluppatore mediante l interfaccia javax.transaction.usertransaction e i metodi begin(), commit() e rollback() Starting a transaction with JTA: Example import javax.transaction.*; import javax.naming.*; //... UserTransaction utx = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction"); utx.begin(); //... DataSource ds = obtainxadatasource(); Connection conn = ds.getconnection(); pstmt = conn.preparestatement("update MOVIES..."); pstmt.setstring(1, "Spinal Tap"); pstmt.executeupdate(); //... utx.commit(); // Transazioni e Hibernate Come visto nelle precedenti lezioni, Hibernate astrae dalle API JDBC/JTA sottostanti livello di applicazione può essere trasparente a questi dettagli Hibernate espone l interfaccia org.hibernate.transaction che permette di lavorare on top a JDBC e JTA Rappresenta la demarcazione unificata delle transazioni Compatibile sia a JDBC che a JTA Il maggior beneficio di Hibernate rispetto a JDBC e JTA è di permettere stretta integrazione con il contesto di persistenza Es. flush automatico di Session al commit 40 20

21 Transazioni e Hibernate: Esempio import java.util.*; import org.hibernate.*; import persistence.hibernateutil; //... //First unit of work Session session = HibernateUtil.getSessionFactory().openSession(); Transaction tx = session.begintransaction(); User user = new User("pippo"); String userid = (String) session.save(user); tx.commit(); session.close(); // Hibernate Come già sappiamo, l interfaccia principale di Hibernate è Session All'apertura di un nuovo oggetto della classe Session metodo opensession()della classe SessionFactory viene creata una nuova connessione JDBC con la base di dati di default, Hibernate imposta l'autocommit a false ; dunque comincia a tutti gli effetti una transazione JDBC 42 21

22 Hibernate Una Session Hibernate si dice essere pigra ; questo è un punto a favore di Hibernate La Session non consuma alcuna risorsa fino a che le stesse non sono strettamente necessarie Solo all inizio di una transazione viene resa disponibile una Connection dal pool di connessioni La chiamata begintransaction() si traduce in setautocommit(false) nella Connection JDBC corrispondente 43 Hibernate Il blocco di statement SQL di una transazione sono eseguiti seguendo la regola il più tardi possibile (write-behind ), ovvero al flushing del contesto di persistenza della Session Ciò accade di default al commit() di Transaction Dopo il commit (o il roll-back) della transazione la connessione è rilasciata e unbound dalla Session L inizio di una nuova transazione con la stessa Session necessita di una nuova connessione dal pool di connessioni disponibili 44 22

23 Locking ottimistico di sessione In caso di accesso concorrente, affinché non occorrano anomalie di tipo lost-update, Hibernate prevede la possibilità di abilitare un meccanismo di locking ottimistico tale che nel momento in cui viene invocato il flushing, verifica se la porzione della base di dati che sarà modificata non sia cambiata se è cambiata lancia una eccezione StaleObjectStateException Per abilitare il locking ottimistico, nell'elemento class del file di mapping relativo alla classe su cui verte la modifica, è necessario definire l'attributo optimisticlock pari a all 45 Long-lived transactions Tra il momento in cui si leggono i dati dal DB ed il momento in cui eventuali modiche si rendono persistenti può trascorrere molto tempo Hibernate applica il pattern session-per-conversation: è necessario disabilitare il flushing automatico chiamando il metodo setflushmode(flushmode.manual) quando la sessione è aperta l'isolamento è garantito in quanto, abilitando il locking ottimistico, le modiche fatte in transazioni concorrenti sono riconosciute l'atomicità è garantita dal fatto che il flushing viene eseguito solo al termine della transazione, e se la sessione viene chiusa senza fare il flushing, la transazione viene abortita 46 23

24 Controllo ottimistico di concorrenza Per la gestione efficiente di accessi concorrenti Hibernate sfrutta la tecnica Optimistic Concurrency Control (OCC) OCC si basa sull assunzione che la maggior parte delle transazioni verso DB non sono in conflitto con altre transazioni; questo permette di essere piuttosto permissivi nel rilasciare la possibilità di esecuzione Se i conflitti sono rari, post-validazioni possono essere svolte efficientemente => alto throughput OCC sfrutta versioning dei dati per ottenere elevati gradi di concorrenza e alta scalabilità Version checking sfrutta numeri di versione o timestamp per fare la detection di aggiornamenti che possono determinare conflitti 47 Riferimenti JDBC API: index.html Hibernate API: 3.5/api/ Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di dati Architetture e linee di evoluzione, McGraw-Hill Italia, 2009 Christian Bauer and Gavin King. Java Persistence with Hibernate, Manning 48 24

Le transazioni. Dott. Doria Mauro doriamauro@gmail.com

Le transazioni. Dott. Doria Mauro doriamauro@gmail.com Hibernate Le transazioni Dott. Doria Mauro doriamauro@gmail.com Introduzione La demarcazione delle transazioni può essere fatta: In maniera programmatica: demarcazione all interno del codice applicativo.

Dettagli

Il linguaggio SQL: transazioni

Il linguaggio SQL: transazioni Il linguaggio SQL: transazioni Sistemi Informativi T Versione elettronica: 4.8.SQL.transazioni.pdf Cos è una transazione? Una transazione è un unità logica di elaborazione che corrisponde a una serie di

Dettagli

Tecnologia di un Database Server (centralizzato) Introduzione generale

Tecnologia di un Database Server (centralizzato) Introduzione generale Introduzione Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Introduzione generale Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

Linguaggio SQL: costrutti avanzati

Linguaggio SQL: costrutti avanzati Linguaggio SQL: costrutti avanzati Gestione delle transazioni Introduzione Transazioni in SQL Proprietà delle transazioni 2 Pag. 1 1 Gestione delle transazioni Esempio applicativo Operazioni bancarie operazione

Dettagli

Basi di Dati prof. A. Longheu. 5 Progettazione fisica

Basi di Dati prof. A. Longheu. 5 Progettazione fisica Basi di Dati prof. A. Longheu 5 Progettazione fisica Progettazione Fisica Per effettuare la progettazione fisica, ossia l implementazione reale del modello logico creato nella fase della progettazione

Dettagli

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo

Pag. 1. Gestione delle transazioni. Linguaggio SQL: costrutti avanzati. Esempio applicativo. Gestione delle transazioni. Prelievo. Esempio applicativo Gestione delle transazioni Introduzione Transazioni in SQL Linguaggio SQL: costrutti avanzati 2 applicativo Operazioni bancarie operazione di prelievo dal proprio conto corrente mediante bancomat Gestione

Dettagli

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS)

SQL. Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) 1 SQL Laboratorio di Progettazione di Basi di Dati (CdS in Informatica e TPS) a.a. 2014/2015 http://www.di.uniba.it/~lisi/courses/basi-dati/bd2014-15.htm Dott.ssa Francesca A. Lisi dott.ssa Francesca A.

Dettagli

ORM: Approccio DAO. Versione preliminare. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma

ORM: Approccio DAO. Versione preliminare. Antonella Poggi. Dipartimento di informatica e Sistemistica Sapienza Università di Roma ORM: Approccio DAO Versione preliminare Antonella Poggi Dipartimento di informatica e Sistemistica Sapienza Università di Roma Progetto di Applicazioni Software Anno accademico 2008-2009 Questi lucidi

Dettagli

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO

Introduzione. 8- Programmazione di una base di dati attraverso JDBC ESEMPIO 8- Programmazione di una base di dati attraverso JDBC Introduzione ai differenti approcci - JDBC: Architettura e Programmazione Introduzione Nella pratica gli utenti finali accedono al contenuto di una

Dettagli

Esecuzione concorrente di transazioni

Esecuzione concorrente di transazioni Esecuzione concorrente di transazioni A L B E R T O B E L U S S I P A R T E I I A N N O A C C A D E M I C O 2 0 1 1-2 0 1 2 Tecniche applicate nei DBMS Le tecniche per il controllo della concorrenza che

Dettagli

BENEDETTI ALESSANDRO Matricola :252805 PROGETTO DI TECNOLOGIA DELLE BASI DI DATI PARTE 2

BENEDETTI ALESSANDRO Matricola :252805 PROGETTO DI TECNOLOGIA DELLE BASI DI DATI PARTE 2 BENEDETTI ALESSANDRO Matricola :252805 PROGETTO DI TECNOLOGIA DELLE BASI DI DATI PARTE 2 Testo: Sviluppare semplici programmi che permettano di verificare i diversi livelli di isolamento previsti da SQL

Dettagli

L architettura di un DBMS

L architettura di un DBMS L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze

Dettagli

TRANSAZIONI DISTRIBUITE TRANSAZIONI

TRANSAZIONI DISTRIBUITE TRANSAZIONI TRANSAZIONI DISTRIBUITE Transazioni distribuite Atomicità di una transazione distribuita Protocollo Two-Phase Commit Gestione dell affidabilità Fallimenti durante il 2PC Gestione della concorrenza Serializzabilità

Dettagli

Transazioni in SQL. Nicola Vitacolonna Corso di Basi di Dati Università degli Studi di Udine 4 dicembre 2013

Transazioni in SQL. Nicola Vitacolonna Corso di Basi di Dati Università degli Studi di Udine 4 dicembre 2013 Transazioni in SQL Nicola Vitacolonna Corso di Basi di Dati Università degli Studi di Udine 4 dicembre 2013 1 Introduzione Informalmente, una transazione è una sequenza (arbitrariamente lunga) di operazioni

Dettagli

Basi di Dati e Sistemi Informativi. Le Transazioni. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Basi di Dati e Sistemi Informativi. Le Transazioni. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Giuseppe Loseto Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Struttura DBMS Gestore delle interrogazioni Decide le strategie di accesso ai dati per rispondere alle interrogazioni Gestore

Dettagli

DB - Cenni sulla gestione delle transazioni

DB - Cenni sulla gestione delle transazioni transazioni Cenni sulla gestione delle transazioni in DBMS transazioni Cenni sulla gestione delle transazioni in DBMS Basato sulle slides di transazioni Cenni sulla gestione delle transazioni in DBMS Basato

Dettagli

Indicare se i seguenti schedule possono produrre anomalie; i simboli ci e ai indicano l esito (commit o abort) della transazione.

Indicare se i seguenti schedule possono produrre anomalie; i simboli ci e ai indicano l esito (commit o abort) della transazione. Capitolo 2 Esercizio 2.1 Indicare se i seguenti schedule possono produrre anomalie; i simboli ci e ai indicano l esito (commit o abort) della transazione. 1. r1(x), w1(x), r2(x), w2(y), a1, c2 2. r1(x),

Dettagli

Transazioni. Architettura di un DBMS. Utente/Applicazione. transazioni. Transaction Manager. metadati, statistiche.

Transazioni. Architettura di un DBMS. Utente/Applicazione. transazioni. Transaction Manager. metadati, statistiche. Query/update Query plan Execution Engine richieste di indici, record e file Index/file/record Manager comandi su pagine Query Compiler Buffer Manager Lettura/scrittura pagine Architettura di un DBMS Utente/Applicazione

Dettagli

APPENDICE. Procedure in SQL (1)

APPENDICE. Procedure in SQL (1) APPENDICE Procedure in SQL Transazioni in SQL Embedded SQL Remote Procedure Call Appendice 1 Procedure in SQL (1) Standard SQL2 permette di definire procedure, associate a singoli comandi SQL, memorizzate

Dettagli

Transazioni - Parte 1

Transazioni - Parte 1 Basi di dati II Lezione 3 09/10/2008 Caputo Domenico Cosimo, Francesco Pichierri Transazioni - Parte 1 Le transazioni hanno a che fare con la programmabilità delle basi di dati. Prima di trattarle è necessaria

Dettagli

Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni

Transazioni. Capitolo 13. Scrittura immediata e scrittura differita. Concorrenza in un DBMS. Una transazione. Gestione delle transazioni Capitolo 13 Gestione delle transazioni Transazioni L esecuzione concorrente dei programmi utente è essenziale per le buone prestazioni del DBMS Poiché gli accessi al disco sono frequenti e relativamente

Dettagli

SQL e applicazioni. Capitolo 8. SQL e linguaggi di programmazione. Applicazioni ed SQL: architettura. Una difficoltà importante.

SQL e applicazioni. Capitolo 8. SQL e linguaggi di programmazione. Applicazioni ed SQL: architettura. Una difficoltà importante. SQL e applicazioni Capitolo 8 Applicazioni tradizionali In applicazioni complesse, l utente non vuole eseguire comandi SQL, ma programmi, con poche scelte SQL non basta, sono necessarie altre funzionalità,

Dettagli

Introduzione JDBC interfaccia java.sql driver caricare i driver

Introduzione JDBC interfaccia java.sql driver caricare i driver J D B C DISPENSE Introduzione JDBC (Java Database Connectivity) è un interfaccia completamente Java utilizzata per eseguire istruzioni SQL sui database. L'API JDBC si trova nel pacchetto java.sql; contiene

Dettagli

Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill

Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill /XFLGLVXOFRQWUROORGHOODFRQFRUUHQ]D Tratti dal cap. 9 di: Atzeni, Ceri, Paraboschi, Torlone Basi di Dati II edizione, 1999, McGraw-Hill $QRPDOLD /RVW8SGDWH Si considerino le due transazioni identiche: W1

Dettagli

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa.

Quando si sa chiaramente come si deve comportare l applicazione si può analizzare una possibile soluzione applicativa. Introduzione alla tecnologia JMX 1 Viene analizzata l architettura sottostante le Java Managment Extensions (JMX) mostrandone un utilizzo applicativo e analizzando altri possibili scenari d uso di Ivan

Dettagli

Basi di Dati Distribuite

Basi di Dati Distribuite Basi di Dati Distribuite P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone (McGraw-Hill Italia) Basi di dati: architetture linee di evoluzione - seconda edizione Capitolo 3 Appunti dalle lezioni SQL come DDL

Dettagli

Esercitazione su JDBC

Esercitazione su JDBC Esercitazione su JDBC Basi di Dati L Ingegneria dei Processi Gestionali (Ilaria Bartolini - Roberto Cabras) come usare SQL (1) Le istruzioni SQL possono essere eseguite interattivamente Ese JDBC 2 come

Dettagli

Architetture Distribuite

Architetture Distribuite Architetture Distribuite Capitolo 3 Basi di dati Architetture e linee di evoluzione P. Atzeni, S. Ceri, P. Fraternali, S. Paraboschi, R. Torlone 1 Sommario Architetture client-server Basi di dati distribuite

Dettagli

Basi di Dati. prof. Letizia Tanca. Le transazioni e il database server, cenni sui nuovi sistemi per Big Data

Basi di Dati. prof. Letizia Tanca. Le transazioni e il database server, cenni sui nuovi sistemi per Big Data Basi di Dati prof. Letizia Tanca Le transazioni e il database server, cenni sui nuovi sistemi per Big Data (lucidi parzialmente tratti dal libro: Atzeni, Ceri, Paraboschi, Torlone Introduzione alle Basi

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

DBMS ed Applicazioni Motivazioni

DBMS ed Applicazioni Motivazioni DBMS ed Applicazioni Motivazioni Sin ora abbiamo visto SQL come linguaggio per interrogare DBMS da interfaccia interattiva Nella pratica, un efficace sfruttamento delle potenzialità dei DBMS deriva dalla

Dettagli

Non si deve fare ALCUN riferimento alla parte specifica di JDBC.

Non si deve fare ALCUN riferimento alla parte specifica di JDBC. Un applicazione per la quale sia fondamentale l indipendenza dal Database può essere scritta in Java usando le specifiche. (Package java.sql) Non devono essere usate chiamate specifiche del database: Si

Dettagli

Basi di Dati Esercitazione JDBC. Giugno 2007

Basi di Dati Esercitazione JDBC. Giugno 2007 Basi di Dati Esercitazione JDBC Giugno 2007 Esercizi Considerando il seguente schema: Fornitori (CodiceFornitore, Nome, Indirizzo, Citta) Prodotti (CodiceProdotto, Tipo, Marca, Modello) Catalogo (CodiceFornitore,

Dettagli

Transazioni. Transazioni. Transazioni. Definizione di una transazione. Transazione

Transazioni. Transazioni. Transazioni. Definizione di una transazione. Transazione Transazioni Transazioni Per mantenere le informazioni consistenti è necessario controllare opportunamente le sequenze di accessi e aggiornamenti ai dati Gli utenti interagiscono con la base di dati attraverso

Dettagli

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A. 2014 2015. Esercitazione 08 DAO e Hibernate

Università degli Studi di Bologna Facoltà di Ingegneria. Tecnologie Web L-A A.A. 2014 2015. Esercitazione 08 DAO e Hibernate Università degli Studi di Bologna Facoltà di Ingegneria Tecnologie Web L-A A.A. 2014 2015 Esercitazione 08 DAO e Hibernate Agenda Pattern DAO e framework Hibernate progetto d'esempio relativo alla gestione

Dettagli

JDBC di base. Le classi/interfacce principali di JDBC

JDBC di base. Le classi/interfacce principali di JDBC JDBC di base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte completa indipendenza del codice dal tipo di database o di

Dettagli

Architetture distribuite

Architetture distribuite Architetture distribuite -ARC 1 Basi di dati distribuite a RETE : LAN (Local Area Network) WAN (Wide Area Network) b DBMS : Sistema omogeneo Sistema eterogeneo SYBASE ORACLE DB2 CLIENT -ARC 2 Problemi

Dettagli

JDBC versione base. Le classi/interfacce principali di JDBC

JDBC versione base. Le classi/interfacce principali di JDBC JDBC versione base Java Database Connectivity è il package Java per l accesso a database relazionali il package contiene interfacce e classi astratte uno dei pregi è la completa indipendenza del codice

Dettagli

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC

JDBC: Introduzione. Java Database Connectivity (JDBC): parte 1. Schema dei legami tra le classi principali. Principali classi/interfacce di JDBC JDBC: Introduzione Java Database Connectivity (JDBC): parte 1 Gianluca Moro DEIS - Università di Bologna gmoro@deis.unibo.it Java Database Connectivity è il package Java per l accesso a database relazionali

Dettagli

Configurazione di base. Dott. Doria Mauro doriamauro@gmail.com

Configurazione di base. Dott. Doria Mauro doriamauro@gmail.com Hibernate Configurazione di base Dott. Doria Mauro doriamauro@gmail.com I file di configurazione Hibernate prevede l uso dei file di configurazione formato XML. I principali file sono: Un file di configurazione

Dettagli

Tecnologia e Applicazioni Internet 2011/12

Tecnologia e Applicazioni Internet 2011/12 Tecnologia e Applicazioni Internet 2011/12 Lezione 4 - Persistenza Matteo Vaccari http://matteo.vaccari.name/ matteo.vaccari@uninsubria.it Perché usare un DB relazionale? Per l accesso concorrente ai dati

Dettagli

SQL nei linguaggi di programmazione

SQL nei linguaggi di programmazione SQL nei linguaggi di programmazione Atzeni, Ceri, Paraboschi, Torlone Basi Di Dati Modelli e Linguaggi di Interrogazione, McGraw-Hill Italia, Capitolo 6 SQL in Linguaggi di Programmazione L uso diretto

Dettagli

Java: la libreria delle classi

Java: la libreria delle classi Java: la libreria delle classi Applet anatomia di un applet cenni di html La libreria JDBC per l accesso ai database il package java.sql 213 Applet Un applet è una applicazione Java che ha una forma particolare

Dettagli

Gestione delle transazioni. Concetto di transazione

Gestione delle transazioni. Concetto di transazione Dario Maio http://www.csr.unibo.it/~maio/ dmaio@deis.unibo.it Concetto di transazione Una transazione è un unità logica di elaborazione che corrisponde a un insieme di operazioni fisiche elementari (letture/scritture)

Dettagli

Tecnologia di un Database Server (centralizzato) Gestione della concorrenza

Tecnologia di un Database Server (centralizzato) Gestione della concorrenza Concorrenza Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione della concorrenza Angelo Montanari Dipartimento di Matematica e Informatica Università

Dettagli

Recovery manager Gestore della affidabilità

Recovery manager Gestore della affidabilità Riferimenti Basi di Dati Complementi Parte 2: Tecnologie per DBMS Parte 2.5: Recovery Manager Trasparenze parte Recovery manager Basi di Dati Atzeni et al. - Capitolo 2.1, 2.2 Anche: Garcia Molina, Ullman,

Dettagli

Vincoli di Integrità

Vincoli di Integrità Vincoli di Integrità Approccio procedurale Antonella Poggi Dipartimento di informatica e Sistemistica Università di Roma La Sapienza Progetto di Applicazioni Software Anno accademico 2008-2009 Questi lucidi

Dettagli

Gestione del Buffer. Gestione delle Transazioni. Il buffer. Il gestore del buffer 2. Il gestore del buffer 1

Gestione del Buffer. Gestione delle Transazioni. Il buffer. Il gestore del buffer 2. Il gestore del buffer 1 Gestione delle Transazioni Parte terza Argomenti: Gestore del Buffer,Ripristino, File di Log, Protocolli per il ripristino, Savepoint, Shadow Pages, Gestione del Buffer Obiettivi: Minimizzare gli accessi

Dettagli

JDBC. A. Bechini 2004. Accesso a DataD con Java

JDBC. A. Bechini 2004. Accesso a DataD con Java JDBC Accesso a DataD atabase ase con Java Utilizzo di DB da applicazioni esterne Un DB contiene e gestisce dati, importanti per varie operazioni supportate da applicazioni software Come può un applicazione

Dettagli

Siti web centrati sui dati Architettura MVC-2: i JavaBeans

Siti web centrati sui dati Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans 1 ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

TRANSAZIONI. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso.

TRANSAZIONI. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso. Una transazione è una successione di operazioni che si può concludere con successo o con insuccesso. Nel caso di successo, i risultati delle operazioni effettuate devono essere resi definitivi; invece,

Dettagli

JDBC. Dispense per il corso di Ingegneria del Web

JDBC. Dispense per il corso di Ingegneria del Web JDBC Dispense per il corso di Ingegneria del Web Revisione 05/11 Giuseppe Della Penna (giuseppe.dellapenna@di.univaq.it) Dipartimento di Informatica Università degli studi dell'aquila Java Database Connectivity:

Dettagli

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati

Azioni. Select e join non consentono di modificare il contenuto del DB. Inserzione di nuovi dati. Azioni desiderate. Aggiornamento di dati Azioni Select e join non consentono di modificare il contenuto del DB Azioni desiderate Inserzione di nuovi dati Aggiornamento di dati Cancellazione di dati Aggiunta di un record insert into utenti(nome,tel,codice_u)

Dettagli

Architettura MySQL. E Motori MySQL

Architettura MySQL. E Motori MySQL E Motori MySQL Caratteristiche Differente dagli altri DBMS Non perfetta Ma flessibile Gestisce DataWarehouses, OLTP, ecc. Architettura delle Storage Engine Separa il query processing dai task di memorizzazione

Dettagli

Come trattare il risultato di un comando SQL (relazioni) che

Come trattare il risultato di un comando SQL (relazioni) che USO DI SQL DA PROGRAMMI: PROBLEMI 1 Come collegarsi alla BD Come trattare gli operatori SQL Come trattare il risultato di un comando SQL (relazioni) che Come scambiare informazioni sull esito delle operazioni.

Dettagli

Connessione ad una fonte di dati ODBC

Connessione ad una fonte di dati ODBC Linguaggio Java JDBC L architettura JDBC: driver, connessione, statement e result set Invio di comandi SQL Transazioni: COMMIT, ROLLBACK e livelli di isolamento Utizzo avanzato dei result set: cenni Connessione

Dettagli

Introduzione all architettura di un DBMS

Introduzione all architettura di un DBMS Introduzione all architettura di un DBMS 1 Un DBMS deve garantire una gestione dei dati: efficiente concorrente affidabile integra sicura (protetta) Ciascuno degli aspetti precedenti è supportato dal DBMS

Dettagli

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008

Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Basi di dati e Web (Moduli: Laboratorio e Siti Web centrati sui Dati) Prova scritta del 14 luglio 2008 Avvertenze: e severamente vietato consultare libri e appunti; chiunque verrà trovato in possesso di

Dettagli

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3

Mappare il DB senza XML. Introduzione alle annotation di Hibernate3 Introduzione alle annotation di Hibernate3 a cura di Lucio Benfante Hibernate Hibernate è un framework che realizza un object/relational mapping (ORM) fra oggetti Java e strutture di un database relazionale

Dettagli

Laboratorio di reti II: Gestione di database lato server

Laboratorio di reti II: Gestione di database lato server Laboratorio di reti II: Gestione di database lato server Stefano Brocchi brocchi@dsi.unifi.it 23 marzo, 2009 Stefano Brocchi Laboratorio di reti II: Database 23 marzo, 2009 1 / 32 Uso di database lato

Dettagli

Sistemi transazionali. sistemi transazionali 1

Sistemi transazionali. sistemi transazionali 1 Sistemi transazionali sistemi transazionali 1 Ricordiamo le principali caratteristiche dei DBMS condivisione dei dati - concorrenza qualità dei dati - integrità efficienza - caricamento, query, sort controllo

Dettagli

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Gestione delle transazioni Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Transazioni v L esecuzione concorrente dei programmi utente è essenziale per le buone prestazioni del DBMS Poiché

Dettagli

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura

SQL e linguaggi di programmazione Applicazioni ed SQL: architettura SQL e applicazioni Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1996-2002 Capitolo 5: SQL nei linguaggi di programmazione 21/10/2002 In applicazioni complesse, l utente non vuole eseguire

Dettagli

BASI DI DATI TECNOLOGIA DEI SERVER PER BASI DI DATI

BASI DI DATI TECNOLOGIA DEI SERVER PER BASI DI DATI BASI DI DATI TECNOLOGIA DEI SERVER PER BASI DI DATI Prof. Fabio A. Schreiber Dipartimento di Elettronica e Informazione Politecnico di Milano tratto da: Atzeni, Ceri, Paraboschi, Torlone - Basi di Dati

Dettagli

Architettura MVC-2: i JavaBeans

Architettura MVC-2: i JavaBeans Siti web centrati sui dati Architettura MVC-2: i JavaBeans Alberto Belussi anno accademico 2008/2009 Limiti dell approccio SEVLET UNICA La servlet svolge tre tipi di funzioni distinte: Interazione con

Dettagli

Linee guida per la programmazione di transazioni in PL/SQL

Linee guida per la programmazione di transazioni in PL/SQL Linee guida per la programmazione di transazioni in PL/SQL Giuseppe Berio Giuseppe Berio DI - Unito 1 Esempio La transazione deve registrare l evasione di un ordine, rappresentato su più tabelle specializzate

Dettagli

Programmazione Java Avanzata

Programmazione Java Avanzata Programmazione Java Avanzata Accesso ai Dati Ing. Giuseppe D'Aquì Testi Consigliati Eclipse In Action Core J2EE Patterns - DAO [http://java.sun.com/blueprints/corej2eepatterns/patterns/dataaccessobject.html]

Dettagli

Corso di Informatica Modulo T3 B2 - Database in rete

Corso di Informatica Modulo T3 B2 - Database in rete Corso di Informatica Modulo T3 B2 - Database in rete 1 Prerequisiti Programmazione web Applicazione web Modello OSI Architettura client/server Conoscenze generali sui database Tecnologia ADO in Visual

Dettagli

ARCHITETTURA DI UN B.D.M.S. Parte I Il controllo di concorrenza

ARCHITETTURA DI UN B.D.M.S. Parte I Il controllo di concorrenza ARCHITETTURA DI UN B.D.M.S. Parte I Il controllo di concorrenza Michele de Nittis Generalità A livello astratto un DataBase Management System può essere suddiviso nei seguenti moduli: OTTIMIZZATORE FILE

Dettagli

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012

Sviluppo Applicazioni Mobile Lezione 12 JDBC. Dr. Paolo Casoto, Ph.D - 2012 + Sviluppo Applicazioni Mobile Lezione 12 JDBC + Cosa vediamo nella lezione di oggi Oggi analizzeremo insieme una specifica tecnologia Java per l accesso e la manipolazione di basi di dati relazionali

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Tecnologia di un Database Server (centralizzato) Gestione dell affidabilità

Tecnologia di un Database Server (centralizzato) Gestione dell affidabilità Affidabilità Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Gestione dell affidabilità Angelo Montanari Dipartimento di Matematica e Informatica Università

Dettagli

Gestione delle eccezioni in Java

Gestione delle eccezioni in Java Gestione delle eccezioni in Java - Introduzione al concetto di eccezioni E possibile definire un eccezione come un situazione imprevista che il flusso di un applicazione può incontrare. È possibile gestire

Dettagli

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 4/5. ADO.NET e Connessione Prof. Mauro Giacomini

SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA. 4/5. ADO.NET e Connessione Prof. Mauro Giacomini SISTEMI INFORMATIVI E TELEMEDICINA INFORMATICA MEDICA 4/5. ADO.NET e Connessione Prof. Mauro Giacomini Sommario Archiettura del framework.net Architettura di ADO.NET Connessione a un DB Gestione della

Dettagli

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement

Caricamento della classe driver. Apertura della connessione. DriverManager.getConnection() Creazione di uno statement JDBC Programmazione in Ambienti Distribuiti V 1.4 Marco Torchiano 2006 Uso di JDBC Caricamento della classe driver Class.forName() Apertura della connessione DriverManager.getConnection() Creazione di

Dettagli

Introduzione all architettura di un DBMS

Introduzione all architettura di un DBMS 1 Introduzione all architettura di un DBMS Un DBMS deve garantire una gestione dei dati: efficiente concorrente affidabile integra sicura (protetta) Ciascuno degli aspetti precedenti è supportato dal DBMS

Dettagli

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio

QUEUE : considerazioni. QUEUE : considerazioni. QUEUE : esempio. QUEUE : esempio QUEUE : considerazioni QUEUE : considerazioni Si è realizzata una struttura dati complessa utilizzandone una primitiva, l array. Il pregio di tale implementazione è il basso costo computazionale, mentre

Dettagli

Tecnologie di Sviluppo per il Web

Tecnologie di Sviluppo per il Web Tecnologie di Sviluppo per il Web Programmazione su Basi di Dati: ADO.NET versione 1.1 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca mecca@unibas.it

Dettagli

Programmazione Java Avanzata Spring - JDBC

Programmazione Java Avanzata Spring - JDBC Programmazione Java Avanzata Spring - JDBC Ing. Gianluca Caminiti Riferimenti Spring http://www.springsource.org/ (scaricate il reference) Beginning Spring 2 - From Novice to Professional. APress. 2008

Dettagli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli UNIVERSITA DI FIRENZE Facoltà di Ingegneria Persistenza Applicazioni Enterprise Uso dei modelli 1 IL problema della persistenza APPLICAZIONE (programmi) (oggetti) DATI PERSISTENTI (file, record) (basi

Dettagli

Introduzione all Architettura del DBMS

Introduzione all Architettura del DBMS Introduzione all Architettura del DBMS Data Base Management System (DBMS) Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo

Dettagli

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione

Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Gli EJB offrono vari vantaggi allo sviluppatore di una applicazione Un ambiente di esecuzione che gestisce o naming di oggetti, sicurezza, concorrenza, transazioni, persistenza, distribuzione oggetti (location

Dettagli

Sviluppo di applicazioni per basi di dati

Sviluppo di applicazioni per basi di dati Sviluppo di applicazioni per basi di dati 1 Sviluppo di applicazioni per basi di dati Quattro parti: Gestione dati Business rules (vincoli di integrità e dati derivati) Logica applicativa Interfaccia utente

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 A2 Introduzione ai database 1 Prerequisiti Concetto di sistema File system Archivi File e record 2 1 Introduzione Nella gestione di una attività, ad esempio un azienda, la

Dettagli

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali

Indice. Java. JDBC è l interfaccia di base standard di Java ai database relaionali Java java database connectivity -- jdbc G. Prencipe prencipe@di.unipi.it Indice JDBC: Java Data Base Connectivity connessioni a basi di dati esecuzione di statement SQL accesso ai result set JDBC: Java

Dettagli

Sincronizzazione nei Sistemi Distribuiti

Sincronizzazione nei Sistemi Distribuiti Sincronizzazione nei Sistemi Distribuiti Sincronizzazione dei Clock In un sistema centralizzato la misurazione del tempo non presenta ambiguità. (ogni computer ha il proprio clock) In un sistema distribuito

Dettagli

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione

JDBC Driver Manager. JDBC Architettura generale. JDBC - Tipi di dato. JDBC - Flusso applicativo. JDBC - Tipi di dato. ODBC Driver. Livello di gestione Interfacce DBMS in breve Corso di BD1 Ripasso comandi applicazione JDBC Manipolazione estensioni OR in JDBC Interfacce per DBMS Problema: Far accedere un applicazione ad una base di dati Soluzione: Librerie

Dettagli

Gestione delle transazioni

Gestione delle transazioni Funzionalità avanzate dei DBMS Prof. Matteo Golfarelli Alma Mater Studiorum - Università di Bologna Gestione delle transazioni Per approfondimenti: Ciaccia, Maio. Lezioni di basi di dati: pp 439-46 ORACLE

Dettagli

PROVA FINALE Ingegneria del software

PROVA FINALE Ingegneria del software PROVA FINALE Ingegneria del software Ing. Jody Marca jody.marca@polimi.it Laboratorio N 4 Cos è JDBC 2 JDBC significa Java Database Connectivity Standard definito da Sun MicroSystems per connettere programmi

Dettagli

Programmazione delle basi di dati attraverso JDBC

Programmazione delle basi di dati attraverso JDBC Programmazione delle basi di dati attraverso JDBC Dispense di Basi di dati Queste breve note non hanno la pretesa di essere un nuovo libro di testo sulle tecnologie informatiche. Vogliono invece costituire

Dettagli

Che cos è un DBMS? Capitolo 1. Perché usare un DBMS? DBMS. Descrizioni dei dati nei DBMS. Modelli di dati

Che cos è un DBMS? Capitolo 1. Perché usare un DBMS? DBMS. Descrizioni dei dati nei DBMS. Modelli di dati Che cos è un DBMS? Capitolo 1 Introduzione ai sistemi di basi di dati Una collezione integrata molto grande di dati Modella organizzazioni del mondo reale Entità (ad esempio studenti, corsi) Relazioni

Dettagli

TUTORIAL. CREAZIONE DI TRIGGER IN ORACLE LITE 8i MEDIANTE CLASSI JAVA

TUTORIAL. CREAZIONE DI TRIGGER IN ORACLE LITE 8i MEDIANTE CLASSI JAVA TUTORIAL CREAZIONE DI TRIGGER IN ORACLE LITE 8i MEDIANTE CLASSI JAVA Michele de Nittis Generalità... 2 Modello di Caricamento e Pubblicazione... 3 Modello Per Allegato (Attachment)... 9 Esempio di creazione

Dettagli

Sistema di Gestione di Basi di Dati DataBase Management System DBMS

Sistema di Gestione di Basi di Dati DataBase Management System DBMS Base di dati (accezione generica) collezione di dati, utilizzati per rappresentare le informazioni di interesse per una o più applicazioni di una organizzazione (accezione specifica) collezione di dati

Dettagli

Basi di dati distribuite. BD distribiute 1

Basi di dati distribuite. BD distribiute 1 Basi di dati distribuite BD distribiute 1 Motivazioni della distribuzione dei dati natura intrinsecamente distribuita delle organizzazioni evoluzione degli elaboratori - aumento della capacità elaborativa

Dettagli

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC

MDAC. Attualmente la versione disponibile di MDAC è la 2.8 ma faremo riferimento alla 2.6. ADO Active Data Objects ADO OLE DB ODBC MDAC MDAC è l acronimo di Microsoft Data Access Component e fa parte della tecnologia Microsoft denominata Universal Data Access (UDA). Mette a disposizione una serie di componenti per l accesso a svariate

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli

UNIVERSITA DI FIRENZE Facoltà di Ingegneria. Persistenza Applicazioni Enterprise Uso dei modelli UNIVERSITA DI FIRENZE Facoltà di Ingegneria Persistenza Applicazioni Enterprise Uso dei modelli 1 IL problema della persistenza APPLICAZIONE (programmi) (oggetti) DATI PERSISTENTI (file, record) (basi

Dettagli

Database Security - Matteo Picciolini

Database Security - Matteo Picciolini Università degli Studi di Perugia Facoltà di Scienze MM.FF.NN Corso di Informatica Corso di Sicurezza Informatica Prof. Stefano Bistarelli Seminario di Matteo Picciolini Database Security - Matteo Picciolini

Dettagli

Riferimenti Bibliografici

Riferimenti Bibliografici Elaborazione Automatica dei Dati Enrico Cavalli Anno Accademico 2012-2013 Riferimenti Bibliografici Cavalli, Lorenzi Progettazione dei database linguaggio SQL dati in rete Access, MySQL, pagine ASP, Pagine

Dettagli