How I got into databases and distributed systems
I was working on building a reading app for myself (hatsulingo.com) and I wanted to implement a simple timestamp-based sync feature. I considered using some of the pre-existing syncing solutions but they all seemed more complicated than hand-rolling my own push/pull sync system. But during my research, I read something on Reddit that changed my outlook on what I am trying to build:
“Anyone trying to implement sync in their app is essentially trying to recreate a distributed database”
I kept mulling over this for weeks. And the more I thought about it, the more I agreed. So this got me thinking: if I want to level up and be the engineer I aspire to be, I need to learn more about databases and distributed systems.
So, I looked up resources online. I had started using Twitter recently and knew tech Twitter (especially @phileaton) loves DDIA. So I added that to my reading list. I am a huge fan of the people working on the Turso project. Luckily enough, I discovered their open Discord for project contributors where we have conversations and share resources for database development! I instantly joined and collected all the advice they had for getting into databases. I also asked some of them nicely on Twitter and they were happy to give me advice and book recommendations on plans for getting into databases.
So, my plan for the next few weeks is going through:
- CMU’s Intro To Database System course
- MIT’s Distributed Systems course
- Database Internals Book
- Designing Data Intensive Applications Book
Sidenote: I might have taken a few days off from work to binge a bit of the courses :p
Comments
I know I might be on my honeymoon phase in the database journey but I am really enjoying the problem space. I am happy spending my time learning about this. Haven’t really had this feeling since my junior year’s “Theory of Computation” course.
Extras
Some things I didn’t find a good place to mention:
- @phileaton has a great post on
r/databasedevelopmentif you want a comprehensive resources list (the comments have great suggestions too!) - Tigerbeetle is cool, their demo video on ThePrimeagen’s channel was super cool
- These guys really know about databases and using new technologies to improve their performance, reliability and development
- I need to learn to read C/C++
- Knowing Rust/Zig is not enough
- I need to read more about Linux kernel and io_uring
- I’m considering formal education in this field.
- But first I need to go through the course material and read a few papers on the topic to see if I vibe with them