Database e DBMS


Chiunque si sia avvicinato al mondo dell’informatica ha sentito parlare di database e DBMS, vediamo che cosa sono.

1.1 Cos’è un database

Un database (o base di dati) è un insieme di informazioni permanenti organizzate secondo una struttura definita da un modello dati che rappresenta una situazione reale che si vuole automatizzare (gestione magazzino, fatturazione, personale, ecc.).

Nei file tradizionali le informazioni sono organizzate in modo sequenziale, mentre in un database, in accordo con il modello dati, vengono stabilite relazioni tra le varie porzioni di informazioni.

Ad esempio, un numero assume significato diverso se è contenuto in file o se è contenuto in un database. Nel primo caso è semplicemente un numero che si trova in una certa posizione del file.

Invece in un database ad esso è assegnato un ruolo dal modello dati. Può essere il prezzo di un prodotto che è stato venduto come articolo di un ordine avanzato da un cliente. Ognuno di questi elementi, prezzo, prodotto, articolo, ordine e cliente, è una entità specificata e correlata alle altre dal modello dati.

Un database deve soddisfare i seguenti requisiti:

· i dati devono essere organizzati con ridondanza minima, ossia non devono essere inutilmente duplicati per evitare spreco di risorse di memorizzazione e, soprattutto, per evitare l’onere della gestione di copie multiple che possono mettere a rischio la consistenza e l’affidabilità dei dati;

· i dati devono essere utilizzabili contemporaneamente da più utenti, evitando che ognuno crei una copia propria degli stessi; deve esistere un’unica versione dei dati a cui gli utenti accedono secondo specifici diritti. Inoltre sono necessarie delle tecniche che consentano di evitare che l’attività dei vari utenti generi conflitti per l’uso contemporaneo degli stessi dati.

1.2 DataBase Management System (DBMS)

I DBMS sono strumenti software che gestiscono in maniera efficace ed efficiente le informazioni contenute in un database.

Prima dello sviluppo dei DBMS l’approccio che veniva applicato al problema dell’archiviazione prevedeva l’uso diretto delle strutture del file system (vedi fig. 1.1).

                      

Nella soluzione file system, le applicazioni accedono direttamente agli archivi, quindi ognuna deve conoscere la struttura interna degli archivi e le relazioni tra i dati e deve evitare la duplicazione degli stessi. Inoltre la non volatilità dei dati e la gestione degli accessi contemporanei di più applicazioni agli archivi viene relegata a strati software non specializzati per tali compiti, quali il sistema operativo.

La caratteristica saliente che differenzia un sistema per la gestione di database (DB) è la presenza di un componente specializzato a tale ruolo (vedi fig. 1.2).

                         

La figura 1.2 mostra come le applicazioni rivolgono al DBMS le proprie richieste di accesso alla base di dati, il quale gestisce i dati svincolando le applicazioni da tale onere. Quindi il DBMS è un modulo, specializzato nella gestione del DB; a cui tutte le applicazioni si rivolgono per accedere ai dati. Si ottiene così un triplice scopo: da una parte le funzionalità di gestione del database sono raggruppate in un unico insieme, dall’altra le applicazioni risultano alleggerite e quindi più veloci da realizzare e, soprattutto, nessuna potrà effettuare operazioni scorrette sul database.

1.3 Caratteristiche di un DBMS

Le proprietà fondamentali di un DBMS sono:

· Capacità di gestire dati non volatili;

· Capacità di accedere in modo efficiente a grandi quantità di dati.

Sono richieste, inoltre, le seguenti caratteristiche:

· Mantenimento di un modello dati, o astrazione matematica tramite la quale l’utente può osservare i dati;

· Mantenimento di linguaggi di alto livello che permettono all’utente di definire la struttura dei dati, accedere ad essi ed elaborarli;

· Gestione delle transazioni, cioè capacità di fornire un accesso corretto e concorrente al DB da parte di molti utenti contemporaneamente;

· Accesso controllato, cioè capacità di limitare l’accesso ai dati agli utenti non autorizzati e di controllare la validità dei dati;

· Capacità di recupero, cioè la possibilità di ripristino a seguito di guasti del sistema senza perdere dati.

1.3.1 Dati non volatili

Un DBMS deve trattare dati non volatili, nello specifico deve trattare un database che contiene i dati che si vogliono gestire e le informazioni che servono per gestirli. Ovviamente i dati per essere non volatili devono essere memorizzati su memorie di massa.

1.3.2 Accesso efficiente a grandi quantità di dati

Un DBMS deve permettere, a differenza di un file system, di accedere in maniera rapida a porzioni arbitrarie di dati contenuti nel DB. Questa capacità diventa necessaria soprattutto quando la mole dei dati è molto grande, mentre per quantità piccole di solito bastano anche tecniche di accesso semplice, come quella della scansione lineare.

1.3.3 Modello dati

Ogni DBMS fornisce almeno un modello astratto di dati, che consente all’utente di considerare le informazioni non come sequenza di bit, ma in termini a lui più comprensibili. Per operare sulle informazioni contenute in un database è possibile, quindi, ignorare i dettagli della struttura fisica del DB e considerare i dati in termini di ciò che rappresentano nel mondo reale o, comunque, in relazione al livello di astrazione del modello dei dati del database.

1.3.4 Linguaggi ad alto livello

