Aspetti sistemistici dellSQL. SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi.

Slides:



Advertisements
Presentazioni simili
Architettura MySQL E Motori MySQL L. Vigliano.
Advertisements

Database MySql.
Sicurezza e concorrenza nelle basi di dati
Stored Procedure Function Trigger
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità D3 Sicurezza e concorrenza nelle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Type Checking (1° parte)
Algoritmi e Programmazione
Biglietti e Ritardi: schema E/R
Università di Modena e Reggio Emilia 1 DB unimo Decomposizione Schemi e Trigger.
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
G. Mecca – – Università della Basilicata Basi di Dati Tecnologia di un DBMS: Concorrenza e Affidabilità Concetti Avanzati versione 2.0.
1 System Call per Comunicazione tra Processi Pipe.
RB-alberi (Red-Black trees)
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.
Ricorsione e Debug.
Introduzione agli stream e alle classi
Tecnologie di un database server: la gestione della concorrenza
Basi di dati attive Paolo Atzeni.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
SQL Per la modifica di basi di dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Le transazioni Itis Max Planck.
SQL: Amministrazione e Viste
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Vincoli di integrità generici Con i costrutti visti sinora, non è sempre possibile definire tutti i possibili vincoli di integrità. Per questo esiste listruzione.
Progettazione di una base di dati
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
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.
DBMS ( Database Management System)
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
Cos’è una transazione? Una transazione è un’unità logica di elaborazione richiesta da un’applicazione che dà luogo a una serie di operazioni fisiche elementari.
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
Corso di Basi di Dati Il Linguaggio SQL
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi SQL per Applicazioni Home page del corso:
PARSERIZZAZIONE DI FILE
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
© Giuseppe Berio – DI - UNITO
Architettura Centralizzata di un DBMS Relazionale
FUNZIONI Dichiarazione: Definizione:
Pagine ASP parte 3 I data base Stefano Schacherl.
© 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.
ATOMICITÀ Il tipo di atomicità di un programma PL/SQL è stabilito dall’ambiente chiamante oppure dal programma Gestione atomicità: –COMMIT –SAVEPOINT nome_punto.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
MySQL Database Management System
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.
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
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.
SQLite. Introduzione a SQLite Oltre alla possibilità di memorizzare informazioni persistenti attraverso Preferences e files, Android mette a disposizione.
* R AMAN K AZHAMIAKIN O SCAR Z G IOVANNI D E ITT M. B UONARROTI, T RENTO A NDROID D EVELOPMENT P ERSISTENZA.
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:

Aspetti sistemistici dellSQL

SQL environment Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi dati; Un SQL environment è un framework dove esistono dati e possono aversi istruzioni SQL eseguite su questi dati; Tutti gli elementi di un database discussi fin ora: tabelle, viste, trigger, stored procedure ecc. sono definite dentro lSQL environment; Tutti gli elementi di un database discussi fin ora: tabelle, viste, trigger, stored procedure ecc. sono definite dentro lSQL environment; Questi elementi sono organizzati in una gerachia di strutture ognuna della quali ha un ruolo ben preciso. Questi elementi sono organizzati in una gerachia di strutture ognuna della quali ha un ruolo ben preciso.

Schemi Sono collezioni di tabelle, viste, asserzioni, trigger, moduli PSM, ecc. Sono collezioni di tabelle, viste, asserzioni, trigger, moduli PSM, ecc. Gli schemi sono lunità di base dellorganizzazione gerarchica e sono vicini al concetto di database che ognuno di noi ha. Gli schemi sono lunità di base dellorganizzazione gerarchica e sono vicini al concetto di database che ognuno di noi ha.

Cataloghi Sono collezioni di schemi. Ogni catalogo ha uno o più schemi. Ogni catalogo ha uno schema speciale chiamato INFORMATION_SCHEMA che contiene informazioni riguardo a tutti gli schemi memorizzati in esso. Sono collezioni di schemi. Ogni catalogo ha uno o più schemi. Ogni catalogo ha uno schema speciale chiamato INFORMATION_SCHEMA che contiene informazioni riguardo a tutti gli schemi memorizzati in esso.

