All Projects → cmu-db → Bustub

cmu-db / Bustub

Licence: mit
The BusTub Relational Database Management System (Educational)

Projects that are alternatives of or similar to Bustub

Event Management
helps to register an users for on events conducted in college fests with simple logic with secured way
Stars: ✭ 65 (-87.83%)
Mutual labels:  database, dbms
Peloton
The Self-Driving Database Management System
Stars: ✭ 1,887 (+253.37%)
Mutual labels:  database, dbms
Noisepage
Self-Driving Database Management System from Carnegie Mellon University
Stars: ✭ 1,095 (+105.06%)
Mutual labels:  database, dbms
Ohmysql
Easy direct access to your database 🎯 http://oleghnidets.github.io/OHMySQL/
Stars: ✭ 166 (-68.91%)
Mutual labels:  database, dbms
Crate
CrateDB is a distributed SQL database that makes it simple to store and analyze massive amounts of data in real-time.
Stars: ✭ 3,254 (+509.36%)
Mutual labels:  database, dbms
H Store
H-Store Distributed Main Memory OLTP Database System
Stars: ✭ 428 (-19.85%)
Mutual labels:  database, dbms
Online Shopping System Advanced
Demo site
Stars: ✭ 127 (-76.22%)
Mutual labels:  database, dbms
Wyxdbms
用Java实现了一个关系型数据库,DBMS数据库管理系统,可使用常用增删改查的SQL语句,具有数据字典,数据索引文件,并且实现了启发式查询优化
Stars: ✭ 173 (-67.6%)
Mutual labels:  database, dbms
Cubrid
CUBRID is a comprehensive open source relational database management system highly optimized for Web Applications.
Stars: ✭ 184 (-65.54%)
Mutual labels:  database, dbms
Sql exporter
Database agnostic SQL exporter for Prometheus
Stars: ✭ 301 (-43.63%)
Mutual labels:  database, dbms
Orientdb
OrientDB is the most versatile DBMS supporting Graph, Document, Reactive, Full-Text and Geospatial models in one Multi-Model product. OrientDB can run distributed (Multi-Master), supports SQL, ACID Transactions, Full-Text indexing and Reactive Queries. OrientDB Community Edition is Open Source using a liberal Apache 2 license.
Stars: ✭ 4,394 (+722.85%)
Mutual labels:  database, dbms
Ozzo Dbx
A Go (golang) package that enhances the standard database/sql package by providing powerful data retrieval methods as well as DB-agnostic query building capabilities.
Stars: ✭ 523 (-2.06%)
Mutual labels:  database
Zero downtime migrations
Zero downtime migrations with ActiveRecord 3+ and PostgreSQL
Stars: ✭ 513 (-3.93%)
Mutual labels:  database
Weaviate
Weaviate is a cloud-native, modular, real-time vector search engine
Stars: ✭ 509 (-4.68%)
Mutual labels:  database
Rxfirebase
Rxjava 2.0 wrapper on Google's Android Firebase library.
Stars: ✭ 509 (-4.68%)
Mutual labels:  database
Cosette
Cosette is an automated SQL solver.
Stars: ✭ 533 (-0.19%)
Mutual labels:  database
Qb
The database toolkit for go
Stars: ✭ 524 (-1.87%)
Mutual labels:  database
Sirdb
👨 a simple, git diffable JSON database on yer filesystem. By the power of NodeJS
Stars: ✭ 508 (-4.87%)
Mutual labels:  database
Typeorm Seeding
🌱 A delightful way to seed test data into your database.
Stars: ✭ 501 (-6.18%)
Mutual labels:  database
Arangojs
The official ArangoDB JavaScript driver.
Stars: ✭ 503 (-5.81%)
Mutual labels:  database
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.

Cloning this repo

The following instructions will create a private BusTub that you can use for your development:

  1. Go to https://github.com/new to create a new repo under your account. Pick a name (e.g. private-bustub) and make sure it is you select it as private.
  2. On your development machine, clone the public BusTub:
    $ git clone --depth 1 https://github.com/cmu-db/bustub.git public-bustub
    
  3. You next need to mirror the public BusTub repo into your own private BusTub repo. Suppose your GitHub name is student and your repo name is private-bustub, you will execute the following commands:
    $ cd public-bustub
    $ git push --mirror [email protected]:student/private-bustub.git
    
    This copies everything in the public BusTub repo into your own private repo. You can now delete this bustub directory:
    $ cd ..
    $ rm -rv public-bustub
    
  4. Clone your own private repo on:
    $ git clone [email protected]:student/private-bustub.git
    
  5. Add the public BusTub as a remote source. This will allow you to retrieve changes from the CMU-DB repository during the semester:
    $ git remote add public https://github.com/cmu-db/bustub.git
    
  6. You can now pull in changes from the public BusTub as needed:
    $ git pull public master
    

We suggest working on your projects in separate branches. If you do not understand how Git branches work, learn how. If you fail to do this, you might lose all your work at some point in the semester, and nobody will be able to help you.

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.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].