Salta al contenuto
Note per Studenti Basi di dati e DBMS - architettura ANSI-SPARC e indipendenza dei dati

Basi di dati e DBMS - architettura ANSI-SPARC e indipendenza dei dati

In questa pagina 6

Il corso parte da una domanda pratica: perché un'applicazione non può semplicemente salvare i suoi dati in file? La risposta è l'elenco di problemi che il DBMS risolve, e l'architettura a tre livelli che spiega come lo fa.

Database e DBMS

Definizione (base di dati). Una base di dati (database, DB) è una collezione permanente, coerente e integrata di dati correlati, tenuta per lungo tempo (anche decenni), progettata per uno scopo preciso e per utenti ben identificati. Rappresenta alcuni aspetti del mondo reale, detto mini-mondo o universe of discourse. I dati sono fatti noti che si possono registrare e hanno un significato intrinseco.

Definizione (DBMS). Un sistema di gestione di basi di dati (database management system) è un software generico che permette di creare, gestire e aggiornare un DB. Tre attività:

  • definizione: lo schema (tipi di dato, struttura, vincoli) è scritto nel catalogo di sistema come metadati;
  • costruzione: memorizzazione dei dati veri e propri;
  • manipolazione: interrogazioni (query) e aggiornamenti.

Un DB è quindi autodescrittivo: contiene i dati e, nel catalogo, la descrizione di come sono fatti. I programmi non incorporano la struttura dei dati (separazione tra programmi e dati), e questo è il punto di partenza dell'indipendenza dei dati.

Esempio concreto: i dati di una università (studenti, docenti, esami) in un DBMS relazionale come PostgreSQL. Lo schema Studente(matricola, nome, cognome, data_nascita) sta nel catalogo; le righe sono i dati; SELECT nome FROM Studente WHERE matricola = 6554 è una manipolazione.

Caratteristiche dei database

Perché un file system non è un database

Il file system (File system - interfaccia, directory e implementazioneUn file è uno spazio di indirizzi logici contigui con attributi (nome, identificatore, tipo, posizione, dimensione, protezione, date) e operazioni (create, read, write, seek, delete, truncate, open, close); il sistema tiene una tabella dei file aperti di sistema e una per processo; l'accesso è sequenziale o diretto; le directory si organizzano a livello singolo, a due livelli, ad albero, a grafo aciclico (hard link e link simbolici) o a grafo generale; i permessi UNIX rwx per proprietario, gruppo e altri (chmod 754); il file system è a strati (file system logico, organizzazione dei file, file system di base, controllo dell'I/O), con strutture su disco (boot block, superblock, directory, FCB o inode) e in memoria; i blocchi si allocano in modo contiguo (extent), concatenato (FAT) o indicizzato (inode con puntatori diretti e indiretti, ext4 con extent); lo spazio libero con bitmap, lista, raggruppamento o conteggio; mount, VFS, file system distribuiti (NFS) e semantiche di consistenza.File system - interfaccia, directory e implementazione →) memorizza grandi quantità di dati in modo permanente, ma:

  • lo schema è limitatissimo (alberi di directory) e l'accesso efficiente a dati la cui posizione non è nota in anticipo non è garantito;
  • la durabilità non è assicurata (servono checksum, backup);
  • non evita ridondanza e incoerenza, né offre isolamento e atomicità;
  • ogni funzione da DBMS richiede codice applicativo ad hoc.

Dagli archivi ai database

Con gli archivi (file) ogni applicazione ha il suo: applicazione Studenti con l'archivio Studenti, applicazione Docenti con l'archivio Docenti, applicazione Esami con l'archivio Esami. Problemi:

Problema Conseguenza
duplicazione e alta ridondanza: lo stesso dato in più archivi con rappresentazioni diverse incoerenze possibili, spreco di risorse
cicli di vita diversi per lo stesso dato incoerenze possibili
caratteristiche fisiche diverse ottimizzazione locale e non globale
vincoli di integrità diversi incoerenze possibili

Con un DBMS le applicazioni accedono a un'unica base di dati (Studenti, Docenti ed Esami insieme) tramite il DBMS: i dati sono memorizzati una volta e i vincoli sono definiti in un posto solo.

