INFORMAZIONI SU

Complementi di basi di dati

Programma dell'insegnamento di Complementi di basi di dati - Corso di laurea magistrale in Informatica (2013/14)

Docente

Prof. Aggr. Nicola Vitacolonna

Crediti

6 CFU

Finalità

Il corso ha lo scopo di far acquisire allo studente una conoscenza approfondita dei metodi per la progettazione e l'implementazione di basi di dati relazionali. Il corso mira dunque a fornire adeguate competenze tecniche inerenti alle funzionalità avanzate dei Sistemi di Gestione di Basi di Dati (DBMS, DataBase Management System) attualmente in uso. Ulteriore obiettivo è presentare le tendenze più recenti nell'ambito della tecnologia delle basi di dati. Alla fine del corso lo studente sarà in grado di gestire la progettazione di una base di dati nell'intero ciclo di vita, dall'analisi dei requisiti alla manutenzione; sarà in grado di valutare le prestazioni di una basi di dati e attuare misure di correzione, nonché di realizzare adeguatamente le opportune politiche di sicurezza e privatezza dei dati; avrà inoltre assimilato i concetti e le metodologie fondamentali per la configurazione di sistemi per basi di dati distribuite e per l'analisi di dati spaziali.

Programma

• Normalizzazione di schemi (8 ore): Dipendenze funzionali e forme normali. Insiemi canonici. Terza forma normale e forma normale di Boyce-Codd. Forme normali superiori. Tecniche di decomposizione di schemi relazionali per la rimozione di anomalie e ridondanze. Esempi di progettazione logica di basi di dati.

• Tecniche avanzate di progettazione fisica (8 ore): Catalogo e statistiche della base di dati. Fattori di selettività e stime dei costi delle interrogazioni. Analisi dei piani d'esecuzione. Ottimizzazione di interrogazioni. Partizionamento dei dati. Viste materializzate. Clustering multidimensionale.

• SQL e linguaggi di programmazione (12 ore): Approcci alla programmazione per basi di dati. Funzioni definite dall'utente e trigger nel linguaggio PL/pgSQL. SQL embedded statico (interrogazioni semplici e complesse, l'utilizzo dei cursori) e dinamico (esecuzione immediata ed esecuzione in due fasi). Utilizzo di librerie di funzioni: SQL/CLI (Call Level Interface), ODBC e JDBC. Realizzazione di una base di dati per un'applicazione web.

• Basi di dati spaziali (8 ore): Introduzione ai GIS e dati geografici/territoriali. Rilevamento dei dati geografici e livelli di astrazione: livello concettuale (visione a campi e visione ad oggetti), livello di rappresentazione, livello di implementazione (formato raster e formato vettoriale). DBMS come componente di un GIS: approccio “naïve”, accoppiamento debole e approccio integrato. Metodi d'indicizzazione di dati spaziali: ordinamento totale vs prossimità/inclusione di oggetti, campi di ricerca e metodologia, indici space-driven e indici data-driven. Interfacciamento delle basi di dati con i GIS (QGIS). Sistemi WebGIS e standard OCG. SQL spaziale. PostGIS, estensione spaziale di PostgreSQL: tipi di dati spaziali, tabelle spaziali, creazione indici, inserimento istanze, funzioni spaziali e interrogazioni.

• Sicurezza (4 ore): problematiche inerenti alla sicurezza nelle basi di dati e misure di controllo. Controllo degli accessi discrezionale (DAC). Controllo degli accessi vincolato (MAC). Controllo degli accessi basato sui ruoli (RBAC). Supporto di SQL alla sicurezza: istruzioni grant, revoke, create role. Audit trail. Caso di studio: sicurezza in MySQL, PostgreSQL e Oracle.

• Basi di dati distribuite (8 ore): Sistemi shared-nothing. Speedup e scaleup. Fattori limitanti alla scalabilità: costo di startup, interferenza, asimmetria (skew) dei dati. Memorizzazione distribuita dei dati: replicazione e frammentazione. Partizionamento orizzontale dei dati: round-robin, hash e range partitioning. Elaborazione delle interrogazioni in basi di dati distribuite. Controllo della concorrenza e dell’affidabilità. Cloud computing e tecnologie recenti per la gestione distribuita dei dati. Consistenza eventuale. Sistemi BASE vs ACID. Caratteristiche generali dei software NoSQL. Il modello di programmazione MapReduce e una sua implementazione open-source (Hadoop).

Bibliografia

Testo principale:
• A. Silberschatz e H. F. Korth and S. Sudarshan, Database system concepts, sesta edizione, McGraw-Hill, 2011.

Testi complementari:
• Chris Date, An Introduction to Database Systems, ottava edizione, Addison-Wesley, 2004.
• Ramez Elmasri e Shamkant Navathe, Fundamentals of Database Systems, sesta edizione, Addison-Wesley, 2010.

Tutti i testi sono reperibili presso la Biblioteca di Scienze.

Modalità d'esame

Allo studente è richiesto di realizzare e documentare un progetto di sviluppo di una base di dati fornito dal docente.