Watch a video introduction to this course on YouTube.
The objective of this course is to introduce students to fundamentals of building a database management system (DBMS), in particular a relational one. It focuses on the database engine core technology by studying topics such as storage systems (data layout, disk-based data structures), indexing, query processing algorithms, query optimization, transactional concurrency control, logging and recovery. It complements CS348 by looking at the internals of relational DBMSs.
This is a second course on databases that focuses on DBMS internals. It is a project-oriented course that will provide the students, upon successful completion, with an appreciation of the intricacies and complexities of a DBMS and enable them to be able to design and implement the major components of it. The course objective will be achieved by focusing on three fundamental sub-objectives:
Complementary to the above objectives, the course has a training component where the students will gain experience, within the context of a number of assignments, in building components of a DBMS and incorporating them into an open source system such as MySQL or PostgreSQL. The lectures may be complemented by guest lectures on real-life DBMS implementation issues given by colleagues from industry (Sybase, IBM Canada, Microsoft and others).
CS 448 is a course for CS major students, and is normally taken in a student's fourth year. This course will be of interest to students whose area of expertise includes large software systems. CS 338 is available for students in other plans.
Prerequisites: CS 348 and (CS 350 or SE 350). Computer Science students only.
Database Management Systems, 3rd ed., by R. Ramakrishnan and J. Gehrke, McGraw-Hill, 2003. Course notes are required (may be made available via the web).
3 hours of lectures per week. Normally available in Winter.
Fundamentals of relational databases, relational calculus, relational algebra, integrity issues.
Data layout, buffer systems, file management, indexing techniques (tree-based and hashing).
Query processing methodology, view expansion, query translation, implementation of relational operators, external sorting, cost-based query optimization.
Transaction models, concurrency control algorithms, database recovery.
Implementation of catalogs and integrity constraints.