ToyDB rewritten: a distributed SQL database in Rust, for education

97 erikgrinaker 13 5/11/2025, 7:49:09 PM github.com ↗

Comments (13)

atombender · 11h ago
Hi, Erik! Nice to see this on the HN front page.

Have you considered using this as a test bed to explore alternative architectures and approaches? The classical Volcano architecture used here has been established for many decades, and it could be fun exercise to see what can be done to improve on it, while remaining true to the original goal of having something that's purely for educational purposes.

erikgrinaker · 4h ago
Hi Alex!

I quite like the Volcano model, it has a certain elegance to it. :) With vectorization and distribution you can get pretty far with it.

For my next real project, I want to build something based on the Accord consensus protocol from Cassandra: https://cwiki.apache.org/confluence/download/attachments/188...

It’s the first productionization of leaderless consensus protocols. It merges strict serializable transactions into the consensus layer (in 1RTT on the fast path), and has sharding built-in including cross-shard transactions.

It doesn’t support interactive transactions though, so it’s not a drop-in for SQL systems (but I don’t think they are suitable in modern systems anyway, given the latency cost). And it requires quorum reads, since it can’t use leader leases (for obvious reasons), so reads may end up being too slow for many georeplicated setups. But it’s a neat design.

mdaniel · 8h ago
There were quite a few interesting projects linked to in the prior comment threads from 2021 https://news.ycombinator.com/item?id=27874992
fabianlindfors · 11h ago
Super cool project and the code is delightfully readable as well!

I had the pleasure of having Erik advise me for my thesis on distributed databases a few years ago. I’m very lucky to have had the chance to tap into his knowledge on all things distributed systems. On top of being super knowledgeable he’s also a terrific teacher!

erikgrinaker · 4h ago
Thanks for the kind words, Fabian — it was fun working together on your thesis!
GeorgeCurtis · 8h ago
Really cool project, your code is beautifully neat and commented. I'm also building a Rust DB so was really nice reading through yours
wood_spirit · 2h ago
Simple question but is this OLAP or OLTP?
erikgrinaker · 1h ago
OLTP
dev_l1x_be · 3h ago
Is there a way to use this as a simple key value store without sql?
nextaccountic · 2h ago
Maybe consider sled? https://github.com/spacejam/sled

It's been abandoned for some years, the author was working on a new engine for it and in the last 5 days they started working again on sled proper. However, it's pretty good the way it is (the 0.34.7 release from 2021 https://crates.io/crates/sled), despite the beta warnings

More info here https://dbdb.io/db/sled

(Note, non affiliated to the author, just liked the project)

cmrdporcupine · 16m ago
These days I've been using fjall, which has the benefit of being actively worked on: https://github.com/fjall-rs/fjall
erikgrinaker · 2h ago
It already uses a key/value store for on-disk storage, but you’ll have to write the server API and client yourself, along with a Raft state machine layer. It’s not a big lift though, and could make a fun weekend project.
mehulashah · 6h ago
Love it, though if it’s sufficiently instructive, I bet it will go beyond education.