Cataloghi in SQL LINFORMATION_SCHEMA (cataloghi di sistema) contiente delle tabelle speciali che contengono i meta-dati del DB (tabelle, view, vincoli, trigger, utenti, autorizzazioni, indici etc..) LINFORMATION_SCHEMA (cataloghi di sistema) contiente delle tabelle speciali che contengono i meta-dati del DB (tabelle, view, vincoli, trigger, utenti, autorizzazioni, indici etc..) Esempi: Esempi: PASSWORD(NomeUtente,ParolaChiave) PASSWORD(NomeUtente,ParolaChiave) SYSDB(NomeBaseDati, Proprietario, Cammino, Commenti) SYSDB(NomeBaseDati, Proprietario, Cammino, Commenti) SYSTABLE(NomeTabella, Proprietario, BaseODerivata, NumeroColonne, NomeArchivioFisico, Commenti) SYSTABLE(NomeTabella, Proprietario, BaseODerivata, NumeroColonne, NomeArchivioFisico, Commenti) SYSCOLS(NomeColonna, Tabella, Numero, Tipo, Lunghezza, Default, Commenti) SYSCOLS(NomeColonna, Tabella, Numero, Tipo, Lunghezza, Default, Commenti) SYSINDEX(NomeIndice, Tabella, Proprietario, NumeroColonna, Commenti) SYSINDEX(NomeIndice, Tabella, Proprietario, NumeroColonna, Commenti)

Altri Cataloghi Una decina di altre tabelle per view, vincoli, grant ecc.. Una decina di altre tabelle per view, vincoli, grant ecc.. Altri riguardano aspetti quantitativi sui dati, le statistiche, utilizzate dallottimizzatore delle query. Altri riguardano aspetti quantitativi sui dati, le statistiche, utilizzate dallottimizzatore delle query.

