Luisa Vittoria Bruno e Giovanni Coppola

Aspetti applicativi e tecnologia
Premessa
Architetture usate per i database
Le prime applicazioni erano definite monolitiche, cioè un unico computer (mainframe) gestiva sia le applicazioni che i dati, ai quali era possibile accedere tramite dei terminali. Non ci si poneva, quindi, il problema della condivisione delle risorse.
Con l’evoluzione dell’informatica e della telematica, e in particolare con la nascita delle architetture client/server, l’esigenza della condivisione delle risorse è diventata primaria e questo ha portato a suddividere le applicazioni in due grandi categorie: quelle che richiedono informazioni e/o servizi e quelle che li forniscono.
Client
Server
Descrizione logica: “Nelle architetture client/server quello che accade è che ci sono delle applicazioni che richiedono dei servizi a qualcuno che li eroga, ci può essere o meno un canale di comunicazione e possono stare sulla stessa macchina o meno.”
Questo ha portato ad es. alla creazione di server dedicati a svolgere un determinato servizio. Es. I print­server per la stampa dei file, i fax­server ecc. Quelli di nostro interesse sono i DBMS, un tipo di applicazione che si comporta da server adibito alla gestione dei dati, particolarmente utili se sono presenti grandi quantità di dati o se ci sono da gestire più database contemporaneamente.
Client
Server
DBMS
Database
Il più delle volte si ha sulla stessa macchina il client e il DBMS, con la possibilità di fare delle query al database usando l’interfaccia del DBMS oppure altre applicazioni.
In questo caso il client parla con il DBMS tramite ODBC (open database connattivity), si tratta di API (application programming interface), ovvero di interfacce che mettono in comunicazione l'utente con l'applicazione. Il client si accredita nell’interfaccia con ID e password e può effettuare sul server tutte le operazioni concesse dai suoi privilegi.
Esistono anche delle interfacce chiamate JDBC(Java Database Connettivity) che connettono i database con le applicazioni in Java.
Architettura logica a tre livelli
Per la realizzazione di qualsiasi applicazione si ha sempre a che fare, in maniera più o meno ordinata, con i seguenti tre livelli di problematiche:
1. Rappresentazione: creazione dell’interfaccia più o meno evoluta di un’applicazione.
2. Logica applicativa: riguarda la parte funzionale del programma.
3. Gestione dati: ha a che fare con la memorizzazione dei dati.
In origine vi erano i main­frame che si occupavano di tutta la parte gestionale e lasciavano ai terminali solo la parte rappresentativa, in seguito vi è stata una specializzazione delle funzionalità e dal modo in cui le tre precedenti funzionalità sono distribuite tra client e server abbiamo diversi scenari:
1. PRESENTAZIONE DISTRIBUITA
Client: gestisce una parte del livello di presentazione;
Server: gestisce l'altra parte della presentazione, la logica applicativa e gestione dati;
es. Mainframe e terminali stupidi;
2. PRESENTAZIONE REMOTA;
Client: gestisce il presentation layer;
Server: gestisce la logica applicativa e gestione dati; es. Applicazioni web;
3. APPLICAZIONE DISTRIBUITA
Client: presentation layer e logica applicativa in parte;
Server: logica applicativa in parte e gestione dati;
es. Google o myYahoo;
4. APPLICAZIONE REMOTA (o gestione dati remota)
Client: presentation layer e logica applicativa;
Server: gestione dati;
es. Applicazioni in Visual Basic 5. APPLICAZIONI E DATI DISTRIBUITA
Client: presentation layer, parte di logica applicativa e parte della gestione dati;
Server: parte della logica applicativa e parte della gestione dati;
6. GESTIONE DATI REMOTA
Client: presentation layer e logica applicativa;
Server1: parte della gestione dei dati;
Server2: parte della gestione dei dati;
es. Database federati;
Con la diffusione del web si è andata affermando una nuova distribuzione dei livelli, col client che gestisce il presentation layer, un server dedicato alla logica applicativa (server applicativo) e un altro per la gestione dati. Spesso ci sono dei firewall a proteggere l'accesso ai 2 server.
Perché usiamo i DBMS?
Con i diagrammi entità­relazioni facciamo una rappresentazione concettuale dei dati e delle relazioni tra questi. Nelle nostre applicazioni dobbiamo implementare questo modello concettuale in un database.
Esistono diversi approcci per implementare un database:
• A oggetti;
• A relazioni;
• Gerarchico;
Per il grande successo della programmazione ad oggetti, sono stati creati dei framework (ORM) che permettono la persistenza degli oggetti nei database.
Noi però useremo dei database di tipo relazionale, in quanto le tabelle che li costituiscono hanno alla base una logica relazionale.
Il DBMS deve gestire i dati, cioè deve poter creare, distruggere e modificare i componenti interni di un database e per fare ciò si usa un linguaggio chiamato SQL che si suddivide in due tipologie DDL (Data Definition Language) e DML (Data Manipulation Language).
Esistono anche altre funzioni del DBMS:
 Gestire la concorrenza;
 Gestire le transazioni (in modo da avere il database consistente);



