Skip to content

Latest commit

 

History

History
63 lines (40 loc) · 3.38 KB

references.md

File metadata and controls

63 lines (40 loc) · 3.38 KB

References

The following is some of the most useful research material I found while building toyDB. It is a subset of my reading list.

Introduction

Andy Pavlo's CMU lectures are absolutely fantastic as an introduction to database internals:

Martin Kleppman has written an excellent overview of database technologies and concepts, while Alex Petrov goes more in depth on implementation of storage engines and distributed systems algorithms:

Raft

The Raft consensus algorithm is well described in the very readable original paper by Diego Ongaro, and in a talk given by his advisor John Ousterhout:

However, implementing Raft can be a bit tricky due to some subtle details, so Jon Gjengset's student guide was very helpful in drawing attention to common pitfalls:

Parsing

Although using Go, not Rust, Thorsten Ball has written a very enjoyable hands-on introduction to parsers where he implements first an interpreter and then a compiler for the made-up Monkey programming language:

The toyDB expression parser is inspired by a blog post by Eli Bendersky describing the precedence climbing algorithm, which is the algorithm I found the most elegant:

Transactions

Jepsen (i.e. Kyle Kingsbury) has an excellent overview of consistency and isolation models, which is very helpful in making sense of the jungle of overlapping and ill-defined terms:

For more background on this, in particular on how snapshot isolation provided by the MVCC transaction engine used in toyDB does not fit into the traditional SQL isolation levels, the following classic papers were useful:

As for actually implementing MVCC, I found blog posts to be the most helpful: