INFORMAZIONI SU

Complementi di basi di dati

Programma dell'insegnamento - Corso di laurea in Informatica Magistrale

 

Docente

  • Prof. Nicola Vitacolonna

Indirizzo e-mail

nicola.vitacolonna@uniud.it

Indirizzo Pagina Web Personale

http://sole.dimi.uniud.it/~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 e temporali.

Programma

• Progettazione logica di basi di dati: 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: 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: 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: 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: 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: 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. Teorema CAP. Consistenza eventuale. Sistemi BASE vs ACID. Caratteristiche generali dei software NoSQL e NewSQL. Il modello di programmazione MapReduce e una sua implementazione open-source (Hadoop). Implementazione di operatori dell'algebra relazionale in MapReduce.

Attività di Laboratorio

Sono previste almeno 10 ore di attività pratiche al calcolatore, in cui lo studente avrà modo di sperimentare le tecniche di analisi e ottimizzazione delle interrogazioni, l'uso di interfacce di programmazione per le basi di dati, nonché implementare semplici basi di dati spaziali, temporali e distribuite.

Prerequisiti

Il corso di Basi di Dati è un prerequisito fondamentale di questo corso. Inoltre, sebbene non sia obbligatorio, è raccomandabile aver frequentato, o frequentare contestualmente, un corso di algoritmi, un corso di programmazione, un corso di logica e un corso di sistemi distribuiti.

Bibliografia

Testo di riferimento

Avi Silberschatz, Henry F. Korth, S. Sudarshan, Database System Concepts, sesta edizione, McGraw-Hill, 2010.

Testi per la consultazione

Jeffrey D. Ullman, Principles of Database and Knowledge-Base Systems, Vol. 1, Computer Science Press, 1988.

Serge Abiteboul, Richard Hull, Victor Vianu, Foundations of Databases, Addison-Wesley, 1995 (http://webdam.inria.fr/Alice/).

David Maier, The Theory of Relational Databases, Computer Science Press, 1983 (http://web.cecs.pdx.edu/~maier/TheoryBook/TRD.html).

Chris Date, An Introduction to Database Systems, ottava edizione, Addison-Wesley, 2004.

Anand Rajaraman, Jeffrey D. Ullman, Jure Leskovec, Mining of Massive Datasets, Cambridge University Press, 2013 (http://infolab.stanford.edu/~ullman/mmds.html).

Durante il corso sono inoltre forniti articoli di approfondimento e dispense del docente.

Tutti i testi usati nel corso sono disponibili in biblioteca ovvero accessibili gratuitamente online.

Modalità d'esame

L'esame consiste in un progetto individuale, che ha l'obiettivo di approfondire alcuni temi studiati durante il corso. Tale progetto è valutato attraverso la compilazione di un form online e una successiva presentazione orale di circa venti minuti.

Orario di ricevimento

Martedì, ore 15:00–17:00, o su appuntamento.