A basic database system
What is has – Heapfiles – Basic Operators (Scan, Filter, JOIN, Aggregate) – Buffer Pool – Transactions – SQL Frontend
Things it doesn’t have – Query optimizer – Fancy relational operators (UNION, etc) – Recovery – Indices
This project is implementation of a simple relational DB. The skeleton files and instructions are provided by MIT as part of 6.830: Database Systems course. See course page.
This repo is using a
gradlebuild system instead of ant build provided in the course assignment files. I made it this way while setting up my intellij. I also did some repackaging, to follow with java project conventions I am familiar to.I have also added[Decided to remove]Uber/Nullawayto check for potential bugs and addedgoJFjava formatting tool (attached to git pre-commit hook)There are 5 labs and each lab has bunch of exercises. For each lab, I have added a github project in this repo (lab1, lab2, lab3, lab4 and lab5) and each lab project has bunch of issues. Each issue corresponds to a exercise in the lab. Each issue is fixed by a commit (marking the issue done).
For course readings and unified view of lab instructions, I'd recommend going to the course page
I am following the video lectures for
Database Systemsfrom CMU database group: youtube. That course uses C++ project; I am not spending time in C++. The syllabus looks similar to the MIT course, so opted for Java project instead.I read something about Databases from
Designing Data-Intensive Applicationsby Martin Klepman, so I had some context while following the lectures and working on this project.
- lab 1: SimpleDB setup
- lab 2: SimpleDB operators
- lab 3: SimpleDB transactions
- lab 4: Query optimization (Not interested)
- lab 5: Rollback and recovery
Read User Guide