Un DBMS supporta tradizionalmente tre tipi di linguaggi, distinti in base alle funzioni eseguite sui dati. Tale distinzione è dovuta alla separazione delle funzioni dichiarative da quelle di elaborazione e di controllo, a differenza di quanto avviene in un comune linguaggio di programmazione.

Il motivo è che, mentre in un normale programma i dati esistono solo mentre esso è in esecuzione, in un DB i dati sono permanenti e possono essere dichiarati una volta per tutte.

Per la definizione dello schema logico del database viene usato il DDL (Data Definition Language).

Esso non è un linguaggio procedurale, piuttosto è una notazione per definire le informazioni e le relazioni intercorrenti fra esse, secondo un particolare modello dati.

Per le operazione di interrogazione ed aggiornamento dei dati quali inserimento, modifica, cancellazione, e così via, viene usato il DML (Data Manipulation Language). Esso può essere disponibile come linguaggio a se stante o come un insieme di istruzioni richiamabili da un linguaggio di programmazione che svolge il ruolo di linguaggio host.

Per le operazioni di controllo dei dati, la gestione degli utenti, l’assegnazione dei diritti di accesso, l’ottimizzazione del funzionamento del DBMS viene usato il DCL (Data Control Language).

Solitamente il DML è utilizzato dai programmatori che realizzano i programmi applicativi destinati agli utenti finali, mentre il DCL e il DDL sono usati dal DBA (Data Base Administrator), la persona o il gruppo di persone che partecipa alla progettazione e al mantenimento del database.

Un’altra figura che partecipa alla progettazione del DB è il DA (Data Administrator), figura di più alto livello rispetto al DBA, che si occupa dei dati come patrimonio del sistema informativo aziendale, indipendentemente dalla loro localizzazione all’interno di un DB.

1.3.5 Gestione delle transazioni

Un’altra caratteristica importante di un DBMS è la sua capacità di gestire simultaneamente grandi quantità di transazioni, cioè di procedure operanti sul DB. Alcuni DB sono così grandi che possono essere utili solo se su di essi operano simultaneamente diverse applicazioni. I sistemi usati dalle banche, a cui accedono quasi istantaneamente centinaia o migliaia di macchine per interrogazioni e almeno altrettanti impiegati delle filiali, costituiscono un tipico esempio di questi DB. A volte due accessi non interferiscono tra loro; ad esempio il saldo di un conto bancario può essere letto nello stesso tempo, senza problemi di inconsistenza, da qualunque numero di transazioni. Altre volte, come nel caso di un prelievo che avviene contemporaneamente ad un versamento, il risultato di due transazioni simultanee e senza coordinazione può essere imprevedibile.

Progettazione database relazionali Quindi, le transazioni che modificano un campo, devono bloccare altre transazioni che cercano di leggere o scrivere lo stesso campo nel medesimo istante. Perciò un DBMS deve fornire controlli di concorrenza per evitare che più di una transazione acceda allo stesso dato in modo non coordinato.

1.3.6 Accesso controllato

Le funzionalità di un DBMS di gestione degli utenti consente all’amministratore del sistema di definire dei vincoli di accesso ai dati, ovvero di stabilire per ciascun utente i diritti di accesso (lettura, modifica e così via) alle singole unità di informazione del database.

Inoltre un DBMS fornisce spesso una funzione di view (vista) che consente di creare oggetti astratti a partire da oggetti reali permettendo visione logiche diverse dello stesso insieme di dati; ciò comporta la possibilità di rendere disponibile a determinate categorie di utenza l’intero database, ad altri solo una parte.

1.3.7 Capacità di recupero

Un DBMS, oltre a trattare dati non volatili, deve implementare delle tecniche che permettano il ripristino dei dati persi o danneggiati a seguito di un malfunzionamento di una qualsiasi componente del sistema.

La maggior parte dei DBMS esistenti gestisce un file detto log delle transazioni nel quale si tiene traccia di tutti i cambiamenti che avvengono nel database. Ogni volta che un utente avvia una transazione che modifica il DB, il DBMS registra la modifica nel log delle transazioni. Quando la transazione è conclusa nel log viene segnalato che le modifiche della transazione sono definitive.

Se, ad esempio, si verifica un crash del sistema dovuto ad una caduta di tensione, ci saranno dei dati modificati che non sono stati ancora scritti nel database, ma grazie al log delle transazioni, si potrà ricostruire la transazione persa.

Per il recovery di problemi più seri come il crash del disco rigido non sono più sufficienti i log delle transazioni ma è necessario avere un backup (copia su dispositivi di memorizzazione esterni) del DB o di una parte di esso. Il DBMS deve fornire gli strumenti adatti ad assolvere a questo compito.

1.3.8 Aspetti negativi

I DBMS hanno anche degli aspetti negativi:

· I DBMS sono prodotti costosi, complessi e abbastanza diversi da molti altri strumenti informatici. La loro introduzione comporta quindi notevoli investimenti, diretti (acquisto del prodotto) e indiretti (acquisizione delle risorse hardware e software necessarie, conversione delle applicazioni, formazione del personale).

· I DBMS forniscono, in forma integrata, una serie di servizi, che sono necessariamente associati ad un costo. Nei casi in cui questi servizi non sono tutti necessari, è difficile scorporare i servizi effettivamente richiesti dagli altri, e ciò può comportare una riduzione di prestazioni.