Architettura ANSI/SPARC

L'architettura ANSI/SPARC (Tsichritzis e Klug, 1978) descrive un DBMS con tre livelli di schema:

Definizione (livelli).

  • Schema esterno (livello esterno): uno per ogni applicazione o gruppo di utenti, descrive solo i dati rilevanti per quella applicazione (una vista).
  • Schema logico (livello logico): rappresentazione integrata dei dati, indipendente dalla loro rappresentazione fisica. È quello che si disegna con il modello relazionale.
  • Schema interno (livello fisico): rappresentazione in strutture dati e unità di memorizzazione (file, pagine, indici).

Tra i livelli ci sono le corrispondenze (mapping) esterno/logico e logico/interno, mantenute dal DBMS. L'accesso ai dati avviene sempre tramite il livello esterno (che può coincidere con il logico).

Esempio con l'università:

sql
-- livello logico: la tabella
CREATE TABLE Studente (matricola INT PRIMARY KEY, nome TEXT, cognome TEXT, data_nascita DATE);
CREATE TABLE Esame    (matricola INT, corso INT, voto INT, PRIMARY KEY (matricola, corso));

-- livello esterno: la vista per la segreteria (senza data di nascita)
CREATE VIEW VistaSegreteria AS
  SELECT s.matricola, s.cognome, e.corso, e.voto
  FROM Studente s JOIN Esame e ON s.matricola = e.matricola;

-- livello interno: una struttura fisica di accesso
CREATE INDEX idx_esame_corso ON Esame (corso);

Indipendenza dei dati

Grazie ai livelli si hanno due forme di indipendenza (è il motivo per cui il modello relazionale fu proposto, Modello relazionale - relazioni, chiavi e vincoliIl modello relazionale (Codd, IBM, 1970) rappresenta i dati con relazioni, cioè tabelle, ed è basato su valori: i legami tra relazioni sono confronti di valori, non puntatori, il che garantisce indipendenza dalle strutture fisiche, portabilità e bidirezionalità. Una relazione matematica è un sottoinsieme del prodotto cartesiano di n domini (insieme di n-uple ordinate, senza duplicati né ordine tra le righe); una relazione del modello è un insieme di tuple, funzioni dagli attributi ai valori del dominio, quindi non posizionale. Si distinguono schema di relazione e istanza, schema di base di dati (relazioni più vincoli) e istanza. NULL è un valore speciale fuori da ogni dominio. I vincoli di integrità sono intra-relazionali (di dominio, di tupla, di chiave) e inter-relazionali (integrità referenziale, con la chiave esterna). Superchiave: insieme di attributi che non ripete mai i valori; chiave: superchiave minimale; ogni relazione ne ha almeno una (tutti gli attributi); la chiave primaria è una chiave scelta, senza NULL.Modello relazionale - relazioni, chiavi e vincoli →):

Definizione (indipendenza fisica). Gli schemi logico ed esterno non dipendono dallo schema interno, che può cambiare senza modificarli.

Definizione (indipendenza logica). Lo schema esterno non dipende dallo schema logico: aggiunte e modifiche alle viste non richiedono cambiamenti al livello logico (e, viceversa, modifiche logiche si assorbono ridefinendo le viste).

Nell'esempio: creare o eliminare idx_esame_corso cambia la velocità, non il testo di nessuna query (fisica). Se la tabella Studente viene divisa in Anagrafica e Iscrizione, basta ridefinire VistaSegreteria e le applicazioni che la usano restano invariate (logica).

Attori

  • Progettisti e sviluppatori del DBMS (il software stesso).
  • Amministratore della base di dati (DBA): sicurezza, prestazioni, backup.
  • Progettista della base di dati: scrive gli schemi (questa è la materia delle note successive).
  • Progettisti e sviluppatori delle applicazioni.
  • Utenti finali: parametrici (eseguono attività predefinite, come lo sportellista) e occasionali (casual, eseguono interrogazioni generiche non predefinite).

