Data Science Technology
While the course is taught in italian, the oral exam can be in English.
The course aims to develop the essential skills to optimize a relational Database and to give an overview of the main alternative technologies for data persitence related to the big data phenomenon, so to promote the informed choice of the most suitable system for each use case.
Most of the course is on physical Database optimization, and at the end the main related skills will be to read an execution plan and to decide when ad how indexing, multidimensional clustering, range partitioning or materialized views should be recommended in relation systems.
Concerning non relational systems, the student will be able to decide autonomously which data solution is the most adequate given the nature of the data and the requirements to be fulfilled.
In the laboratory advanced features of PL/SQL will be presented, together with the rudiment of the JSP technology.
A project that adds advanced functionalities and a web interface to a given DBMS is required to be developed and discussed.
Knowledge and understanding:
A good autonomy in managing and optimizing a relational DBMS, reading an execution plan and mastering PL/SQL, with rudiments of JSP is required.
Knowledge of fundamentals of NOSQL models (key values, document store, graph based, columnar) is required, so to be able to decide which technology
should be preferred and under which circumstances.
Ability to apply knowledge and understanding:
the ability to add non trivial functionalities and a web interface to an existing Database is expected.
the project must be rigidly documented with a precise language and UML diagrams.
Fundamental relational Database theory and practice acquired through the first Database course during the bachelor degree is necessary, while it is recommended familiarity with Algorithms and Data Structures.
Physical Design: Data Structures, indexing, execution plans; concurrency control; reliability; Active Databases; DDBMS and NoSQL; Big Data; Data Warehouses; Database Mining; Advanced features of PL/SQL; fundamentals JSP.
The course will treat in depth the physical design of relational DBMS, so to give to the students the ability to properly tune in terms of performance a relational database; furthermore it will give an overview of the most recent alternatives to relational systems explaining the proper use cases for each of them.
Taught classes with blackboard and chalk and practical exercises in lab using PCs. There are no slides and active participation of students is encouraged.
Shamkant B. Navathe Ramez A. Elmasri. Fundamentals of Database Systems. Pearson, 7^th edition, 2016.
Tom Nadeau Sam Lightstone, Toby Teorey. Physical Database Design. Morgan Kaufmann, 2007.
Michael McLaughlin Scott Urman, Ron Hardman. PL/SQL programming. Oracle press, 2004.
References for some specific topics:
Antonio Albano. Costruire sistemi per Basi di Dati. Addison Wesley, 1 edition, 2001.
Joe Celko. Joe Celko’s complete guide to NoSQL. Morgan Kaufmann, 1 edition, 2014.
Annalisa Franco Dario Maio, Stefano Rizzi. Esercizi di progettazione di Basi di Dati. Progetto Leonardo, 2 edition, 2005.
Andrea Steelman Joel Murach. Java servlets and JSP. Murach and associated, 2 edition, 2008.
Dario Maio Paolo Ciaccia. Lezioni di Basi di Dati. Progetto Leonardo, 1 edition,
Further educational material (videolessons of the whole theory course and some pdf help files) is available on the e-learning platform.
The final verification is organized in three steps: the written test (maximum 30/30, minimum 16/30); the project (maximum 5/5, minimum 3/5); the oral test (maximum 30/30, minimum 18/30). The final score will be averaged.