This is a project-oriented course that covers the implementation of relational
database management systems. The course projects use a code-base that evolves
with each offering of the course. Projects involve the design, implementation,
and testing of one or more database systems components, and integration of those
components into the existing code-base.
Database Management Systems, by Ramakrishnan and Gherke, McGraw-Hill, 2000.
3 hours of lecture and one hour of lab per week.
Database system architecture. Project overview.
Storage technologies. Review of file structures and index structures for secondary storage. Buffer management.
Query evaluation models, iterators. Plan operators. Algorithms for common operations: scans, joins, sorting, grouping, aggregation.
Relational metadata. Catalogs and implementation of the data definition language.
Parsing and validation of the data manipulation language, internal representation of queries and updates.
Rewrite optimizations. Database and query statistics. Costing plans and cost-based plan selection. Techniques for enumeration and cost-based selection of plans.
Concurrent process architecture and synchronization. Review of transaction concurrency control algorithms. Locking implementations, lock modes. Index locking.
Failure models. Fault tolerance and recovery. The ARIES-style logging, and alternative approaches.
User-defined types and functions, and other common relational extensions. Implications for system design.
Application behaviour, client-side activities, and client-server interactions. Stored procedures.
Recent developments in database system architecture and implementation.