Note that this seems to be a relatively old project, first commits from 2015. The project seems active, but most of the work seems to have been done around its inception, with some significant activity from 2020 onwards. Speculation/interpretation: So this might be a project that was used internally by some company, but perhaps not any more, and they've decided to open-source it at some point (2017-2018?) because some folks were/are still excited about it and want to keep developing it.
This might explain some of the "why yet another RocksDB-based KV store?" line of questioning.
Aaah, there was a super informative talk about the different databases at Facebook, most of them built on RocksDB, with different trade offs. (And I can't find the video :((((( )
Anyway, it makes sense to have yet another it if serves a different purpose. Eg. for read-heavy workloads (caches, serving user feeds, whatever), or write-heavy (monitoring, storing that sweet sweet tracking juice that then gets read once or twice while building the recommendation models), small or large blobs, latency requirements, HA/consistency requirements, how complicated queries are going to be, does it support secondary indices or not, etc.
I wouldn't say thats accurate. Theres many super successful and active apache projects still. To name a few:
Kafka, Cassandra, Zookeeper, Spark, Tomcat, Superset, Storm, Lucene,Log4j2, Hadoop, etc. The list goes on, but I would safely say that a majority of the world's systems run on Apache projects which are for the most part actively developed
Technically, all of them can, if you put the "persisted" storage in a directory on a ramfs or tmpfs mount :)
This might seem like a bit of a facetious comment, but it does have genuine use cases, e.g. unit tests, or for data that you can easily restore after a shutdown.
Thanks for the link. In that post, he writes "Note: when we talk about disk controller we actually mean the caching performed by the controller or the disk itself. In environments where durability is important system administrators usually disable this layer of caching." I'm not sure I completely understand that note. Can you illuminate?
That's probably in cases where the disk controller can't guarantee that accepted writes will make it to the disk in the case of power failure. I worked with bare metal servers that had redundant power supplies including to the caching/raid disk controller and disks that in the event of power loss could still guarantee that writes that were 'sync'd by software were written after power loss.
KV stores are a complex topic and research continues. Each new tool comes with its own set of trade offs. It would help to go through the documentation.
> Each new tool comes with its own set of trade offs
Is the cognitive load this produces still worth the consideration? At what level do you have to operate for the gains to actually make viable business sense to even consider?
Sometimes I am thinking "Well, surely at Google level" – and then I load up one of their interfaces, for example Google Ads, and I have to sit around for 10s before anything even shows up.
There are so many startups in the KV DB space that it's absolutely worth it. Now if one is a consultancy, they can very well used any available key value stores. But beyond a certain scale, it's very useful to try and customize a KV store. That's where it becomes useful.
This seems very interesting and I am peaked but the documentation and web page is lacking a lot to tell me what it is and how it's intended to be used. I know it's a key value store and it's supposed to be fast but that's it.
This might explain some of the "why yet another RocksDB-based KV store?" line of questioning.