Utilizzo dei cataloghi Normalmente consultabili ma non modificabili dagli utenti. Possono tuttavia essere consultate mediante SQL e per questa ragione sono autoreferenziate (ad esempio SYSTABLE conterrà una n-upla corrispondente a se stessa. Normalmente consultabili ma non modificabili dagli utenti. Possono tuttavia essere consultate mediante SQL e per questa ragione sono autoreferenziate (ad esempio SYSTABLE conterrà una n-upla corrispondente a se stessa.

Cluster Sono collezioni di cataloghi. Ogni utente ha un cluster associato, relativo allinsieme di cataloghi che egli può accedere. Sono collezioni di cataloghi. Ogni utente ha un cluster associato, relativo allinsieme di cataloghi che egli può accedere.

Gerarchia SQL environment Cluster Massimo scope per una Operazione sul DB Catalogo Schema Catalogo

Esepio: Cataloghi in ORACLE DA FARE DA FARE

Programmazione delle Transazioni in SQL Una transazione è un programma che il DBMS esegue garantendone atomicità e serializzabilità. Una transazione è un programma che il DBMS esegue garantendone atomicità e serializzabilità. Latomicità viene garantita facendo si che quando una transazione fallisce tutti i suoi effetti sul DB siano annullati; Latomicità viene garantita facendo si che quando una transazione fallisce tutti i suoi effetti sul DB siano annullati; La serializzabilità viene garantita con il meccanismo di blocco dei dati (record e table locking) La serializzabilità viene garantita con il meccanismo di blocco dei dati (record e table locking)

Locking Consiste nel bloccare un dato in lettura o scrittura rispettivamente prima di modificare o leggere quel dato. Consiste nel bloccare un dato in lettura o scrittura rispettivamente prima di modificare o leggere quel dato. Quando una transazione T 1 cerca di ottenere un blocco in scrittura su di un dato già bloccato da T 2 allora T 1 viene messa in attesa finché T 2 termina rilasciando il lock. Quando una transazione T 1 cerca di ottenere un blocco in scrittura su di un dato già bloccato da T 2 allora T 1 viene messa in attesa finché T 2 termina rilasciando il lock. Si garantisce così la serializzabilità e lisolamento in modo che ogni transazione non veda mai le modifiche di unaltra transazione non ancora terminata. Le richieste di blocco sono fatte dal sistema automaticamente. Si garantisce così la serializzabilità e lisolamento in modo che ogni transazione non veda mai le modifiche di unaltra transazione non ancora terminata. Le richieste di blocco sono fatte dal sistema automaticamente.

Transaction Management In generale un programma applicativo è trattato dal DBMS come ununica transazione. Tuttavia si devono poter ammettere le seguenti alternative: In generale un programma applicativo è trattato dal DBMS come ununica transazione. Tuttavia si devono poter ammettere le seguenti alternative: Quando il programma scopre una condizione anomala che impedisce il completamento, si deve poter disfare una parte delle operazioni fatte, cercando di usare codice alternativo. Quando il programma scopre una condizione anomala che impedisce il completamento, si deve poter disfare una parte delle operazioni fatte, cercando di usare codice alternativo. Quando il programma impiega un lungo tempo per terminare, ad esempio perché interagisce con lutente, allora è opportuno spezzare il programma in più transazioni, in modo da poter rilasciare quei dati che servono ad altre transazioni. Quando il programma impiega un lungo tempo per terminare, ad esempio perché interagisce con lutente, allora è opportuno spezzare il programma in più transazioni, in modo da poter rilasciare quei dati che servono ad altre transazioni.

Transazioni nei linguaggi che ospitano SQL I DBMS relazionali permettono di spezzare i programmi in più transazioni mediante i comandi COMMIT e ROLLBACK. I DBMS relazionali permettono di spezzare i programmi in più transazioni mediante i comandi COMMIT e ROLLBACK. Nel caso dellSQL ospitato una transazione viene considerata iniziata dal sistema quando un programma esegue unoperazione su una tabella (SELECT, UPDATE, INSERT, DELETE, OPEN CURSOR) Nel caso dellSQL ospitato una transazione viene considerata iniziata dal sistema quando un programma esegue unoperazione su una tabella (SELECT, UPDATE, INSERT, DELETE, OPEN CURSOR)

Interruzione di transazioni La transazione prosegue finché: La transazione prosegue finché: viene eseguito EXEC SQL COMMIT WORK : la transazione termina normalmente con il rilascio dei blocchi sui dati usati che diventano disponibili viene eseguito EXEC SQL COMMIT WORK : la transazione termina normalmente con il rilascio dei blocchi sui dati usati che diventano disponibili viene eseguito EXEC SQL ROLLBACK WORK (abort transaction) : comporta la terminazione prematura della transazione e quindi viene eseguito EXEC SQL ROLLBACK WORK (abort transaction) : comporta la terminazione prematura della transazione e quindi (a) il disfacimento di tutte le modifiche (atomicità) (a) il disfacimento di tutte le modifiche (atomicità) (b) il rilascio dei blocchi usati. (b) il rilascio dei blocchi usati. Il programma termina senza errori, normalmente. Il programma termina senza errori, normalmente. Il programma termina con fallimento e provoca laborto della transazione Il programma termina con fallimento e provoca laborto della transazione

Esempio: Stampa Ammontare Ordine e Clienti- Totale Ordini Program Esempio; Program Esempio; Dichiarazioni ed Inizializzazioni Dichiarazioni ed Inizializzazioni Lettura dei dati dal terminale Lettura dei dati dal terminale Prima transazione: ricerca ordine Prima transazione: ricerca ordine EXEC SQL COMMIT WORK Stampa risultato prima transazione Seconda Transazione: recupero e stampa clienti-ammontare totale Seconda Transazione: recupero e stampa clienti-ammontare totale END programma

Un esempio più complesso Supponiamo di avere una tabella Magazzino(Prodotto, Quantità, Prezzo); Supponiamo di avere una tabella Magazzino(Prodotto, Quantità, Prezzo); Il seguente programma serve ad un venditore al momento della richiesta di un ordine da parte di un cliente. Il seguente programma serve ad un venditore al momento della richiesta di un ordine da parte di un cliente. Si legge la quantità disponibile ed il prezzo, si legge la quantità ordinata e si crea lordine Si legge la quantità disponibile ed il prezzo, si legge la quantità ordinata e si crea lordine

Program Esempio 2; VAR EXEC SQL BEGIN DECLARE SECTION xQuantita, xPrezzo, prezzoProposto, quantitaRichiesta : INTEGER; NumProdotto: ARRAY [1..3] OF CHAR; EXEC SQL END DECLARE SECTION BEGIN EXEC SQL CONNECT IdUtente IDENTIFIED BY Password USING Database; /*IdUtente,Password e Database siano tre costanti per semplicità*/

Ricerca quantita e prezzo Writeln(Scrivi il codice del prodotto); read(NumProdotto) EXEC SQL /*inizio prima transazione*/ SELECT Quantita, Prezzo INTO :xQuantita, :xPrezzo FROM Magazzino WHERE Prodotto=:NumProdotto EXEC SQL COMMIT WORK /*fine della prima transazione*/

Stampa del risultato e lettura della quantità richiesta writeln(Quantita =, xQuantita, Prezzo =, xPrezzo); writeln; writeln(Scrivi quantita ordinata); readln(quantitaRichiesta); prezzoProposto:= xPrezzo;

Esecuzione dellordine EXEC SQL SELECT Quantita,Prezzo INTO :xQuantita, :xPrezzo FROM Magazzino WHERE Prodotto = :NumProdotto IF xQuantita >= quantitaRichiesta AND xPrezzo = prezzoProposto THEN xQuantita := xQuantita - quantitaRichiesta; EXEC SQL UPDATE Magazzino SET Quantita = :xQuantita WHERE Prodotto = :NumProdotto...{Soddisfacimento dellordine} ELSE /*quantita insufficiente o il prezzo e cambiato dal momento della proposta*/ BEGIN EXEC SQL ROLLBACK WORK; writeln(Insufficiente quantita o cambiamento prezzo)...

Transazioni con livelli diversi di isolamento Con laumentare del numero di transazioni eseguite concorrentemente in modo serializzabile si può ridurre leffettivo grado di concorrenza del sistema a causa del fatto che aumenta la probabilità di avere transazioni in attesa di dati bloccati da altre o interrotte per il verificarsi di situazioni di stallo Con laumentare del numero di transazioni eseguite concorrentemente in modo serializzabile si può ridurre leffettivo grado di concorrenza del sistema a causa del fatto che aumenta la probabilità di avere transazioni in attesa di dati bloccati da altre o interrotte per il verificarsi di situazioni di stallo Per questa ragione i sistemi commerciali prevedono la possibilità di programmare transazioni rinunciando alla proprietà di serializzabilità e quindi di isolamento delle transazioni. Per questa ragione i sistemi commerciali prevedono la possibilità di programmare transazioni rinunciando alla proprietà di serializzabilità e quindi di isolamento delle transazioni.

SQL-92: SET TRANSACTION SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED| [READ UNCOMMITTED| READ COMMITTED | READ COMMITTED | REPEATABLE READ | REPEATABLE READ | SERIALIZABLE ] SERIALIZABLE ]

READ UNCOMMITTED Il primo livello di isolamento read uncommitted (detto anche dirty read o degree of isolation 0) consente transazioni che fanno solo operazioni di lettura che vengono eseguite dal sistema senza bloccare in lettura i dati. Il primo livello di isolamento read uncommitted (detto anche dirty read o degree of isolation 0) consente transazioni che fanno solo operazioni di lettura che vengono eseguite dal sistema senza bloccare in lettura i dati. Come conseguenza abbiamo che una transazione può leggere dati modificati da unaltra transazione non ancora completata. Come conseguenza abbiamo che una transazione può leggere dati modificati da unaltra transazione non ancora completata.

READ COMMITTED Il livello di isolamento read committed (detto anche cursor stability o degree of isolation 1) stabilisce che i blocchi in lettura vengano rilasciati subito mentre quelli in scrittura vengono rilasciati alla terminazione della transazione. Il livello di isolamento read committed (detto anche cursor stability o degree of isolation 1) stabilisce che i blocchi in lettura vengano rilasciati subito mentre quelli in scrittura vengono rilasciati alla terminazione della transazione. In questo modo una transazione T che modifica un dato, quel dato non può essere letto da altri fino a che T non abbia effettuato un commit o un rollback. In questo modo una transazione T che modifica un dato, quel dato non può essere letto da altri fino a che T non abbia effettuato un commit o un rollback.

REPEATABLE READ Repeatable read o anche degree of isolation 2 prevede che i blocchi in lettura e scrittura siano assegnati solo su n-uple di tabelle e vengano rilasciati alla terminazione della transazione. Repeatable read o anche degree of isolation 2 prevede che i blocchi in lettura e scrittura siano assegnati solo su n-uple di tabelle e vengano rilasciati alla terminazione della transazione. Presenta il fenomeno dei fantasmi (phantoms), abbiamo che dati inseriti nella tabella possono non essere visti. Presenta il fenomeno dei fantasmi (phantoms), abbiamo che dati inseriti nella tabella possono non essere visti.

SERIALIZABLE Degree of isolation 3. Consiste nel blocco temporaneo della tabella; Degree of isolation 3. Consiste nel blocco temporaneo della tabella; In certe applicazioni troppo restrittivo. In certe applicazioni troppo restrittivo.

LivelloLetture sporche Letture non ripetibiliDati fantasmi READ UNCOMMITTED X XX READ COMMITTED-XX REPEATABLE READ--X SERIALIZABLE---

Letture sporche: un esempio.