[Please remove <h1>]
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.
Introduction (3 hrs)
Database system architecture. Project overview.
Managing Primary and Secondary Storage (3 hrs)
Storage technologies. Review of file structures and index structures for secondary storage. Buffer management.
Query Processing (6 hrs)
Query evaluation models, iterators. Plan operators. Algorithms for common operations: scans, joins, sorting, grouping, aggregation.
Metadata and Catalog Management (1 hr)
Relational metadata. Catalogs and implementation of the data definition language.
Language Processing (2 hrs)
Parsing and validation of the data manipulation language, internal representation of queries and updates.
Query Optimization and Plan Generation (6 hrs)
Rewrite optimizations. Database and query statistics. Costing plans and cost-based plan selection. Techniques for enumeration and cost-based selection of plans.
Concurrency (5 hrs)
Concurrent process architecture and synchronization. Review of transaction concurrency control algorithms. Locking implementations, lock modes. Index locking.
Failures and Recovery (4 hrs)
Failure models. Fault tolerance and recovery. The ARIES-style logging, and alternative approaches.
Extensibility (2 hrs)
User-defined types and functions, and other common relational extensions. Implications for system design.
Client-Server Interactions (2 hrs)
Application behaviour, client-side activities, and client-server interactions. Stored procedures.
Current Events (2 hrs)
Recent developments in database system architecture and implementation.