Università degli Studi di Napoli "Parthenope"

Scheda dell'insegnamento

Anno accademico: 
2018/2019
Tipologia di insegnamento: 
Caratterizzante
Tipo di attività: 
Obbligatorio
Corso di afferenza: 
Corso di Corso di Laurea Magistrale in INFORMATICA APPLICATA (MACHINE LEARNING E BIG DATA)
Settore disciplinare: 
INFORMATICA (INF/01)
Lingua: 
Italiano
Crediti: 
6
Anno di corso: 
1
Docenti: 
Ciclo: 
Secondo Semestre
Ore di attivita' frontale: 
48

Obiettivi

Il corso si propone di fornire le competenze essenziali per ottimizzare la gestione di una Base di Dati tramite un Database Management System di tipo relazionale e una visione generale di diverse tipologie di DBMS in modo da operare una scelta consapevole della tecnologia più adatta ad ogni caso d'uso.

La parte preponderante del corso riguarda la progettazione fisica, ovvero lo studio delle tecniche atte a migliorare le prestazioni di una base di dati relazionale esistente. Si presume che lo schema relazionale sia dato, e si illustra come sia possibile migliorare anche di ordini di grandezza il tempo di accesso ai dati in esso contenuti. Oltre questo, si presenta una panoramica su tecnologie non strettamente relazionali collegate al fenomeno dei Big Data e all'esplosione dei dati non strutturati, anche in ambiente distribuito, accennando al paradigma Map-Reduce e ai sistemi Not Only SQL.

A fine corso, l’abilità principale acquisita sarà quella di leggere un piano d'esecuzione e di decidere se, quando e in che modo usare in un database relazionale le principali tecniche di ottimizzazione (indicizzazione, multidimensional clustering, range partitioning, viste materializzate, caching) o decidere una strategia di partizionamento dei dati (Sharding) in ambiente distribuito, ovvero tutto ciò che sta sotto l’ombrello del Database tuning. Dal punto di vista pratico, si miglioreranno nelle lezioni di laboratorio le capacità operative sul DBMS Oracle attraverso esempi ed esercizi di funzioni avanzate non trattate nel corso di primo livello e l'approfondimento del linguaggio PL/SQL. Saranno introdotti inoltre i rudimenti della tecnologia JSP – quanto basta per sviluppare una semplice applicazione web di tipo gestionale. Sarà infine possibile per lo studente decidere quando è opportuno utilizzare una tecnologia alternativa e quale può essere più adeguata secondo la natura dei dati e le esigenze che ha di fronte.
Per superare l'esame è richiesto lo sviluppo di un progetto individuale, che partendo da un caso verosimile di Base di Dati reale, la doti di tutte le funzionalità avanzate trattate nelle lezioni di laboratorio e metta alla prova sia la capacità di astrazione, ragionamento e risoluzione di problemi, sia la capacità operativa su di un software complesso come il DBMS Oracle.

Conoscenza e capacità di comprensione:
Lo studente deve dimostrare di muoversi con autonomia nella gestione di Basi di Dati relazionali, immaginando ed implementando funzionalità evolute e padroneggiando il linguaggio PL/SQL e i rudimenti di JSP. Deve inoltre dimostrare buona comprensione del funzionamento fondamentale e dei casi d'uso di sistemi non relazionali, siano essi chiave-valore, document store, colonnari o graph based.

Capacità di applicare conoscenza e comprensione:
Lo studente deve dimostrare di saper dotare una Base di Dati relazionale preesistente di funzionalità evolute e di saper sviluppare una web application completa di tipo gestionale partendo da un Database Preesistente (tipicamente il DB sviluppato come progetto in BDI).

Abilità comunicative:
lo studente deve essere in grado di documentare opportunamente il database sviluppato come progetto, partendo dalla descrizione delle funzionalità aggiunte fino al codice PL/SQL, avvalendosi del linguaggio visuale UML e usando correttamente la terminologia propria delle Basi di Dati.

Prerequisiti

E' necessario avere acquisito i fondamenti delle Basi di Dati relazionali trasmessi dal primo corso sulle Basi di Dati nella laurea triennale, mentre è raccomandato avere una buona padronanza degli Algoritmi e Strutture Dati.

Contenuti

Il corso approfondisce la progettazione fisica delle Basi di Dati relazionali fornendo tutti gli elementi necessari per operare un tuning consapevole delle performance di una base di dati relazionale preesistente;
inoltre fornisce una panoramica delle tecnologie alternative, anche in ambiente distribuito, per operare una scelta consapevole della soluzione di persistenza più adeguata per ciascun caso d'uso.

Metodi didattici

Lezione frontale alla lavagna ed esercitazioni pratiche al PC in laboratorio. In particolare non si distribuiscono slide, ma si incoraggiano gli studenti a partecipare attivamente alle lezioni e a prendere appunti.

Verifica dell'apprendimento

L’esame prevede la verifica delle competenze acquisite in base a tre coordinate: la prova scritta; la realizzazione di un progetto; la verifica orale.
La prova scritta verte sulla progettazione fisica, e dato un semplice schema relazionale prevede la soluzione di tre esercizi sui costi di accesso e sull’ingombro di varie configurazioni di indici e query; il progetto prevede l’aggiunta di funzionalità evolute ad un database esistente e la predisposizione di alcune pagine gestionali tramite tecnologia JSP; la verifica orale prevede la discussione del progetto seguita da alcune domande di approfondimento.
Per ciascun esercizio della prova sarà valutato il grado di completamento in una scala da 1 a 10. Il punteggio finale sarà la media pesata dei punti rappresentanti la difficoltà di ciascun esercizio con i gradi di completamento, arrotondata all’intero più vicino. La prova scritta e il progetto sono valutati con un punteggio massimo di 30/30 e di 5/5 ed un punteggio minimo di 16/20 e 3/5 rispettivamente.

Testi

Principali riferimenti:
Shamkant B. Navathe Ramez A. Elmasri. Sistemi di Basi di Dati - Fondamenti e complementi. Pearson, 7^a edizione, 2018.
Tom Nadeau Sam Lightstone, Toby Teorey. Physical Database Design. Morgan Kaufmann, 2007.
Michael McLaughlin Scott Urman, Ron Hardman. PL/SQL programming. Oracle press, 2004.

Riferimenti per alcuni argomenti specifici:
Antonio Albano. Costruire sistemi per Basi di Dati. Addison Wesley, 1^a edizione, 2001.
Joe Celko. Joe Celko’s complete guide to NoSQL. Morgan Kaufmann, 1^a edizione, 2014.
Annalisa Franco Dario Maio, Stefano Rizzi. Esercizi di progettazione di Basi di Dati. Progetto Leonardo, 2^a edizione, 2005.
Andrea Steelman Joel Murach. Java servlets and JSP. Murach and associated, 2^a edizione, 2008.
Dario Maio Paolo Ciaccia. Lezioni di Basi di Dati. Progetto Leonardo, 1^a edizione, 1995.

Tutte le lezioni di teoria sono fruibili in streaming come video in formato mov attraverso la piattaforma di e-learning del Dipartimento di Scienze e Tecnologie, dove è possibile trovare tracce d'esame e note per il laboratorio.

Altre informazioni

Ulteriori dettagli sono sulla piattaforma di e-learning.
http://e-scienzeetecnologie.uniparthenope.it/