Home

Awesome

LearnDB

What I Cannot Create, I Do Not Understand -Richard Feynman

In the spirit of Feynman's immortal words, the goal of this project is to better understand the internals of databases by implementing a relational database management system (RDBMS) (sqlite clone) from scratch.

This project was motivated by a desire to: 1) understand databases more deeply and 2) work on a fun project. These dual goals led to a:

This makes the learndb codebase great for tinkering with. But the product has some key limitations that means it shouldn't be used as an actual storage solution.

Features

Learndb supports the following:

Limitations

Getting Started: Tinkering and Beyond

Hacking

Install

Run REPL

source venv/bin/activate
python run_learndb.py repl

Run Tests

python -m pytest -s tests/e2e_tests_employees.py -k test_equality_select

References consulted

Project Management

Footnotes

  1. When evaluating the difference between two floats, e.g. 3.2 > 4.2, I consider the condition True if the difference between the two is some fixed delta. The accepted epsilon should scale with the magnitude of the number