A Database Management System (DBMS) is a software system designed to efficiently store, retrieve, manipulate, and query large amounts of data. Since the introduction of the relational data model in 1970, the database management system industry has grown to $100 billion dollars a year and increases by more that 25% every year. With the new and emerging internet applications posing new requirements in the DBMS design and implementation, the database market is expected to grow even faster, and database design and implementation techniques are constantly evolving to meet the new requirements.
Nevertheless, there is a basic and fairly standard set of techniques that have been developed to support high-performance database systems. These techniques include: B+trees, hash-based join algorithms, hierarchical and two-phase locking, two-phase commit, write-ahead-logging, recovery using shadow pages, and several query optimization strategies. The synergy amongst different techniques often poses restrictions; the design and implementation choices made at a certain module of the system may affect its interaction with others, and can place constraints on decisions at other levels that may not be immediately apparent.
The goal of this course is to investigate the traditional techniques and their interactions by studying several seminal papers and survey studies in the area while building a complete, scaled-down, relational database management system. Because the focus of the course is on the design as well as the implementation of DBMSs an emphasis will be placed on a large, semester-long DBMS implementation project. This intensive project will count for a substantial portion of the grade.
The course is intended for graduate students and advanced undergraduates. A good background in DBMS fundamentals is required, therefore, 15-415 (or equivalent) is a desired prerequisite. Students should be comfortable with the relational model, SQL, and the basic functions of database systems. Students should also be capable of implementing a large, complex system on UNIX in C or C++.
This course is being offered for 12 credits. The grading is as follows:
Finding information or people