Page last updated: July 7, 1998


Course Project


The project will allow you to delve deeper into some of the important implementation aspects of database management systems. As a result, you will have a much better understanding of how a DBMS functions, which is very useful for DBAs, implementors, applications programmers, and even sophisticated users.

The implementation project involves a toy DBMS named Minibase , of which you will implement portions. I encourage you start checking out the documentation and descriptions of Minibase now. We will be implementing the Buffer Manager, Index Nested Loops Join, and Sort-Merge Join portions of the system.

It doesn't really matter which module you implement first; the three phases of the project are independent. Your implementation will call other modules of the Minibase software, which will be provided for you, along with some basic Makefiles, test scripts, working versions of the software, header files, etc. The implementation will be done on the orcas/sanjuan Digital Unix workstations, on which you all have accounts. You'll probably want to read ahead a bit in the text about whichever component you'll be implementing first. I recommend the Buffer Manager first.

For those of you not familiar with C++, I highly encourage you to work through an online C++ tutorial (one is mentioned in the exercises for Chapter 1 of the text, and others are available -- use your favorite search engine) or get a book on C++. The purpose of the project is to strengthen your understanding of database management systems, not to train you as C++ programmers. Please see me if you have any concerns about the programming project, and we'll do what we need to do to make sure you get out of it what you need to without drowning in the details of C++.

You may work individually on the project or in groups of two or three (I highly encourage you to work with someone else), so feel free to start pairing yourselves up right away.

You must let me know by sometime on Tuesday July 7 who you'll be working with. Even if you're working alone, I need to know this.

The Buffer Manager will require more code than the join methods combined. A rough estimate (based on one possible actual solution) is less than 1000 lines total code (all three phases combined), with about 600 lines for the Buffer Manager. Naturally, your mileage may vary, but if you're approaching 5000 lines of code, you're on the wrong track. If you've written 50 lines of code and you think you're done, you've either done something very wrong or something very brilliant (or you're cheating and using LISP).

Buffer Manager Description. This also contains information on setting up the code and error protocols for all three phases of the project.

Index Nested Loops Join Description

Sort-Merge Join Description