Skip to content
LBADD: An experimental, distributed SQL database
Go Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github repo: add issue templates (#29) Jan 14, 2020
cmd/repl pkg: rename package Dec 20, 2019
doc docs: update overview (#24) Jan 13, 2020
CONTRIBUTING.md docs: add contributing guide (#26) Jan 13, 2020
LICENSE.md license: added MIT license file (#16) Jan 7, 2020
Makefile makefile: add lint target Jan 3, 2020
README.md docs: add contributing guide (#26) Jan 13, 2020
btree.go btree: add boolean get operation skeleton methods Jan 7, 2020
btree_test.go btree: add boolean get operation skeleton methods Jan 7, 2020
codegen.go pkg: rename package Dec 20, 2019
codegen_test.go command: added table tests Dec 20, 2019
column.go column: optimize string and parse columnType methods Dec 30, 2019
command.go command: add create table command Dec 27, 2019
command_test.go command: add create table command Dec 27, 2019
db.go btree: fix storage interface signature Dec 30, 2019
executor.go executor: implement and add test for missing table name in db Jan 7, 2020
executor_test.go executor: implement and add test for missing table name in db Jan 7, 2020
go.mod integration: fix linting Jan 3, 2020
go.sum integration: fix linting Jan 3, 2020
gopheydb.png readme: added gopher Dec 20, 2019
parser.go parser: remove unused field Dec 20, 2019
parser_test.go command: added table tests Dec 20, 2019
query.go pkg: rename package Dec 20, 2019
repl.go integration: fix linting Jan 3, 2020
repl_test.go pkg: rename package Dec 20, 2019
step_string.go pkg: rename package Dec 20, 2019
steps.go pkg: rename package Dec 20, 2019

README.md

LBADD

Let's build a distributed databse.



LBADD is an experimental distributed SQL database, written in Go.

The goal of this project is to build a database from scratch which is well documented, fully tested, and easy to understand. Implementing as much as possible from the ground up.

It is also currently a work in progress. Feel free to follow along with the development of each component, from parser to pager.

Architecture

The database is made up of a few separate components. These handle the SQL parsing, the intermediary representation generation, the multi-node consensus, the execution of the IR, and the (persistent) storage.

For a brief overview of the purpose of each component, have a look at the overview.

Prior art

Inspiration has been taken from the brilliantly documented codebase of SQLite. However the codebase has been heavily optimized, and is difficult to follow without spending significant time.

Work has also already been done to build a distributed version of SQLite called rqlite. The project uses raft consensus in order to keep nodes consistent across the network.

LBADD aims to replicate these in a single project. LBADD doesn't aim to be nearly as performant as SQLite nor rqlite, and hopefully trades this instead for slightly more clarity and simplicity.

Contributing

Contributors are more than welcome and much appreciated. Please feel free to open a PR to improve anything you don't like, or would like to add. No PR is too small! Go check out our contributing guide for more detailed info about how to get started with a contribution.

License

This project is licensed under the MIT license.

You can’t perform that action at this time.