Progetto del Secondo Modulo del corso di Modelli e Architetture Avanzati di Basi di Dati
Questo corso è un corso avanzato dedicato ai modelli di dati e alle architetture dei sistemi database. È composto da due moduli, il primo dei quali si concentra sugli aspetti architetturali dei database e viene insegnato in aula. Il secondo modulo è dedicato ai database NoSQL e alle loro applicazioni nel trattamento dei Big Data.
Il corso ha due obiettivi principali:
Per quanto riguarda i modelli di dati: L'obiettivo è che gli studenti acquisiscano competenze per affrontare con successo applicazioni in una vasta gamma di ambienti diversi. Saranno in grado di utilizzare i principali modelli per dati strutturati alternativi al modello relazionale, come i modelli orientati agli oggetti e object-relational. Inoltre, acquisiranno competenze sui principali modelli di database NoSQL per dati eterogenei e poco strutturati, tra cui il modello "chiave-valore", il modello basato su colonne, il modello basato su documenti (JSON) e il modello basato su grafi.
Per quanto riguarda le architetture dei sistemi database: L'obiettivo è consentire agli studenti di migliorare le prestazioni delle applicazioni critiche e di progettare sistemi ad hoc. Gli studenti acquisiranno una comprensione approfondita dei problemi e delle soluzioni architetturali per sistemi database centralizzati e distribuiti. Ci si concentrerà sulla gestione dei problemi di recupero e controllo della concorrenza nei sistemi database relazionali. Per quanto riguarda i database NoSQL, il corso tratterà i problemi relativi alla manutenzione della consistenza in applicazioni distribuite, ai metodi per il rilassamento della consistenza, alla disponibilità dei dati e alla gestione delle repliche, nonché alla tolleranza al partizionamento in cluster di macchine.
Durante il corso, gli studenti avranno l'opportunità di esaminare le architetture software e i linguaggi di interrogazione di quattro database NoSQL, uno per ciascuna tipologia di modello di dati. Saranno in grado di sviluppare un'applicazione software pratica legata al tema dei Big Data e, durante il progetto, utilizzeranno entrambi i tipi di sistemi database, confrontandoli in termini di prestazioni.
Le studentesse e gli studenti dovrebbero raggiungere i seguenti risultati di apprendimento:
- Comprensione delle motivazioni, dei costrutti e dell'uso dei modelli object-oriented, object-relational e NoSQL.
- Competenza nelle principali operazioni dell'algebra relazionale e nelle strutture di accesso ai dati.
- Capacità di progettare e implementare sistemi di controllo della concorrenza e di recupero da malfunzionamenti in ambienti database.
- Conoscenza delle principali architetture e linguaggi di interrogazione dei database NoSQL.
- Competenza nello sviluppo di applicazioni software che utilizzano sia database relazionali che NoSQL e capacità di confrontarli in termini prestazionali.
Il programma del primo modulo include i seguenti argomenti:
- Dispositivi di memorizzazione
- Indicizzazione e Hashing
- Risoluzione di operazioni tramite scansioni sequenziali, inclusa selezione, proiezione e join con diverse tecniche.
- Gestione del buffer
- Ottimizzazione delle interrogazioni
- Transazioni
- Gestione dei malfunzionamenti
- Controllo della concorrenza
Il secondo modulo include i seguenti argomenti:
- Introduzione ai database NoSQL
- Modelli di dati NoSQL, operazioni e architetture software
- Teorema CAP e sue conseguenze nelle applicazioni distribuite
- Metodi per il rilassamento del concetto di consistenza "forte"
- Mantenimento delle repliche per la disponibilità dei dati
- Tolleranza al partizionamento in sistemi distribuiti (cluster)
- Panoramica di AdHoop e MapReduce
- Sviluppo di un'applicazione software pratica legata al tratt
IL progetto è stato svolto insieme a [email protected]