Un po' di storia

  • 1970: Codd propone il modello relazionale; 1976: Chen propone il modello ER.
  • 1977: System R di IBM (dal quale SQL); Ingres a Berkeley; 1979 Oracle; 1983 IBM DB2.
  • 1986-1996: Postgres a Berkeley, poi PostgreSQL; 1998 MySQL (open source).
  • Standard SQL ISO: SQL-86, SQL-89, SQL-92, SQL:1999, :2003, :2006, :2008, :2011, :2016.

Domande d'esame

1. Elencare le caratteristiche di un DBMS che un file system non garantisce. Traccia. Riduzione di ridondanza e incoerenza, controllo della concorrenza (isolamento, atomicità), durabilità dei dati dopo guasti, sicurezza con autenticazione e autorizzazione, accesso efficiente a dati la cui posizione non è nota, un vero schema con vincoli. Il file system può solo fornire spazio permanente.

2. Descrivere i tre livelli dell'architettura ANSI/SPARC e dire quale indipendenza garantiscono. Traccia. Esterno (viste per applicazione), logico (schema integrato indipendente dalla memorizzazione), interno (strutture fisiche). Il cambiamento dell'interno non tocca logico ed esterno (indipendenza fisica); il cambiamento del logico non tocca le applicazioni, se le viste si adeguano (indipendenza logica). Esempio: un indice cambia le prestazioni, non le query.

3. Quale differenza c'è tra schema e istanza, e tra DB e DBMS? Traccia. Lo schema descrive la struttura (livello intensionale), l'istanza sono i dati veri (livello estensionale, Ciclo di vita di un sistema informativo e analisi dei requisitiIl ciclo di vita di un sistema informativo ha le fasi studio di fattibilità, analisi dei requisiti, progettazione (dei dati e delle applicazioni), sviluppo, collaudo, esercizio e manutenzione; il modello a cascata procede in sequenza, quello a spirale itera per versioni. I requisiti sono funzionali (che cosa fa il sistema), non funzionali (come lo fa, es. tempi) e vincoli aggiuntivi imposti dai committenti; si raccolgono da frasi in linguaggio naturale, documentazione e applicazioni esistenti e si analizzano con frasi filtrate e glossario dei dati. La progettazione di una base di dati ha tre fasi: concettuale (schema ER, indipendente dal DBMS), logica (schema relazionale, per una classe di DBMS, con il carico applicativo) e fisica (strutture del DBMS scelto). Un modello è un insieme di costrutti, lo schema è la rappresentazione del mini-mondo (livello intensionale), l'istanza sono i dati (livello estensionale); un buono schema è completo, corretto, minimale e leggibile.Ciclo di vita di un sistema informativo e analisi dei requisiti →); il DB sono i dati più lo schema, il DBMS il software che li gestisce.

Versione ripasso

Livello Cosa contiene Esempio
esterno una vista per applicazione VistaSegreteria(matricola, cognome, corso, voto), senza la data di nascita
logico tabelle integrate Studente(matricola, nome, cognome, data_nascita), Esame(matricola, corso, voto)
interno strutture fisiche file, pagine, CREATE INDEX idx_esame_corso ON Esame(corso)
  • Indipendenza fisica: creare o togliere l'indice cambia la velocità e non il testo delle query. Indipendenza logica: se Studente si divide in Anagrafica e Iscrizione, si ridefinisce la vista e le applicazioni non cambiano.
  • File contro DBMS (da sapere a elenco): schema ricco (non solo alberi di directory), accesso efficiente senza conoscere la posizione, durabilità (non solo checksum e backup), niente ridondanza e incoerenza, isolamento e atomicità, nessun codice ad hoc.
  • Dagli archivi al DB: archivi separati dànno duplicazione, cicli di vita e vincoli diversi, ottimizzazione solo locale; con il DBMS un unico DB serve tutte le applicazioni.
  • Storia: 1970 Codd (relazionale), 1976 Chen (ER), 1977 System R (IBM, SQL), 1979 Oracle, 1983 DB2, PostgreSQL dal 1996, standard SQL ISO da SQL-86 a SQL:2016.
  • Schema e istanza: lo schema (intensionale) sta nel catalogo come metadati; l'istanza (estensionale) sono i dati.

Esercizi su questo argomento

Teoria collegata