mkii (Mark 2) is a redis clone I've been working on and off for a while and I've decided to open source it recently as I think I'm a bit stuck on where to find some literature on how to implement some concepts like persistence and transactions using a SMP design. I'll probably be hitting some online courses but I wanted to put this out there to see if anyone had any constructive feedback.
The project is built on Rust and Tokio, and uses an SMP design to acheive parrallelism. I've recently updated it to work with the stablilized futures and async/await syntax.
Without persistence and transactions the database architecture is relatively easy to understand and it scales well without the pitfalls of something like thread-per-connection. Currently only the STRING functions are implemented in Redis and hashes and lists don't seem to hard. However before doing a ton of other work, I'd like to be more confident my architecture is sound.
This is a learning experience for me to exercise my brain - I'm not working towards anything production worthy.
I think your project is really cool (perhaps because I've been working on a graph database (Neo4J-compatible) in Rust to learn it, so I understand your motivations...)
While doing that, I came across the 'sled' crate as a wait-free KV-store. If does blocking I/O, though, but it might serve as a starting point for working on the storage side of things. As it uses traits to express the interface, I'm not sure it could be made asyncable using the current language features.
I'll definitely been looking at how you did the async parts.
The project is built on Rust and Tokio, and uses an SMP design to acheive parrallelism. I've recently updated it to work with the stablilized futures and async/await syntax.
Without persistence and transactions the database architecture is relatively easy to understand and it scales well without the pitfalls of something like thread-per-connection. Currently only the STRING functions are implemented in Redis and hashes and lists don't seem to hard. However before doing a ton of other work, I'd like to be more confident my architecture is sound.
This is a learning experience for me to exercise my brain - I'm not working towards anything production worthy.