| Credit Hours: | 4 |
| Course Coordinator: | David Archer |
| Course Description: | Internal design of a relational database management system. Concurrency control; lock managers; crash recovery; query and operator evaluation; query optimization. |
| Prerequisites: | CS 386, CS 333 |
| Goals: | To develop understanding of the internal structure of relational database systems. To understand how memory and disk storage structures are taken into account by database components. To understand how database internal structure and impact of memory and disk systems affect database design choices. Upon completion of this course, the successful student will be able to explain/describe:
|
| Textbooks: | Ramakrishnan, R. & Gehrke, J. (2003). Database Management Systems. New York: McGraw-Hill |
| References: | None |
| Major Topics: | Database index structures (tree- and hash-based) and their management; disk drive hardware characteristics and implications for disk access performance; file structures on disk; sorting large files using “out-of-memory” techniques; evaluation techniques and implementation algorithms for relational algebra operators; database concurrency control management; query optimization techniques, real-world approaches to optimization, and how to limit the scope of eligible query plans; database crash recovery and transaction abort mechanisms; parallel and distributed database architectures. |
| Laboratory Exercises: |
| CAC Category Credits | Core | Advanced |
| Data Structures | 0.5 | 1.0 |
| Algorithms | 0.5 | 0.5 |
| Software Design | 0.5 | |
| Computer Architecture | 0.5 | |
| Programming Languages | 0.5 |
| Oral and Written Communications: | None |
| Social and Ethical Issues: | None |
| Theoretical Content: | About 35 percent of class time is spent on theoretical aspects of databases:
|
| Problem Analysis: | About 65 percent of class time is spent on analyzing and solving database design problems:
|
| Solution Design: | Through programming problems (activity outside of class time), students gain sophistication in how database internals are constructed and optimized. |