CS 564 Project Stages 3-6: Overview
Fall 2012

Introduction

These project stages will enable you to learn how to build a database system. You will build a working single-user DBMS that can execute certain simple SQL queries. The objective is to learn how a DBMS is organized and what goes on inside it when queries are executed. We will help you out by supplying the topmost and lowermost DBMS layers. The topmost layer is a parser that parses SQL queries and calls appropriate functions in the lower layers to perform relational operations. The lowermost layer is the disk I/O layer which reads and writes pages from and to the disk. In your case, the disk will just be the UNIX file system.  

At the end of each stage we will take a checkpoint and evaluate your work.  In Stage 3 you will implement a buffer manager.  Stage 4 involves implementing heap files - a collection of pages that is used to hold a relation.  Stage 5 implements the database catalogs and various utilities.  Finally, in Stage 6 you will implement a number of relational operators. At the end of it all, you will have implemented a miniature DBMS. It will not do everything that a commercial DBMS does, but it should be able to handle a fairly useful set of queries. While doing these stages you shall learn how to tackle large programming projects and in the process have fun as well! Good luck!
 

Logistics

These stages will be done in C++. For many of you, this is likely to be the biggest programming project you have ever done so far and so it might be useful to keep the following points in mind.

Evaluation

As far as possible, everything will be done electronically. All parts of the assignment will be available from the course home page. The code that we will provide will be available in the course directory. When you are done with a stage, you will submit all your source code by copying the files over to a designated directory. We will compile, run and test your programs and post the grade. When evaluating your stages we will look for the following:

Due Dates

You will be required to submit your source code at the end of each stage for evaluation. You can then start working on the next stage. Since the later stages build on and use the code for the previous stages, you have two choices: you can either use the code you yourself had written for the previous stage or you can use the code that we shall supply once the due date for a stage is over.

All submissions are due by 6PMNO LATE SUBMISSIONS WILL BE ACCEPTED UNDER ANY CIRCUMSTANCES.  Be sure to start early and turn in whatever you have by the deadline.

The final thing that you should note is that all topics covered in the stages will be fair game for questions during the midterm and final. So make sure you know about what you (and your partner) did for the project.

A Reminder about Cheating

We believe in the highest standards of academic integrity. The project implementations of each group must be completely distinct from each other. You will not share any code across groups. Nor will you attempt to use any code from previous offerings of this course. All the code that you submit must be written by you and you only. Deviations from this will be punished to the fullest extent possible.   We will use MOSS to insure that your project represents your work.

 

Project Stages and Due Dates