SucreDB: Distributed KV db with causality tracking (Riak/Dynamo like)


#1

Sucredb is a multi-master key-value distributed database, it provides a Riak/Dynamo style tunable consistent and causality tracking. From a client/protocol point of view it mimics a Redis Cluster, so existing clients just work.

Any node that owns a partition (replication factor) can serve both reads and writes. The database tracks causality using vector-clocks and will NOT drop any conflicting writes unlike LWW (last write wins) and other strategies. Conflicts can and do happen due to races between clients and network partitions.

It’s a project I’ve been working for a while now. As/(if) it moves forward I plan to implement some Redis functionality that works well with CRDTs like Counters, Sets, HyperLogLogs, … It could also expand to support Multi DC as well.


#2

Sounds really cool - good luck with it!

One suggestion, if you take this project far enough, is to provide jepsen test results. I think we’re at a point where distributed databases should be “Jepsen Certified” (or not) so users can make the right decision on how to use the product.