1. Sistema di gestione di basi di dati
Data Base Management System — DBMS
Sistema (prodotto software) in grado di gestire collezioni di dati che siano (anche) :
‐ Grandi ( di dimensioni molto maggiori della memoria centrale dei sistemi di calcolo
utilizzati)
‐ Persistenti (con un periodo di vita indipendente dalle singole esecuzioni dei programmi che
le utilizzano)
‐ Condivise (utilizzate da applicazioni diverse)
Garantendo :
‐ Affidabilità (resistenza a malfunzionamenti hardware e software)
‐ Privatezza (con una disciplina e controllo degli accessi)
‐ Efficienza (utilizzo al meglio delle risorse di spazio e tempo del sistema)
‐ Efficacia (rendere produttive le attività dei suoi utilizzatori)
Base di dati gestita dal DBMS
Il DBMS è l’unico responsabile della gestione della base di dati: i dati sono accessibili
all’esterno solo tramite il DBMS
Condivisione
‐ A ciascun settore o attività del sistema organizzativo corrisponde un (sotto-)sistema
informativo, ed è comune che esistano sovrapposizioni fra i dati di interesse dei vari
settori.
‐ Una base di dati è una risorsa integrata, condivisa fra i vari settori. L’integrazione e la
condivisione permettono di ridurre la ridondanza(evitando ripetizioni) e, di conseguenza, le
possibilità di incoerenza (o inconsistenza) fra i dati.
‐ Poiché la condivisione non è mai completa (o comunque non opportuna) i DBMS
prevedono meccanismi di definizione della privatezza dei dati e di limitazioni all’accesso
(autorizzazioni).
2. ‐ La condivisione richiede un opportuno coordinamento degli accessi: controllo della
concorrenza.
Efficienza
Si misura (come in tutti i sistemi informatici) in termini di tempo di esecuzione(tempo di
elaborazione) e spazio di memoria(principale e secondaria).
L’efficienza è il risultato della qualità del DBMS e delle applicazioni che lo utilizzano.
I DBMS, a causa della varietà di funzioni, non sono necessariamente più efficienti dei file
system.
Catalogo o Dizionario dei dati
Nei DBMS esiste una porzione della base di dati (il catalogo o dizionario ) che contiene una
descrizione centralizzata dei dati che può essere utilizzata dai vari programmi.
Contiene informazioni che riguardano:
‐ data : nomi delle tabelle, nomi degli attributi, lunghezza degli attributi, numero di record in
ogni tabella
‐ relationship: legami tra dati e transazioni per la determinazione di quali transazioni sono
coinvolte se ad esempio alcune definizioni dei dati vengono modificate
‐ contraints (vincoli) sui dati ad esempio il range dei valori permessi
‐ informazioni dettagliate del database fisico e della memoria, percorsi per l’accesso , file e
lunghezza dei record
‐ autorizzazione agli accessi : permessi e diritti d’accesso
‐ statistiche sull’utilizzo
Importanza del dizionario
è importante per 2 motivi:
‐ migliorare il controllo del DBA sulle informazioni
‐ aiuto nella documentazione del disegno del database, di ogni fase e decisione
‐ aiuto nella produzione di report di dati utilizzati
‐ promuove l’indipendenza dei dati ad es in caso di aggiunta o modifica delle strutture nel
database i programmi non devono essere modificati
3. Moduli componenti un DBMS
Un DBMS è quindi un sistema software complesso. Vediamo ora i tipi di componenti software che
lo costituiscono e i tipi di software di sistema con cui il DBMS interagisce.
Nella Figura sono illustrati, in forma semplificata, i tipici componenti di un DBMS. La figura è divisa
in due parti. La parte superiore rappresenta le varie tipologie di utenti di un sistema di basi di dati e
le rispettive interfacce. La parte inferiore mostra i componenti interni di un DBMS, responsabili
della memorizzazione dei dati e dell’esecuzione delle transazioni.
La base di dati e il catalogo del sono solitamente memorizzati su disco. L’accesso al disco è
controllato essenzialmente dal sistema operativo, che ne pianifica l’input/output.
Un gestore dei dati memorizzati, modulo del DBMS a più alto livello, controlla l’accesso alle
informazioni del DMBS memorizzate su disco, siano esse parte della base di dati o del catalogo.
Analizziamo dapprima la parte della figura, che mostra le interfacce per l’amministratore (DBA),
quelle degli utenti occasionali che lavorano con interfacce interattive per formulare interrogazioni,
4. quelle dei programmatori applicativi che utilizzano linguaggi ospite e quelle degli utenti non esperti
che immettono dati sotto forma di parametri di transazioni predefinite. Lo staff di amministrazione
lavora alla definizione della base di dati e alla sua manutenzione, modificando le definizioni per
mezzo del linguaggio DDL e di altri comandi privilegiati.
Il compilatore DDL elabora definizioni di schema, specificate nel DDL, e memorizza descrizioni
degli schemi (metadati) nel catalogo del DBMS. Il catalogo include informazioni come i nomi e le
dimensioni dei file, i nomi e i tipi di dato delle voci, i dettagli di memorizzazione di ciascun file,
informazioni sul mapping tra i vari schemi e vincoli, oltre a molti altri tipi di informazioni necessari ai
moduli del DBMS. I moduli software del DBMS cercano, dunque, le informazioni di catalogo
quando ne hanno bisogno.
Utenti occasionali e soggetti che necessitano saltuariamente di estrarre informazioni dalla base di
dati utilizzano delle tipologie d’interfaccia che nella figura sono chiamate interfacce per
interrogazioni interattive.
Non sono esplicitamente rappresentate interazioni basate su menu o form che possono generare
l’interrogazione interattiva in modo automatico. Queste interrogazioni vengono trasformate in una
forma interna dal compilatore delle interrogazioni che le scompone e ne verifica la correttezza
delle operazioni rispetto al modello, ai nomi degli elementi e così via. Tale interrogazione interna
viene poi ottimizzata dall’ottimizzatore delle interrogazioni. Tra l’altro, l’ottimizzatore delle
interrogazioni si occupa di riorganizzare ed eventualmente di riordinare le operazioni, eliminare le
ridondanze e utilizzare gli algoritmi e gli indici opportuni durante l’esecuzione. L’ottimizzatore delle
interrogazioni consulta il catalogo per ottenere informazioni statistiche e altre informazioni relative
alla memorizzazione fisica dei dati, e infine genera il codice eseguibile che compie le operazioni
necessarie all’interrogazione e le chiamate al processore runtime della base di dati.
I programmatori applicativi scrivono programmi in linguaggi ospite come ad esempio Java vb, poi
passati a un precompilatore.
Il precompilatore estrae comandi DML da un programma applicativo scritto in un linguaggio
ospite di programmazione. Questi comandi sono inviati al compilatore DML per la compilazione in
codice oggetto per l’accesso alla base di dati. Il resto del programma è inviato al compilatore del
linguaggio ospite. Quindi il codice oggetto per i comandi DML e quello per il resto del programma
sono messi in collegamento (linked), formando una transazione standard il cui codice eseguibile
include chiamate al processore di esecuzione della base di dati. Queste transazioni predefinite
sono di grande utilità per gli utenti non esperti che devono semplicemente fornire i parametri delle
transazioni per fare in modo che queste vengano eseguite ripetutamente come transazioni
separate. Ne è un esempio la transazione di prelievo da conto corrente bancario in cui il numero di
conto e l’importo possono essere forniti come parametri.
Nella parte inferiore della Figura è rappresentato il processore runtime della base di dati che si
occupa di eseguire
1) i comandi privilegiati,
2) i piani di esecuzione delle interrogazioni e
3) le transazioni parametriche predefinite con specifici parametri.
Il processore interagisce con il dizionario di sistema su cui può intervenire aggiornando le
statistiche. Interagisce con il gestore dei dati memorizzati, il quale a sua volta usa i servizi di base
del sistema operativo per realizzare operazioni di input/output di basso livello fra il disco e la
memoria principale. Si occupa degli altri aspetti relativi al trasferimento dati come la gestione dei
buffer in memoria principale. Alcuni DBMS possiedono il proprio modulo di gestione dei buffer,
mentre altri sfruttano le funzionalità del sistema operativo. In questa figura abbiamo rappresentato
5. separatamente i sottosistemi di controllo della concorrenza e di backup/recovery. Essi sono
integrati nel processore runtime della base di dati per scopi di gestione delle transazioni.
Oggigiorno è prassi comune che il programma client che accede al DBMS venga eseguito su un
calcolatore diverso da quello su cui si trova la base di dati.
Il primo è chiamato client e il secondo server della base di dati.
In alcuni casi il client accede a un calcolatore intermedio, detto server delle applicazioni
(application server), che a sua volta accede al server della base di dati.
Il DBMS interagisce con il sistema operativo quando sono necessari accessi al disco (alla base di
dati o al catalogo). Se il sistema di elaborazione è condiviso da molti utenti, il sistema operativo
pianificherà le richieste di accesso al disco e le elaborazioni provenienti dal DBMS insieme con gli
altri processi. D’altra parte, se il sistema di elaborazione è destinato principalmente al server della
base di dati, sarà il DBMS a controllare il trasferimento delle pagine da disco ai buffer della
memoria principale. Il DBMS interagisce anche con i compilatori per i linguaggi di programmazione
ospite, e con server di applicazioni e programmi client che sono eseguiti su macchine diverse
attraverso l’interfaccia di rete del sistema.