APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf ·...

21
APPLICAZIONI DELLE BASI DI DATI APPLICAZIONI TRADIZIONALI APPLICAZIONI INTERNET SQL EMBEDDED

Transcript of APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf ·...

Page 1: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

APPLICAZIONI DELLEBASI DI DATI

APPLICAZIONI TRADIZIONALIAPPLICAZIONI INTERNET

SQL EMBEDDED

Page 2: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 3

SQL nel codice applicativo! I comandi SQL possono essere chiamati dall’interno

di un programma in un linguaggio ospite (adesempio C++ o Java)! I comandi SQL possono far riferimento a variabili

dell’ospite (incluse variabili speciali usate per restituire unostatus)

! Deve essere incluso un comando per connettersi alla basedi dati

! Due principali approcci all’integrazione! Incorporare l’SQL nel linguaggio ospite (SQL incapsulato,

ad es., SQLJ)! Creare una speciale API per chiamare i comandi SQL (ad

es., JDBC)

Giorgio Giacinto 2010 Database 4

SQL incapsulato (embedded)! Approccio: incapsulare l’SQL nel linguaggio ospite.

! Un preprocessore converte i comandi SQL in specialichiamate all’API

! Successivamente un normale compilatore viene usato percompilare il codice

! Costrutti del linguaggio! connessione a una base di dati

EXEC SQL CONNECT! Dichiarazione di variabili

EXEC SQL BEGIN (END) DECLARE SECTION! Comandi

EXEC SQL comando

Page 3: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 5

EXEC SQL BEGIN DECLARE SECTIONChar c_vnome[20];Long c_vid;Short c_esperienza;Float c_età;EXEC SQL END DECLARE SECTION

! Inserimento di una rigaEXEC SQLINSERT INTO Velisti

VALUES(:c_vnome,:c_vid,:c_esperienza,:c_età);

SQL incapsulato: variabili

Giorgio Giacinto 2010 Database 6

SQL incapsulato: variabilierrore

! Due speciali variabili “errore”! SQLCODE (long)

se negativa si è verificato un errore! SQLSTATE char[6]

codici predefiniti per errori comuni

Page 4: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 7

SQL nel codice applicativoCursori

Disadattamento di impedenza! Le relazioni SQL sono (multi-)insiemi di

record senza un numero di record fissato apriori. Nessuna struttura di questo tipoesiste tradizionalmente in linguaggi diprogrammazione procedurali come il C++

! SQL supporta un meccanismo chiamatocursore per gestire questa situazione

Giorgio Giacinto 2010 Database 8

SQL incapsulatoSELECT senza cursori

EXEC SQL SELECT V.vnome,V.etàINTO :c_vnome, :c_etàFROM Velisti VWHERE V.vid = :c_vid;

• Questa SELECT restituisce al più una solatupla

• non è necessario definire un cursore

Page 5: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 9

Cursori! Si può dichiarare un cursore su una relazione o un

comando di interrogazione! Si può aprire un cursore, e ripetutamente prelevare

una tupla, poi muovere il cursore fino a quando tuttele tuple siano state lette.! Si può usare ORDER BY nelle interrogazioni cui si accede

tramite cursore, per controllare l’ordine in cui le tuple sonorestituite! I campi nella clausola ORDER BY devono apparire anche

nella clausola SELECT! ORDER BYè permessa solo nel contesto di un cursore

! Si può anche modificare/cancellare la tupla puntatadal cursore

Giorgio Giacinto 2010 Database 10

Cursori che leggonoin ordine alfabetico i nomi dei velisti che hannoprenotato una barca rossa

EXEC SQL DECLARE vinfo CURSOR FORSELECT V.vnomeFROM Velisti V, Barche B, Prenota PWHERE V.vid = P.vid AND P.bid = B.bid

AND B.colore = ‘rosso’ORDER BY V.vnome

Page 6: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 11

Incapsulare l’SQL in C: unesempiochar SQLSTATE[6];EXEC SQL BEGIN DECLARE SECTIONchar c_vnome[20]; short c_minesperienza;

