Accomplishments

We implemented the space manager and the heapfile components of minirel. The space manager comprises of the classes DB, DSM and Page. These had to be implemented from scratch since the notion of a database was entirely different from the previous version of minirel. The DB and DSM classes were initially implemented to support a very general use of databases. In particular, it supported multiple open databases within a process and several different databases being opened by different processes. The change in the design to permit only one open database and only one database across all processes resulted in us going back to the code and removing all the generality from it. Further, the bit level manipulations that are necessary for maintaining the space map were typically hard and required exhaustive testing to ensure their correctness.

The heapfile component consists of the HeapFile, HFPage and Scan classes. Of these, the HFPage code could be re-used in large part from the earlier version of minirel. However, since the heapfile itself is now built on top of totally different interface, most of HeapFile code had to be written afresh. An entire new class Scan was implemented to support sequential scans.

The development of the multiuser versions of the above required us to modify some of the single user code to now deal with shared memory. Further, locking and logging for concurrency control and crash recovery ensured that we had a complete understanding of the primitives offered, their limitations and means of obtaining the best results with them.



Ravi Murthy
Sriram Narasimhan