Roundup - Aug 10th
Roundup Part Three
Well, I’ve been gone for a little bit! I wanted to post a quick update (I actually couldn’t tell you if anyone is really reading these blogs). As always, the roundups are just brain dumps with minimal editing. The main reason for the break was that I had about a 3-week vacation away from home where I wasn’t on the computer for more than 10 minutes. Of note, I really do like those periods of breaks, it gives me time to just step away and not be buried under mounting projects. Well, time to give an update on things since I finished Gossip Glomers!
What I’ve Been Doing
Since finishing Gossip Glomers, I’ve been watching and completing the projects for CMU’s 15-445 Database Systems course. It provides complete and free access to even their autograder and I can’t say how amazing that is! It’s a full college course provided for free. Thank you to Andy Pavlo and the team for providing such an amazing resource for open source learners.
Now, I can’t really go into much detail on the implementation of any of the projects. The main point about the course is that academic integrity still holds even if you’re a non-CMU student. I will always take that to heart, so I won’t talk about my solution at all. I have completed through Project 2 on the Fall 2025 course. That means I have implemented the ARC replacement algorithm, a buffer pool manager, and a B+Tree index in C++ within the BusTub database (CMU’s educational DB system).
The main sticking points for project 1 (the buffer pool manager) was keeping together the various latches (it’s NOT ‘locks’ in the DB world!) on the pages you have in memory. There were many debugging sessions figuring out why certain pages were being lost.
For project 2, the most challenging piece was the delete routine in the midst of tombstone values. Tombstone values make the B+Tree a little more like a Bε-tree for deletes. It’s not quite a Bε-tree because inserts aren’t buffered, but it was a way to decrease the amount of merging needing to be done. What this did was make splitting and merging nodes much harder. I’d say my code wasn’t perfect and had a lot of repetition, but the end result was that I deeply understood how B+Tree’s worked and how to represent them on disk.
While the code was in C++, I do think I learned a lot on how to construct this layer of a database. I plan to continue on with Project 3 and 4 because those focus on query execution and concurrent query execution. The whole reason I embarked on this course was to get more hands-on application with database engine internals and prepare to implement it in my toy SQLite clone, FoundryDB. Once I move through the next two projects, I plan to return to FoundryDB and implement these in Rust. I won’t use the tombstone values and just do the normal B+Tree for the storage layer, but I still need to implement a buffer pool manager and query execution layer. As a result, this CMU course really gave me the knowledge needed to continue on with that project.
Of note, the CMU course has also introduced me to even more in the database world. I’m also planning to dive deeper into columnar storage engines, vector databases, and similar topics in the “databases in the AI era.” Unfortunately, these interests usually take me away from the thing that sparked them and I leave things unfinished, so the blog is my way of keeping up with myself. I am going to make sure I finish CMU and FoundryDB before getting too far in the new hotness.
What’s Next
As mentioned, I plan to continue on with CMU’s course and finish out those last two projects. I also have started to take interest in Defense Unicorn’s unique Kubernetes offering, Zarf. I plan to take my Raft implementation with its key-value store sitting on top of it and actually deploy it in Kubernetes, packaged as a Zarf package. This will allow me to understand Zarf a bit better and actually give a bit of a use case for my previous project! Stay tuned for that blog post!
Thanks again for reading and hope to bring you more content!
Roundup Series
In this section of the Roundup’s, I’ll post the “series” so you can cycle through!
| Previous Roundup | Next Roundup |
|---|---|
| Roundup - May 11th | Coming Soon! |