My learning journey in databases
I discovered databases by accident about a year ago. We had a school project where we needed to build a very basic web app and store some data. We used SQLite for simplicity.
After wiring everything up and running my first query, I thought to myself: this seems too easy for something that must be so complex under the hood. So I googled what actually happens when you write something like this:
INSERT INTO table1 (column1) VALUES ('value1');
That’s when I discovered a whole world of internals and complexity I had no idea existed.
Curious to understand more, I decided to dig in. Starting by reprogramming SQLite from scratch, then later contributing to open source projects like TursoDB.
I’ve now been learning and practicing for a while, and I don’t plan on stopping anytime soon. Here are the resources I used along the way. I hope they help other curious minds too.
Projects
- LSM-Tree storage engine↗
- MVCC reimplementation
- SQLite reimplementation↗
- A B-Tree series implementing an ABI-compatible BerkeleyDB clone
- Rust extension for PostgreSQL↗
- Distributed transactional key-value database
Course
I follow Andy Pavlo’s course↗. Mikaël Francoeur recommended it to me. It is a great course, with simple explanations, exercises, and 5 projects.
Books and papers
- Database Internals↗ by Alex Petrov
- How Query Engines Work↗ by Andy Grove
- Readings in Database Systems↗
- The Internals of PostgreSQL↗
- The Art of PostgreSQL↗
- PostgreSQL official documentation↗