Backup del database (a caldo, cioè quando il database è funzionante, o a freddo);
Restore del database (duale backup);
Gestire le prestazioni nell’accesso del database (si usano degli indici identificativi di ogni tupla);
Un DBMS è strutturato nella maniera seguente
Ciò che si può notare è che il DBMS può accedere sia ai dati che ai meta­dati (informazioni caratterizzanti ogni database specifico) , i quali sono memorizzati in maniera indipendente gli uni dagli altri. Di seguito riportiamo, invece, uno schema di tutte le operazioni svolte da un DBMS
Come già detto in precedenza, i DBMS che utilizzeremo in questo corso sono di tipo relazionale (RDBMS) e in particolare saranno MS Access, MySQL e MS SQL Server 2005.
 ACCESS
Utilissimo per fare prototipazione rapida, poiché si riesce molto rapidamente a creare database, maschere per l'accesso al database, sia usando quello interno ad Access sia usandone uno esterno (usando Access come client e usando un ODBC).
Per creare un database in Access (supponiamo di crearne uno nuovo) dobbiamo dargli un nome e indicare la posizione in cui salvarlo; dopodiché si aprirà la maschera per la creazione delle tabelle, che può essere creata in vari modi. Se scegliamo la modalità Struttura, dobbiamo andare a inserire i vari campi e la loro dimensione (importante ai fini del dimensionamento del database), i tipi di dati (ogni DBMS ha i suoi tipi di dato) e scegliere una chiave primaria. L'accesso ai dati è possibile attraverso query testuali (in linguaggio SQL) o con query grafiche (attraverso maschere, record e pagine).Con Access è possibile esportare i dati di una tabella, cliccando sulla tabella corrispondente col tasto destro e scegliendo 'Esporta'.
 MySQL
E' OpenSource e lo utilizzeremo all'interno del pacchetto EasyPHP(scaricabile al sito www.easyphp.org), che contiene un editor PHP, Apache e, appunto, MySQL Server. Dopo l'installazione, facciamo partire il server Apache e il MySQL Server e accediamo all'interfaccia di amministrazione dell'SQL Server tramite localhost. Per un corretto funzionamento, è necessario disabilitare i servizi dell'Internet Information Server, in quanto condivide le stesse porte di EasyPHP. L'interfaccia è di facile utilizzo, permettendo la creazione di tabelle attraverso il riempimento dei form, e permette la visualizzazione del codice SQL corrispondente ad ogni operazione che viene effettuata. Inoltre, quando si inseriscono i vari campi delle tabelle, l'interfaccia mostra nella sua parte alta il DDL con cui l'applicazione si crea la tabella. EasyPhp permette anche l'importazione di dati da altri database (sotto forma di file testuale). E' importante che la tabella in EasyPHP abbia la stessa struttura di quella da cui abbiamo importato i dati.
 MS SQL Server 2005
Le modalità per la creazione dello schema del database con questo DBMS è praticamente identica a quelle degli altri due visti precedentemente. Si tratta comunque di un DBMS un po' più complesso dei precedenti, anche considerando gli usi per cui viene utilizzato (richiede anche l'autenticazione all'apertura). Dopo l'accesso, esso mostra tutta la struttura che il DBMS mette a disposizione. Ad esempio, mostra nella cartella database, tutti i database creati, oppure permette di impostare dei Trigger, cioè degli eventi che si “scatenano” nel momento in cui accadono certe condizioni. SQL Server permette anche l'uso di viste, delle tabelle dinamiche che contengono le informazioni richieste da una specifica query. Sono utili quando ripeto molto spesso una stessa query.
Bruno Luisa Vittoria Coppola Giovanni recapito:
[email protected]
[email protected]