DATABASES & BIG DATA

Blerina Sinaimeri

Obiettivi formativi

The Database & Big Data course aims at providing the students with a solid understanding of classical notions of data management as well as modern concepts related to the 'Big Data'. All these notions will be analyzed both formally and practically through real world scenarios. Furthermore, the course will cover various technologies related to relational databases as well as NoSQL databases for accessing, storing, and managing large data sets

Prerequisiti

Basic knowledge of Python from an introductory course to computer programming.

Risultati di apprendimento attesi

Knowledge and understanding. The course offers several conceptual tools to solve data-related problems in an effective way. At the end of the of course, students will posses a solid understanding of the issues related to managing large volumes of data as well as theoretical and practical solutions to these issues. Applying knowledge and understanding. Successful students will be able to: - Apply the conceptual tools of data management to real-world scenarios; - Extract information from data sets using both conceptual and practical tools; - Understand the key differences underlying different data management technologies; - Interact with and understand data-oriented technologies. Making judgements. The course will foster the development of critical thinking related to data-oriented applications. Successful students will be able to analyse real-world problems involving data and choose the right conceptual and technological solutions to solve them. Communications Skills. The course will provide the students with an understanding of the standard terms and concepts of classical data management as well as notions related to the so called Big Data. This will allow the students to effectively communicate their ideas, proposals, and analyses. Learning skills. This introductory course provides a solid background of knowledge on the basics of data management. Successful students will posses the skills required to study and understand intermediate concepts related to data management and big data.

Contenuti Del Corso

The course covers several topics related to classical data management and the so called Big Data. Topics include: - Conceptual database design and the relational model; - Relational design principles based on dependencies and normal forms; - Concurrency control, storage, and indexing; - Database design and the use of databases in applications; - SQL databases and query language; - NoSQL databases

Testi Di Riferimento

Lecture notes (slides) and course material will be made available on the e-learning platform. There is no mandatory textbook for the course. However, for students who want additional resources, we recommend: - Ramakrishnan and Gehrke. Database Management Systems. 3rd Edition. - Garcia-Molina, Ullmann. Database Systems 2nd Edition. Prentice Hall - Karau, Konwinski, Wendell, Zaharia: Learning Spark: Lightning-Fast Big Data Analysis. O'Reilly Media

Metodologie Didattiche

Lectures, labs and exercise sessions. The use of a laptop is strongly recommended.

Modalità di verifica dell'apprendimento

- Mid-term written exam - Final written exam - Group Project

Criteri per l’assegnazione dell’elaborato finale

To be discussed with the instructor.

Settimana 1

- Course introduction and organization. - Introduction to data management: databases, data warehouses, data lakes, and big data systems. - Setup of MySQL and Python environment. - Introduction to relational databases: tables, relations, keys.

Settimana 2

- Introduction to SQL: tables, keys, constraints. - Basic SQL queries: selection, projection, filtering, ordering. - SQL exercises on basic queries. - Relational model: schemas, tuples, attributes, integrity constraints.

Settimana 3

- SQL joins. - Aggregation, grouping, and nested queries. - SQL practice on joins and aggregation. - Introduction to ER modelling.

Settimana 4

- ER modelling: entities, relationships, attributes, cardinalities. - ER modelling exercises. - Advanced ER modelling. - Restructuring the ER model.

Settimana 5

- From ER model to relational schema. - Schema translation exercises. - Functional dependencies. - Introduction to normal forms.

Settimana 6

- Normal forms: 1NF, 2NF, 3NF, BCNF. - Decomposition and lossless joins. - Exercises on normalization. - SQL and schema design review.

Settimana 7

- Index structures and query performance. - Query optimization principles. - Exercises on indexing and query plans.

Settimana 8

- Transactions and ACID properties. - Schedules and serializability. - Concurrency control. - Exercises on transactions.

Settimana 9

- Locking and isolation levels. - Deadlocks and recovery. - Transaction scenarios and exercises. - SQL practice.

Settimana 10

- From databases to big data. - Limits of traditional relational databases. - Distributed databases and data partitioning. - Introduction to NoSQL databases.

Settimana 11

- NoSQL data models: document, key-value, column-family, and graph databases. - MongoDB: documents, collections, queries. - MongoDB practice. - Comparison between relational and NoSQL databases.

Settimana 12

- Vector databases: embeddings and similarity search. - Vector indexing and retrieval. - Modern data management applications. - Q&A and final review.