The following study materials are relevant for this course.
- Textbook: Raghu Ramakrishnan and Johannes Gehrke: Database Management Systems (3rd Edition), McGraw-Hill, 2002
- Course slides: Copies of the slide decks used in the course will be made available online
- Reading list: A bibliography of the references used in the course as well as further readings will be available on the course website
The following skills, knowledge and courses are mandatory prerequisites to attend and successfully complete this course.
- Basics of database systems: database design, query languages, database application programming, etc. (INF-12040 or equivalent)
- Principles of database systems: relational model, relational algebra, normal forms, etc. (INF-12040 or equivalent)
- Computer systems: computer architecture, operating systems, networks, etc. (INF-11740, INF-11880, or equivalent)
- System programming: students must have the ability to program in a language appropriate for system implementation, such as C/C++, C# or Java. (INF-11930 or equivalent)
- Key competences: Subversion, LaTeX, etc. (INF-10175 or equivalent)
The final exam of this course will be conducted as a 2-hour written exam. The exam will be weighted 50% in the final grade of this course with exercises and project work contributing another 50% of the grade.
Modern database systems use advanced data structures and algorithms to manage and process data. Building on the basic database system course, this course looks at the internals of database systems in terms of their architecture and implementation. The lectures are structured according to the levels of a general layered software architecture for database systems, which is introduced at the beginning of the course. The course starts at the lowest level with the I/O system and the management of buffers and storage, i.e., disk and file management. Moving up a level of the architecture, the course then introduces different kinds of index structures, such as tree-based and hash-based indexes. Continuing from this groundwork, the course then focuses on query processing in terms of query execution and optimization. Finally, the course will teach how benchmarks can be used to qualitatively and quantitatively assess the performance of different database systems. Gathering and understanding results of database system benchmarks is the basis for selecting and tuning a database system for a given application. Throughout the course, students have a chance to get first-hand practical experience with the presented techniques and implementation concepts through a series of mandatory programming exercises.
The course targets the following groups of students.
- Advanced Bachelor students in Computer Science or Information Engineering, who are close to graduation and meet the mandatory minimum requirements for this course
- Master students in Information Engineering, who meet the mandatory minimum requirements
- All students, who meet the minimum requirements for this course and who plan to specialize in the area of databases and information systems by conducting a project or attending a practical course on this topic
In this course, students will learn to understand and apply the data structures and algorithms that are used to realize the storage, indexing, and query processing functionality of contemporary relational database systems. In doing so, students will acquire the ability to differentiate between operating and database system functionality. Finally, the course imparts the knowledge required to assess the qualitative and quantitative differences between different relational database systems. Therefore, the course syllabus will enable students to make informed choices when selecting or tuning a database system for a given application.
180 hours, of which ca. 60 hours are spent in class and another 120 hours are spent on exercises and project work.