Skip to content

Latest commit

 

History

History
62 lines (39 loc) · 3.27 KB

references.md

File metadata and controls

62 lines (39 loc) · 3.27 KB

References

This is the main research material I used while building toyDB. It is a subset of my reading list.

Introduction

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

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

Raft

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

However, Raft has several subtle pitfalls, and Jon Gjengset's student guide was very helpful in drawing attention to these:

Parsing

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 (in Go):

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: