top | item 39928984

SableDb – Fast, persistent database supporting Redis API

114 points| SableDb | 1 year ago |github.com

30 comments

order

hivacruz|1 year ago

How does it compare to Kvrocks, which use RocksDB as the storage backend too?

https://github.com/apache/kvrocks/

SableDb|1 year ago

Also, it works mentioning that kvrocks is more mature and supports many more commands than what SableDb currently supports

SableDb|1 year ago

It performs better and uses different design choices (for example: SableDb uses tokio's local task per connection, and in general it uses green threads to make the code more readable and easy to maintain).

I will release some design documents later on (hopefully this month). Remember that is a one man project (hopefully, not for long), so it takes time to organize everything :)

welder|1 year ago

Looks promising, but needs support for more than just strings and lists. I personally use hashes, sorted-sets, and sets more than lists in production apps, and probably others too?

https://github.com/sabledb-io/sabledb/issues/7

SableDb|1 year ago

Absolutely, adding more commands is my goal Completing a full-sync replication is my first priority (I have currently implemented a WAL tailing from primary -> replica) but tailing from a snapshot is the ideal solution IMO here.

Once this in place, adding "hash" commands (hset, hget etc) is the next family of commands. I open sourced it hopefully to get help from people out there :)

jitl|1 year ago

It would be informative to compare to memory only Redis and persistent Redis on the same hardware with the same benchmark suite. Even if SableDb is slower since it’s durably persisted, it would still be useful to consider the tradeoff versus ephemeral or weakly persisted implementation of the same API.

marcosdly|1 year ago

Written in Rust™

xedrac|1 year ago

So it's a Redis API written in Rust, but the underlying database is all C++. It seems like a nice project, but perhaps a little misleading to say it's written in Rust.

vdfs|1 year ago

    unsafe fn main() {
        ...
    }

dboreham|1 year ago

imho LSM (which is what RocksDB is) is not the optimal storage manager for this application. Should be a B-tree-like thing.

pgwhalen|1 year ago

What do you mean by “this application”? There’s no application here, it’s just a database, right?

Or do you mean that LSMs shouldn’t be a foundation for a database?

rafaelturk|1 year ago

SableDB - Written in Rust, well kind of: RocksDB engine is written entirely in C++