float c_età;EXEC SQL END DECLARE SECTIONc_minesperienza = random();EXEC SQL DECLARE vinfo CURSOR FORSELECT V.vnome, V.età FROM Velisti VWHERE V.esperienza > :c_minesperienzaORDER BY V.vnome;EXEC SQL OPEN vinfo;do {

EXEC SQL FETCH vinfo INTO :c_vnome, :v_età;printf(“%s ha %d anni\n”, c_vnome, c_età);

} WHILE (SQLSTATE != ‘02000’);EXEC SQL CLOSE vinfo;

Giorgio Giacinto 2010 Database 12

Proprietà dei cursori! Un cursore può essere dichiarato

! Sola lettura! Aggiornabile (per usare UPDATE e DELETE)

! SCROLL CURSOR! Flessibilità nel posizionamento di FETCH

! INSENSITIVE! Il cursore è come se agisse su una copia privata della

relazione risultato! WITH HOLD

! Il cursore non viene chiuso al termine di una transazione

Page 7: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 13

SQL dinamico! Le stringhe di interrogazione SQL non sono sempre

note al momento della compilazione (ad esempiofogli di lavoro o frontend grafici per il DBMS)Il linguaggio SQL consente di costruire comandiSQL al volo

! Esempio:

char c_stringasql[]={“DELETE FROM Velisti WHERE esperienza > 5”};

EXEC SQL PREPARE pronti FROM :c_stringasql;EXEC SQL EXECUTE pronti;

Giorgio Giacinto 2010 Database 14

API per basi di datialternative all’incapsulamento! Piuttosto che modificare il compilatore, si possono

aggiungere librerie con chiamate alla base di dati(API)! Speciale interfaccia standardizzata: procedure/oggetti

! Si passano le stringhe SQL dal linguaggio, sipresentano gli insiemi risultato in manieracomprensibile

! JDBC della Sun: API Java! Generalmente neutre rispetto al DBMS

! Un “driver” rileva le chiamate e le traduce in codicespecifico per il DBMS

! La base di dati può essere distribuita

Page 8: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 15

Uso di Call Level Interface(CLI)

! I DBMS sono eseguiti come processi server! Processi attivi che offrono dei servizi a richiesta

! Per fruire dei servizi occorre connettersi al DBMS! Interfacce fra DBMS e altri programmi

Applicazione Interfaccia(ADO, RDO, …)

Driver(DBD,ODBC,…)

Database(Oracle,MySQL,…)

STORED PROCEDURE

Page 9: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 17

Stored procedure! Cos’è una stored procedure

! Programma eseguito tramite un singolo comandoSQL

! Eseguito nello spazio del processo sul server! Vantaggi

! Può incapsulare la logica dell’applicazionerimanendo al contempo “vicino” ai dati

! Riutilizzo della logica dell’applicazione da parte diutenti diversi

! Evita la lettura dei record tupla-per-tupla tramite icursori

Giorgio Giacinto 2010 Database 18

Stored procedure: esempiCREATE PROCEDURE MostraNumPrenotazioneSELECT V.vid, V.vnome, COUNT(*)FROM Velisti V, Prenota PWHERE V.vid = P.vidGROUP BY V.vid, V.vnome

Le stored procedure possono avere parametri! Tre modi differenti: IN, OUT, INOUTCREATE PROCEDURE AumentaEsperienza(

IN velista_vid INTEGER, IN aumento INTEGER)UPDATE Velisti

SET esperienza = esperienza + aumentoWHERE vid = velista_vid

Page 10: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 19

Stored procedure: esempi (segue)

Le stored procedure non devononecessariamente essere scritte in SQL

CREATE PROCEDURE VelistiTop(IN num INTEGER)LANGUAGE JAVA

EXTERNAL NAME ”file://c:/storedProcs/rank.jar”

Giorgio Giacinto 2010 Database 20

Chiamare le stored procedureEXEC SQL BEGIN DECLARE SECTIONint vid;int esperienza;EXEC SQL END DECLARE SECTION// ora aumenta l’esperienza di questo velistaEXEC CALL AumentaEsperienza(:vid, :esperienza);

