Database Systems Course ID 15645 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). Course Relevance This course is for students interested in the design and implementation of database management systems. 15-645 is for graduate students. Undergraduates should enroll in 15-445. 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. Pre-required Knowledge Systems Programming, C/C++ Assessment Structure 15% ¿ Homeworks, 45% ¿ Programming Projects, 20% ¿ Midterm Exam, 20% ¿ Final Exam, +10% ¿ Extra Credit (Optional) Course Link http://15445.courses.cs.cmu.edu