Università degli Studi di Cagliari Corso di Laurea Magistrale in Ingegneria per l Ambiente ed il Territorio LABORATORIO di INFORMATICA A.A. 2010/2011 Prof. Giorgio Giacinto INTRODUZIONE AI SISTEMI DI BASI DI DATI http://www.diee.unica.it/giacinto/lab Che cos è un DBMS?! Una collezione integrata molto grande di dati! Modella organizzazioni del mondo reale! Entità (ad esempio studenti, corsi)! Relazioni (ad esempio, Antonella segue il corso 564)! Un DataBase Management System (DBMS) è un pacchetto software progettato per memorizzare e gestire basi di dati Giorgio Giacinto 2010 Laboratorio di Informatica 2
Gestione dei dati! Progettazione di basi di dati e sviluppo di applicazioni! Analisi dei dati! Concorrenza (utilizzo da parte di più utenti) e robustezza (protezione dei dati in caso di guasti)! Efficienza e scalabilità Giorgio Giacinto 2010 Laboratorio di Informatica 3 Cenni storici! Anni 60: primo DBMS progettato dalla General Electric! Fine anni 60: primo DBMS dell IBM! IBM e American Airlines svilupparono Il sistema di prenotazione area SABRE! 1970: Edgar Codd propose il modello relazionale dei dati! Anni 80: Modello relazionale si impone sugli altri modelli di dati Giorgio Giacinto 2010 Laboratorio di Informatica 4
Cenni storici! A partire dagli anni 80: diffusione del linguaggio SQL (sviluppato come parte del System R della IBM)! Standardizzazione SQL negli anni 90! Ulteriori progressi! Memorizzazione e gestione di dati provenienti da diverse basi di dati (data warehouse)! Analisi di dati con strumenti di data mining /business intelligence! Commercio elettronico, librerie digitali, mappatura genoma umano, contenuti multimediali Giorgio Giacinto 2010 Laboratorio di Informatica 5 Cenni storici! In tempi più recenti sono comparsi pacchetti applicativi basati su DBMS! ERP (Enterprise Resource Planning)! MRP (Management Resource Planning) produttori: Oracle, SAP, PeopleSoft, ecc.! Questi pacchetti identificano operazioni gestionali comuni e forniscono uno strato applicativo! I dati sono memorizzati in un DBMS Giorgio Giacinto 2010 Laboratorio di Informatica 6
Cenni storici! La diffusione di Internet ha trasformato ulteriormente il mondo delle basi di dati Le interrogazioni e i relativi risultati vengono sempre più spesso mostrati attraverso l uso di un browser! I testi sono formattati attraverso HTML/XML Giorgio Giacinto 2010 Laboratorio di Informatica 7 Uso di file per la gestione dei dati! Necessità di spostare grandi insiemi di dati tra memoria principale e memoria secondaria (ad esempio in caso di buffering, di accessi orientati alla pagina, di indirizzamento a 32 bit, etc.) per esaminare tutti i dati! Necessità di scrivere programmi diversi per ciascuna interrogazione! Protezione dei dati da inconsistenza dovuta a utenti multipli che accedono ai dati in maniera concorrente! Gestire il ripristino da crash! Meccanismi insufficienti per garantire la sicurezza dei dati Giorgio Giacinto 2010 Laboratorio di Informatica 8
Perché usare un DBMS?! Indipendenza dei dati e accesso efficiente! Tempo ridotto di sviluppo dell applicazione! Integrità dei dati e sicurezza! Amministrazione dei dati uniforme! Accesso concorrente, ripristino da crash Giorgio Giacinto 2010 Laboratorio di Informatica 9 Quando non usare un DBMS! Applicazioni con vincoli rigidi di tempo reale! Applicazioni con alcune operazioni critiche che richiedono la scrittura ad hoc di un codice efficiente! Applicazioni che necessitano di tipi di manipolazione di dati non supportati dai DBMS! Analisi costi/benefici Giorgio Giacinto 2010 Laboratorio di Informatica 10
Movimento NoSQL! Motivato dalla moda più diffusa di utilizzo dei DBMS anche in ambienti dove! Il modello relazionale non è il più adatto a rappresentare le informazioni di interesse! Non sono definiti vincoli di integrità! Non devono essere supportate le transazioni In questi casi il DBMS rallenta le operazioni del sistema! Proposti modelli alternativi di gestione dei dati (es., BigTables di Google) Giorgio Giacinto 2010 Laboratorio di Informatica 11 Perché studiare le basi di dati?! Spostamento dalla computazione all informazione! A livello base : gestire i dati caotici del Web! Ad alto livello : applicazioni scientifiche! Gli insiemi di dati aumentano in varietà e volume! Librerie digitali, video interattivi, progetto Genoma Umano, progetto EOS... necessità di crescita esponenziale dei DBMS! I DBMS coprono gran parte dell informatica Sistemi operativi, linguaggi, teoria, Intelligenza Artificiale, multimedialità, logica Giorgio Giacinto 2010 Laboratorio di Informatica 12
MODELLI DI DATI Modelli di dati! Un modello di dati è una collezione di concetti per la descrizione dei dati! Uno schema è una descrizione di una particolare collezione di dati, che fa uso del modello di dati fornito! Il modello di dati relazionale è il modello oggi più usato! Concetto chiave: relazione, fondamentalmente una tabella con righe e colonne! Ogni relazione ha uno schema, che descrive le colonne, o campi Giorgio Giacinto 2010 Laboratorio di Informatica 14
Esempio di relazione Schema Studenti(sid: string, nome: string, login: string, età: integer, media: real) Istanza sid 53666 53688 53650 53831 53832 nome Jones Smith Smith Madayan Guldu login Jones@cs Smith@ee Smith@math Madayan@music Guldu@music età 18 18 19 11 12 media 3.4 3.2 3.8 1.8 2.0 Giorgio Giacinto 2010 Laboratorio di Informatica 15 Livelli di astrazione! Molte viste, un singolo schema logico (concettuale) e uno schema fisico! Le viste descrivono i dati come vengono visti dagli utenti! Lo schema logico definisce la struttura logica! Lo schema fisico descrive i file e gli indici usati Vista 1 Vista 2 Vista 3 Schema Logico Schema Fisico Disco Giorgio Giacinto 2010 Laboratorio di Informatica 16
Esempio: La base di dati di una Università! Schema logico! Studenti(sid: string, nome: string, login: string, età: integer, media: real)! Corsi(cid: string, cnome: string, crediti: integer)! Iscritto(sid: string, cid: string, voto: string)! Schema fisico! Le relazioni sono memorizzate come file non ordinati! Indice sulla prima colonna di Studenti! Schema esterno (vista)! InfoCorso(cid: string, iscritti: integer) Giorgio Giacinto 2010 Laboratorio di Informatica 17 Indipendenza dei dati* Le applicazioni sono separate dalla struttura logica e dalla memorizzazione fisica dei dati! Indipendenza logica dei dati: protezione dalle modifiche alla struttura logica dei dati! Un cambiamento della struttura logica dei dati non si riflette sulle viste degli utenti! Indipendenza fisica dei dati: protezione dalle modifiche alla struttura fisica dei dati! Un cambiamento della struttura fisica dei dati non si riflette sulla struttura logica dei dati *Uno dei più importanti benefici dell uso di un DBMS! Giorgio Giacinto 2010 Laboratorio di Informatica 18
LINGUAGGI DEI DBMS Interrogazioni in un DBMS! Le interrogazioni sono le domande che un utente pone al DBMS per estrarre informazioni dai dati! Qual è il nome dello studente con matricola 24532?! Quanti studenti sono iscritti al corso 8305?! Il corso 8352 è seguito da studenti con una media minore di 23?! Un DBMS fornisce un linguaggio per esprimere le interrogazioni Giorgio Giacinto 2010 Laboratorio di Informatica 20
Linguaggi del modello relazionale! Calcolo relazionale! Linguaggio formale basato sulla logica matematica! Algebra relazionale! Linguaggio formale basato su una collezione di operatori! Un DBMS cerca di valutare le interrogazioni nel modo più efficiente possibile Giorgio Giacinto 2010 Laboratorio di Informatica 21 Linguaggi dei DBMS! DML (Data Manipulation Language)! Inserire, modificare, interrogare i dati! DDL (Data Definition Language)! Per creare lo schema logico! Il linguaggio SQL contiene comandi DDL e DML Giorgio Giacinto 2010 Laboratorio di Informatica 22
TRANSAZIONI Controllo di concorrenza! L esecuzione concorrente di programmi utente è essenziale per ottenere buone prestazioni dal DBMS! Gli accessi al disco sono frequenti e relativamente lenti, perciò è importante tenere occupata la CPU lavorando su diversi programmi utente! Le azioni interallacciate di diversi programmi utente possono portare a inconsistenza: ad esempio, un assegno viene pagato mentre viene calcolato il saldo del conto corrente! Il DBMS garantisce che tali problemi non si presentino: ogni utente può immaginare di essere l unico utente del sistema Giorgio Giacinto 2010 Laboratorio di Informatica 24
Transazione! Il concetto chiave è la transazione,! è una sequenza atomica di azioni sulla base di dati (letture/scritture)! Ciascuna transazione, eseguita completamente, deve lasciare la base di dati in uno stato coerente! Gli utenti possono specificare alcuni semplici vincoli di integrità sui dati, e il DBMS garantirà tali vincoli! Il DBSM non capisce la semantica dei dati (ad esempio il calcolo degli interessi su un conto bancario)! Garantire che una transazione eseguita da sola conservi la coerenza dei dati è, in ultima analisi, responsabilità dell utente! Giorgio Giacinto 2010 Laboratorio di Informatica 25 Garantire l atomicità! Il DBMS garantisce l atomicità (proprietà tutto-oniente) anche se il sistema va in crash durante una transazione! Idea: mantenere un log (una storia) di tutte le azioni effettuate dal DBMS nell eseguire un insieme di transazioni! prima che una modifica sia fatta alla base di dati, la voce corrispondente del log viene messa al sicuro (protocollo WAL - Write-Ahead Log - spesso non supportato dal sistema operativo)! dopo un crash, gli effetti delle transazioni eseguite parzialmente sono annullati usando il log (grazie al WAL, se una voce del log non era stata salvata prima del crash, le corrispondenti modifiche alla base di dati non erano state apportate!) Giorgio Giacinto 2010 Laboratorio di Informatica 26
Il log! Le seguenti azioni sono registrate nel log! T i scrive un oggetto: il vecchio valore e il nuovo valore! Il record nel log deve essere salvato su disco prima della pagina modificata! T i termina/si interrompe: un record nel log registra tale azione! I record nel log sono collegati tramite l ID della transazione, così che sia semplice annullare una transazione specificata (ad esempio per risolvere un deadlock) Giorgio Giacinto 2010 Laboratorio di Informatica 27 Il log! Il log è spesso duplicato e archiviato in una memoria stabile! Tutte le attività connesse al log (e di fatto tutte le attività connesse al controllo di concorrenza, come blocco/sblocco, gestione dei deadlock, ecc) sono gestite dal DBMS in maniera trasparente Giorgio Giacinto 2010 Laboratorio di Informatica 28
GLI ATTORI IN SCENA Le basi di dati fanno felici queste persone...! Utenti finali e produttori di DBMS! Programmatori di applicazioni per DBMS! Ad esempio gestori di siti Web! Amministratori di basi di dati (DBA)! Progettano gli schemi logico/fisico! Gestiscono la sicurezza e le autorizzazioni! Gestiscono disponibilità dei dati, ripristino da crash! Modificano lo schema della base di dati con l evolversi delle necessità Giorgio Giacinto 2010 Laboratorio di Informatica 30
Struttura di un DBMS Giorgio Giacinto 2010 Laboratorio di Informatica 31 Sommario! Un DBMS è usato per mantenere e interrogare grandi insiemi di dati! Tra i benefici, il ripristino dai crash del sistema, l accesso concorrente, il rapido sviluppo di applicazioni, l integrità dei dati e la sicurezza! I livelli di astrazione portano all indipendenza dei dati! Un DBMS tipicamente ha un architettura stratificata! I DBA svolgono un lavoro di responsabilità! La ricerca e sviluppo nei DBMS è una della più vaste aree dell informatica Giorgio Giacinto 2010 Laboratorio di Informatica 32