Database Systems Course ID 15445 Description This course is on the design and implementation of database management systems. Topics include data models (relational, document, key/value), storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Case studies on open-source and commercial database systems will be used to illustrate these techniques and trade-offs. The course is appropriate for students with strong systems programming skills. Key Topics data models (relational, document, key/value, storage models (n-ary, decomposition), query languages (SQL, stored procedures), storage architectures (heaps, log-structured), indexing (order preserving trees, hash tables), transaction processing (ACID, concurrency control), recovery (logging, checkpoints), query processing (joins, sorting, aggregation, optimization), and parallel architectures (multi-core, distributed). Required Background Knowledge Systems Programming, C/C++ Course Relevance This course is for students interested in the design and implementation of database management systems. Course Goals Use relational algebra and relational calculus, to express database queries. Use SQL to interact with database management systems. Design appropriate database tables, using functional dependencies and normal forms. Implement a disk-oriented database storage manager with table heaps and indexes. Understand, compare, and implement the major concurrency control algorithms. Implement database recovery algorithms and verify their correctness. Identify trade-offs among database systems techniques and contrast distributed/parallel alternatives for both on-line transaction processing and on-line analytical workloads. Interpret and comparatively criticize database system architectures. Assessment Structure 15% Homeworks, 45% Programming Projects, 20% Midterm Exam, 20% Final Exam, +10% Extra Credit (Optional) Extra Time Commitment 15-445 is for undergraduates. Graduate students should enroll in 15-645. Course Link http://15445.courses.cs.cmu.edu