Visitatori: 1370
Un database management system (DBMS) consiste in una collezione di dati correlati e in un insieme di programmi per accedere a questi dati.
I sistemi di database sono stati progettati per gestire grandi quantità di informazione. La gestione dei dati comporta la definizione sia di strutture per la memorizzazione che di meccanismi per la manipolazione dell’informazione. Inoltre, il DBMS deve garantire le informazioni memorizzate contro eventuali cadute del sistema o tentativi di accesso non autorizzati. Se i dati devono essere condivisi tra diversi utenti, il DBMS deve gestire anche gli accessi.
In genere un DBMS è un sistema multi-utente che gestisce una o più basi di dati. Tra i vari utenti ne esiste uno che coordina tutte le attività; esso viene denominato Amministratore del Database o DBA (Database Administrator)
Il DBA svolge le seguenti funzioni:
- Definizione della Struttura del db. Il DBA crea la struttura del database tramite una serie di istruzioni DDL (Data Definition Language) che vengono tradotte dal compilatore DDL in un insieme di tabelle e relazioni; Tutte queste informazioni vengono mantenute nel dizionario dei dati.
- Modifica e Mantenimento dello Schema. Il DBA effettua le modifiche (relativamente rare) allo schema/struttura del database scrivendo un insieme di definizioni (istruzioni DDL) che vengono usate dal compilatore DDL per generare modifiche al dizionario dei dati.
- Gestione dell’accesso ai dati. La gestione di diversi tipi di autorizzazione consente al DBA di indicare quali parti del database possono essere usate da ciascun utente. L’informazione sulle autorizzazioni è mantenuta in una struttura di sistema speciale che è consultata dal DBMS ogni volta che viene tentato un accesso ai dati del sistema.
- Definizione dei vincoli di integrità. I valori dei dati memorizzati nel database devono soddisfare determinati vincoli di consistenza. Per esempio, un impiegato non può lavorare in un dipartimento inesistente o uno studente non può sostenere un esame relativo ad un corso inesistente. Tale vincolo deve essere specificato esplicitamente dal DBA. I vincoli di integrità sono mantenuti in una struttura speciale che è consultata dal DBMS ogniqualvolta è necessario un aggiornamento del sistema.
IL DBA chiaramente non è l'unico utilizzatore del DBMS. Le altre tipologie di utenti sono:
- Programmatori: hanno il compito di scrivere i programmi per la gestione dei dati del database. Si tratta, chiaramente, di persone specializzate e i programmi vengono scritti non solo utilizzando i linguaggi per DBMS, ma anche linguaggi classici di programmazione. Si dice in questo caso che il linguaggio per DBMS è immerso nel linguaggio tradizionale.
- Esperti dell’Organizzazione: ciascuna organizzazione mantiene all’interno del suo staff operatori esperti di database che sappiano gestire i dati, per esempio per fare delle statistiche.
- Utenti inesperti: coloro che utilizzano il DBMS attraverso delle interfacce grafiche mediante le quali possono accedere solo a specifici dati ed inoltre possono effettuare solo specifiche operazioni (per esempio nel caso di una banca gli utenti inesperti sono gli operatori di sportello).
Affinché il sistema sia utilizzabile, esso deve recuperare i dati efficientemente. Ciò ha portato alla progettazione di strutture dati complesse per la rappresentazione dei dati nel database. Dal momento che molti utenti di un DBMS non sono esperti di informatica, gli sviluppatori nascondono la complessità agli utenti usando diversi livelli di astrazione:
- Livello fisico: è il più basso livello di astrazione e descrive in che modo i dati sono effettivamente memorizzati.
- Livello logico: è il livello di astrazione immediatamente maggiore e descrive quali dati sono memorizzati nel database e quali relazioni esistono tra quei dati.
- Livello di vista: è il livello di astrazione più alto e descrive solo una parte dell’intero database. Nonostante l’uso di strutture più semplici a livello logico, rimane una certa complessità a causa della grande dimensione del database. Molti utenti dei DBMS non necessitano di tutte queste informazioni. Invece essi devono poter accedere solo ad una parte del database. Al fine di semplificare la loro interazione con il sistema, viene definito il livello di astrazione della vista. Il sistema può fornire molte viste per lo stesso database.
I componenti funzionali di un DBMS possono essere grossolanamente suddivisi in componenti per la gestione delle query e componenti per la gestione della memorizzazione dei dati.
I componenti per la gestione delle query includono:
- un compilatore DML che traduce le istruzioni DML (Data Manipulation Language, generalmente SQL o sue varianti), espresse in un linguaggio di interrogazione, in istruzioni a basso livello che la macchina di valutazione delle query può comprendere.
- un precompilatore DML immerso, che converte le istruzioni DML immerse in un programma applicativo in chiamate di procedure normali nel linguaggio host. Il precompilatore deve interagire con il compilatore DML per generare il codice appropriato.
- l’ interprete DDL , che interpreta le istruzioni DDL e le registra in un insieme di tabelle che contengono i metadati (Dizionario dei Dati).
- Motore di valutazione della query, che esegue le istruzioni a basso livello generate dal compilatore DML.
I componenti per la gestione della memorizzazione forniscono l’interfaccia tra i dati a basso livello memorizzati nel database e le query ed i programmi applicativi sottomessi al sistema. I componenti per la gestione della memorizzazione includono:
- Un gestore per le autorizzazioni e l’integrità, che verifica sia la soddisfazione dei vincoli di integrità che le autorizzazioni degli utenti nell’accedere ai dati.
- Un gestore delle transazioni, che assicura che il database rimanga in uno stato consistente (corretto) nonostante i fallimenti del sistema e che le esecuzioni di transazioni concorrenti procedano senza conflitti.
- Un gestore dei file, che gestisce l’allocazione dello spazio su disco e le strutture dati usate per rappresentare le informazioni qui memorizzate.
- Un gestore del buffer, che è responsabile del prelevamento dei dati da disco a memoria e decide quali dati mantenere nella memoria cache.
Inoltre, un DBMS richiede diverse strutture dati di supporto come parte dell’implementazione del sistema fisico:
- file di dati, che memorizzano il database vero e proprio.
- dizionario dei dati, che memorizza i metadati relativi alla struttura del database. Il dizionario dei dati è molto usato pertanto dovrebbe essere posta una grande attenzione nel portare avanti una buona progettazione ed un’efficiente implementazione del dizionario.
- indici, che forniscono un accesso veloce ai dati che hanno valori particolari.
- dati statistici, che memorizzano informazioni statistiche sui dati del database. Queste informazioni vengono utilizzate dal gestore delle query per selezionare dei modi efficienti di esecuzione delle query.

|