Page 11: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 21

SQL/PSMLa maggior parte dei DBMS consente agli utenti discrivere stored procedure in un linguaggio semplice egeneral-purpose (vicino all’SQL) → lo standard SQL/PSMne è un esempio

Dichiarare una stored procedure:CREATE PROCEDURE nome(p1, p2,... pn)

Dichiarazioni di variabili localiCodice della procedura;

Dichiarare una funzione:CREATE FUNCTION nome(p1, ..., pn) RETURNS

TipoDatoSQLDichiarazione di variabili localiCodice della funzione;

Giorgio Giacinto 2010 Database 22

Principali costruttiSQL/PSM

CREATE FUNCTION valuta Velista(IN velistaID INTEGER)RETURNS INTEGER

DECLARE esperienza INTEGERDECLARE numRis INTEGERSET numRis = (SELECT COUNT(*)

FROM Prenota PWHERE P.vid = velistaID)

IF (numRis > 10) then esperienza = 1;ELSE esperienza = 0;END IFRETURN esperienza;

Page 12: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

APPLICAZIONI VERTICALI

Giorgio Giacinto 2010 Database 24

Sistemi informativi e basi didati! Le basi di dati sono il componente di base di

un sistema informativo! Gestiscono la memorizzazione e il recupero

efficiente e efficace dei dati! Nel corso dei decenni sono stati sviluppati

diversi applicativi verticali! Orientati a applicazioni aziendali specifiche

! Oggi molti produttori di DBMS hannoacquisito società specializzate nellaproduzione di applicazioni verticali

Page 13: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 25

Processi Aziendali

! HRHuman Resources Management

! Finance Management! Procurement! CRM

Customer Relationship Management

Giorgio Giacinto 2010 Database 26

Gestione della produzione

! ERPEnterprise Resource Planning

! SCMSupply Chain Management

! PLMProduct Lifecycle Management

Page 14: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

APPLICAZIONI INTERNET

Giorgio Giacinto 2010 Database 28

Basi di Dati e Reti! La diffusione del protocollo http per lo

scambio di dati ha modificato tutte leapplicazioni delle basi di dati! Non più client dedicati, ma browser web per

accedere ai processi aziendali! Internet ha permesso la nascita del

cosiddetto commercio elettronico! Richiede accessi in lettura e scrittura a diverse

basi di dati! Prodotti del venditore! Mediatore per l’acquisto

Page 15: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 29

Internet e Basi di Dati

! Le stesse informazioni messe a disposizionesui siti Internet sono sempre più spessoorganizzate come basi di dati! Dall’HTML a XML

! Questo approccio semplifica le operazioni diinserimento, aggiornamento, cancellazione didati

Giorgio Giacinto 2010 Database 30

Web-service! E’ una applicazione che fornisce un servizio ben

definito! Un insieme di procedure richiamabili in remoto tramite

Internet! Le applicazioni possono essere scritte in linguaggi

diversi! Ma scambiano informazioni attraverso formati standard -

XML! SOAP: standard per chiamate basate su XML di

servizi remotiArgomenti trattati nel corso TARI

Page 16: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 31

Componenti dei sistemi“data-intensive”! Tre tipi separati di funzionalità

! gestione dei dati! logica di applicazione! presentazione

! L’architettura del sistema determina se queste trecomponenti risiedono su un singolo sistema (tier)oppure se sono distribuite su diversi tier

! Evoluzione delle architetture dipendente da! Evoluzione tecnologia! Riduzione costi (diffusione PC, ecc.)

Giorgio Giacinto 2010 Database 32

Architettura a livello singolo! Tutte le funzionalità sono

combinate in un singolo tier,generalmente un mainframe! Accesso utente tramite

terminali “non intelligenti”! Vantaggi

! facilità di manutenzione eamministrazione

! Svantaggi! Gli utenti si aspettano

interfacce di tipo grafico! Il calcolo centralizzato di

tutte le interfacce grafiche ètroppo costoso per unsingolo sistema

