This project is based on SimpleDB, a multi-user transactional database server written in Java. SimpleDB is developed by Edward Sciore (Boston College), and the code is an integral part of a textbook Database Design and Implementation (Second Edition) he published with Springer. You should be able to access an e-copy from the NUS Library.
Unlike a full-fledged DBMS like MySQL or PostgreSQL, SimpleDB is intended as a teaching tool to facilitate the learning experience of a database system internal course. As such, the system implements only the basic functionalities of a “complete” database system. For example, it supports a very limited subset of SQL (and JDBC) and algorithms, offers little or no error checking, and is not designed for optimal performance/efficiency. However, the code is very well structured so that it is relatively easy to learn, use and extend SimpleDB.
This project will focus primarily on query processing (and related topics, e.g., parser, indexing, etc) for a single user. [Things that are not considered: disk/memory management, transaction management (concurrency control and logging) and failures (recovery management), and multi-user setting usage.]
-
Lab 0: Set up SimpleDB & create a student database
-
Lab 1: Support for non-equality predicates (Due: 28 Jan 2022)
-
Lab 2: Support for hash index and B+-tree index (Due: 7 Feb 2022)
-
Lab 3: Support for order by clause and sorting (14 Feb 2022)
-
Lab 4: Support for nested-loops join, sort-merge join and index-based join (21 Feb 2022)
-
Lab 5: Support for partition-based (or hash) join, and aggregates (SUM, COUNT, AGV, MIN, MAX) with/without group by clause (using sort-based implementation of group by operator)
-
Lab 6: Support for DISTINCT and displaying the query plan
-
Lab 7: Integrate all features into SimpleDB+
- Support range search for merge join, index join and index select.
- Better query optimizer
- Support float data type which supports group by avg
- Support joining an empty table with no tuples to another table
Final Implementation and Lab Reports - Changes made to each lab
Experimental Write-up Reports - Analysis of query time for different plans