I am currently working on AllyDB, which is basically my own Redis, which I am writing in Elixir.
Currently, the database is nowhere close to being ready, as you can see in the roadmap, but I am doing my best to add stuff as fast as possible.
Currently the implementation is very simple, with an in memory table, an append log persistence system, as well as an interval persistence system as a backup.
The database could definitely be optimized further, especially when it comes to persistence, which I am planning to do in the future.
I’m also planning to use Rust NIFs for specific tasks for the performance gains over Elixir and BEAM.
Writes and deletes are currently asynchronous, but I will add blocking versions of them soon.
I am trying to make the system as fault tolerant as possible, and currently everything except the TCP connections are fault tolerant.
Feel free to check the project and the roadmap out, and let me know what I could improve or give feature or optimization ideas!
I would love to especially get some ideas or tips on how I can perhaps make the database more performant, by maybe changing the way I use ETS, OTP features or the way I persist data, and if you see a bad practice, feel free to let me know, because after all I am trying to learn at the same time and every bit helps.
Thanks, and have a nice one!