Non ci sono precedenze obbligatorie. Il corso assume che si disponga delle conoscenze relative alle basi di dati che vengono erogate negli insegnamenti di "Basi di dati e Web" oppure nel modulo di "Basi di dati" dell'insegnamento di Informatica 1.
Al termine del corso, lo studente possiede una approfondita conoscenza del funzionamento interno di un moderno DBMS. L'attenzione viene soprattutto posta sulla comprensione dei principi che sono alla base della costruzione dei vari componenti dedicati alla gestione dei dati e delle transazioni, mettendo a disposizione un repertorio di conoscenze che possono trovare uso anche al di fuori dello specifico dominio dei sistemi relazionali e guidare al progetto di applicazioni software efficienti.
Sistemi transazionali.
Ruolo dei sistemi transazionali ed esempi classici: sistemi finanziari, bancari, di prenotazione. Concetto di transazione. Proprietà di una transazione: atomicità, consistenza, isolamento, persistenza. Teoria del controllo di concorrenza. Nozioni di serializzabilità ed equivalenza fra schedule. Locking a due fasi. Locking gerarchico. Analisi e risoluzione dei deadlock. Cenni ad altre tecniche per il controllo di concorrenza basate sull'uso di timestamp. Teoria della affidabilità. Gestione del log. Protocolli di recovery.
Architettura interna di un server relazionale.
Nozione di pagina logica e fisica. Politiche di gestione del buffer. Tecniche di ricerca e gestione e riordino dei dati con: organizzazione sequenziale, diretta, ad indice. Alberi B e B+. Funzioni di hashing. Metodi di accesso: scansioni, ordinamenti, join. Ottimizzazione delle interrogazioni.
Architetture distribuite e parallele.
Scenari applicativi per le basi di dati in un sistema informativo distribuito. Descrizione delle funzionalità dei client e dei server. Classificazione delle tipologie di basi di dati distribuite. Frammentazione e allocazione dei dati. Distribuzione e ottimizzazione delle interrogazioni. Transazioni distribuite. Commit a due, tre o quattro fasi. Paxos commit. Parallelismo. Scale-up e speed-up delle transazioni. Gestione di dati replicati: tecniche sincrone e asincrone.
Basi di dati attive.
Descrizione del paradigma ECA (evento/condizione/azione) per regole attive. Meccanismi di esecuzione di regole attive. Tecniche di analisi per regole attive. Trigger nei sistemi relazionali. Applicazioni delle basi di dati attive.
Basi di dati XML.
Introduzione ad XML come standard di interoperabilità per scambiare dati. Basi di dati relazionali-XML, basi di dati XML native. Linguaggi di interrogazione per XML: XPath, XQuery.
Cenni ad aspetti evolutivi e linee di tendenza.
La didattica si svolgerà mediante lezioni frontali ed esercitazioni. Durante il corso si proporranno continuamente riferimenti a problematiche correnti e a situazioni che derivano dall'esperienza professionale e di ricerca dei docenti.
L'esame consiste in una prova scritta, tipicamente strutturata in 4-6 domande ed esercizi che coprono l'intero programma. E' consuetudine che compaia un esercizio che richiede di realizzare un sistema di trigger e un esercizio che chiede di formulare query in XQuery. Il tempo a disposizione per lo svolgimento della prova è di norma pari a 2,5 ore.
Per gli studenti che frequentano il corso è anche possibile superare l'esame mediante prove in itinere, una offerta a metà del corso e l'altra a fine corso, ciascun su metà del programma.
E' anche possibile sviluppare un elaborato.
Sito web del corso: https://cs.unibg.it/db2.html
There are no formal requirements. It is expected that students are already familiar with DBMSs as they are illustrated in common Data Base courses.
After completing the course, the student will have a thorough knowledge of the inner workings of a modern DBMS. The focus is mainly on understanding the principles that underlie the construction of the various components dedicated to the management of data and transactions, providing knowledge that can find use even outside the specific domain of relational systems and lead to the design of efficient software applications.
Transactional Systems. Why transactional systems are relevant. Examples of transactional systems: financial applications, banks, online order-entry (e-commerce), online booking, "wall-street applications". Notion of "transaction". ACID properties: atomicity, consistency, isolation, durability.
Concurrency control theory. Histories (or schedules), serializability, various notions of equivalence, complexity of testing. View-serializability, conflict-serializability. Two phase locking. Hierarchical locking. Deadlock analysis and resolution. Timestamp-based concurrency control. Multi-version concurrency control. Implementation of locking in commercial systems.
Reliability control theory. Notion of: stable storage, logging, checkpointing, write-ahead log rule, commit rule. Recovery protocols: warm restart, cold restart. Implementation of reliability control in commercial systems. Commit protocols, theory of two-phase-commit, presumed-abort and read-only optimizations, non-blocking protocols (3 and 4 phase commit protocols). Implementation of commit protocols with heterogeneous DB servers in the X-open standard.
Database architectures. Client-server applications (two and three tiers). Heterogeneous access via ODBC-JDBC standards. Distributed databases. Notion of fragmentation, allocation, transparent access. Query optimization. Distributed transactions. Parallelism in database servers. Shared-memory vs shared-nothing approaches. Scale-up, speed-up, benchmarking of performance. Replicated databases. Synchronous vs asynchronous methods. Symmetric vs primary-secondary approaches. Implementation of replication servers.
Internal structure of a database server. Buffer Management. Page management. Data organizations according to the sequential, direct, and indexed data structures. B and B+ trees. Hashing functions. Access methods: scans, ordering joins. Join methods. Query optimization fundamentals. Cost models and optimal query plan selection (branch&bound method for execution plan selection). Database administration in commercial systems. Hints to physical database design (index selection, primary storage method selection).
XML Databases. XML as a data modeling paradigm. Native vs relational storage. Query languages for XML. XPath, XQuery, XQBE.
Active databases: The ECA Paradigm (event/condition/action) and data management. Execution methods for active databases. Trigger languages and systems: Starburst, Oracle, DB2. Formal properties of active rule sets. Termination, confluence, observable determinism. Rule analysis. Design of active rules for integrity maintenance.
Data analysis: OLTP vs OLAP. Data warehouses. Multidimensional model. Data cubes. Data analysis operators: cube, rollup, pivot.
Evolutions of database technology: Data streams. Integration with Semantic Web technology. SPARQL.
Lectures presenting the concepts and the resolution of exercises.
The exam consists of a written test, typically structured in 4-6 questions and exercises that cover the entire program. Usually, an exercise appears that requires you to create a trigger system and an exercise that asks you to express queries in XQuery. The time available for the test is usually 2.5 hours.
For students attending the course it is also possible to pass the exam through intermediate tests, one offered in the middle of the course and the other at the end of the course, each on half of the program.
It is also possible to develop a small project to get additional points.
Website: https://cs.unibg.it/db2.html