Skip to content

abdalladarwish/bustub

Repository files navigation

BusTub Logo


Build Status CircleCI

BusTub is a relational database management system built at Carnegie Mellon University for the Introduction to Database Systems (15-445/645) course. This system was developed for educational purposes and should not be used in production environments.

WARNING: IF YOU ARE A STUDENT IN THE CLASS, DO NOT DIRECTLY FORK THIS REPO. DO NOT PUSH PROJECT SOLUTIONS PUBLICLY. THIS IS AN ACADEMIC INTEGRITY VIOLATION AND CAN LEAD TO GETTING YOUR DEGREE REVOKED, EVEN AFTER YOU GRADUATE.

Implementing Components of bustub

  • Buffer Pool Manager
  • Hash Index
  • Query Execution
  • Logging & Recovery

Course: youtube

Build

Linux / Mac

To ensure that you have the proper packages on your machine, run the following script to automatically install them:

$ sudo build_support/packages.sh

Then run the following commands to build the system:

$ mkdir build
$ cd build
$ cmake ..
$ make

If you want to compile the system in debug mode, pass in the following flag to cmake: Debug mode:

$ cmake -DCMAKE_BUILD_TYPE=Debug ..
$ make

This enables AddressSanitizer, which can generate false positives for overflow on STL containers. If you encounter this, define the environment variable ASAN_OPTIONS=detect_container_overflow=0.

Windows

If you are using Windows 10, you can use the Windows Subsystem for Linux (WSL) to develop, build, and test Bustub. All you need is to Install WSL. You can just choose "Ubuntu" (no specific version) in Microsoft Store. Then, enter WSL and follow the above instructions.

If you are using CLion, it also works with WSL.

Testing

$ cd build
$ make check-tests

Build environment

If you have trouble getting cmake or make to run, an easy solution is to create a virtual container to build in. There are two options available:

Vagrant

First, make sure you have Vagrant and Virtualbox installed

$ sudo apt update
$ sudo apt install vagrant virtualbox

From the repository directory, run this command to create and start a Vagrant box:

$ vagrant up

This will start a Vagrant box running Ubuntu 20.02 in the background with all the packages needed. To access it, type

$ vagrant ssh

to open a shell within the box. You can find Bustub's code mounted at /bustub and run the commands mentioned above like normal.

Docker

First, make sure that you have docker installed:

$ sudo apt update
$ sudo apt install docker

From the repository directory, run these commands to create a Docker image and container:

$ docker build . -t bustub
$ docker create -t -i --name bustub -v $(pwd):/bustub bustub bash

This will create a Docker image and container. To run it, type:

$ docker start -a -i bustub

to open a shell within the box. You can find Bustub's code mounted at /bustub and run the commands mentioned above like normal.

About

Relational Database Management System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published