Client

Logica dell’Applicazione

DBMS

Page 17: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 33

Architetture client-serverthin client! Il client implementa solo l’interfaccia utente

grafica! Il server implementa la logica dell’applicazione

e la gestione dei dati

Logica dell’Applicazione

DBMS

Client

Client

Rete

Giorgio Giacinto 2010 Database 34

Architetture client-serverthick client

! Il client implementa sial’interfaccia grafica che (partede) la logica dell’applicazione

! Il server implementa lagestione dei dati

DBMS

Logica dell’Applicazione

Client

Logica dell’Applicazione

Client

Rete

Page 18: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 35

Architetture client-server(segue)! Svantaggi dei thick client

! Nessun luogo centralizzato per aggiornare la logicadell’applicazione

! Problemi di sicurezza: il server deve fidarsi dei client! Il controllo di accesso e l’autenticazione devono essere

gestiti dal server! I client devono lasciare la base di dati del server in uno

stato consistente! Una possibilità: incapsulare tutti gli accessi alla base di

dati in stored procedure! Non scalabile a più di un centinaio di client

! Grossi trasferimenti di dati tra server e client! Più di un server crea un problema:

x client, y server: x*y connessioni

Giorgio Giacinto 2010 Database 36

Programma client (browser web)

Livello di presentazione

Application ServerLivello intermedio

Sistema di base di dati Livello di gestione dati

L’architettura a tre livelli

Page 19: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 37

I tre livelli! Livello di presentazione

! Interfaccia primaria con l’utente (moduli HTML…)! Deve adattarsi a diversi dispositivi di visualizzazione (PC,

PDA, telefoni cellulari, accesso vocale?)! Livello intermedio

! Implementa la logica dell’applicazione (implementa azionicomplesse, mantiene lo stato tra diversi passi di un flussodi lavoro)

! Accede a diversi sistemi di gestione dei dati! Livello di gestione dei dati

! Uno o più sistemi standard per la gestione di basi di dati

Giorgio Giacinto 2010 Database 38

Sistema di basi di dati (MySQL, ORACLE)

Application Server(Tomcat, Apache)

Programma client (Browser web )

HTMLJavascriptXSLT

JSPServletsCookiesCGI

XMLStored Procedures

Tecnologie

Page 20: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 39

DBMSLogica

dell’Applicazione

Client

Client

Rete Rete

Archietture client-serverthree tier

Giorgio Giacinto 2010 Database 40

Vantaggi architetture a trelivelli

! Sistemi eterogenei! Thin client! Accesso integrato ai dati! Scalabilità rispetto al numero di client! Benefici nello sviluppo del software

! Interazioni fra livelli attraverso API standardizzate

Page 21: APPLICAZIONI DELLE BASI DI DATI - diee.unica.itgiacinto/didattica/11BD.Applicazioni.pdf · prenotato una barca rossa EXEC SQL DECLARE vinfo CURSOR FOR SELECT V.vnome FROM Velisti

Giorgio Giacinto 2010 Database 41

Esempio 1: prenotazioni aeree! Costruire un sistema per prenotazioni aeree! Cosa viene fatto dai vari livelli?! Sistema di basi di dati

! Informazioni sulle aerolinee, posti disponibili, informazionisui clienti, etc.

! Application server! Logica per effettuare le prenotazioni, cancellare le

prenotazioni, aggiungere nuove aerolinee, etc.! Programma client

! Log in dei vari utenti, visualizzazione di moduli e output informa leggibile

Giorgio Giacinto 2010 Database 42

Esempio 2: iscrizione a corsi! Costruire un sistema usando il quale degli studenti

possono iscriversi a dei corsi! Sistema di base di dati

! Informazioni sugli studenti, informazioni sui corsi,informazioni sui docenti, disponibilità dei corsi, pre-requisiti,etc.

! Application server! Logica per modificare un corso, cancellare un corso, creare

un nuovo corso, etc.! Programma client

! Login dei vari utenti (studenti, personale, professori),visualizzazione di moduli e output in forma leggibile