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