• Stars
    star
    387
  • Rank 110,971 (Top 3 %)
  • Language
    Go
  • License
    MIT License
  • Created almost 5 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

LBADD: An experimental, distributed SQL database

LBADD

Let's build a distributed database.



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.

More Repositories

1

wrapcheck

A Go linter to check that errors from external packages are wrapped
Go
299
star
2

miniqueue

A simple, single binary, message queue. Supports HTTP/2 and Redis Protocol.
Go
207
star
3

rust-elias-fano

Elias-Fano encoding implementation in Rust
Rust
28
star
4

vim-npr

Sensible 'gf' for Node Path Relative JS module resolution per project 🐿
Vim Script
23
star
5

rasp-ws2812b

Controlling WS2812b LED's using Rust on the Raspberry Pi
Rust
17
star
6

snake

Parallel, abstract Snake engine 🐍
Go
9
star
7

poker_tracker_api

A Poker tracking API written in Go
Go
7
star
8

talks

Slides and notes for talks that I've given
Go
7
star
9

generative

Generative art experiments
Go
7
star
10

poker_tracker_ui

React UI for Poker Tracker App
JavaScript
6
star
11

R2D2

React HOC for ensuring data from store, otherwise dispatching for it
JavaScript
5
star
12

ChangeCMS

Change - A lightweight NodeJS CMS platform built with Meteor
CSS
5
star
13

rmraf

Play with fire, and your root directory's existence!
JavaScript
5
star
14

tools

Personal tooling configuration
Vim Script
4
star
15

gif_emoji

Turn images into animated rotating gifs
Python
4
star
16

tomarrellcom

Old personal site source. Includes interactive snake game written in vanilla JS working on both desktop and mobile.
CSS
4
star
17

React-Express-Skeleton

A Simple React + Express Application Skeleton
JavaScript
4
star
18

website

Personal website, ab 2019
JavaScript
3
star
19

blog

Personal blog, barely coherent
Go
3
star
20

sumup-lessons

Repo containing information for the Go programming lessons run at SumUp
Go
3
star
21

react-media-rtc

A lightweight WebRTC library for React apps
JavaScript
2
star
22

Date-Cake

A natural-language date calculator
JavaScript
2
star
23

tre

A simple, fast and interactive alternative to 'tree'
Rust
2
star
24

tomarrell

Add README.md to my GitHub profile
1
star
25

vim8

Vim8 specific dotfiles
Vim Script
1
star
26

rust-hands-on

Repo containing code used at the Rust functional programming hands-on meetup
Rust
1
star
27

SkiSim

A ski-field simulation with GUI written in Java including fully implemented multi-threading.
Java
1
star
28

MeteorTodo

Meteor Todo Application
JavaScript
1
star
29

tomarrell.co

My personal website and development blog.
CSS
1
star
30

BankErrorChecking

Project for Thales NZ. Checks for errors/inconsistencies in reports sent and received from a bank.
Python
1
star
31

dotfiles

Emacs configuration. Forked from @d4ncer
Emacs Lisp
1
star
32

cms-experiment

CSS
1
star
33

redcli

A simple Redis client for Pub/Sub
Go
1
star
34

multitouch

Go
1
star
35

plantower

A library for decoding data from the Plantower series of sensors
Go
1
star
36

o_f

Go
1
star
37

dots

Personally written & maintained custom dotfiles
Emacs Lisp
1
star
38

poker-v2

Poker Tracker reborn, in Rust
Rust
1
star
39

rust-cli-table

A CLI tabling tool which parses CSVs - Rust
Rust
1
star
40

Email-Scraper

Python
1
star
41

infra

Personal infrastructure manifests
Shell
1
star
42

emu

A tool to help manage .env files per project
Rust
1
star
43

photos

Documenting my personal photo backup strategy
1
star