Written in Go? I wonder what the GC pressure is going to look like with many small keys. I've written a redis clone in Go a few years ago and the GC pauses when reaching a few GBs of utilization were awful. Granted the Go GC has improved considerably since but it's still going to be noticeable I bet.
Great. Good luck. As someone who's worked on the redis codebase, I suggest you take a good look at some of the design decisions and optimizations that project took, e.g. wrt persistence and replication.
Not associated with the OP, but I don't think so. It really does return your data 25x faster than a disk-based DBMS. The implied reduction in durability from being in-memory is clearly stated up front.
Given that you can configure any DB to use extra RAM as a cache, and many datasets will fit in that cache, if I was a fact checker I'd give the "25x faster" rating at least a "partly false" rating.
Yes, probably with superior performance. The clustering model seems to differ, but as far as I can tell, the 'distributed' part of this project isn't really implemented.
Depending on the use case. If this is being used to reduce load on your database, then there are no noticeable differences between performance of GhostDB or redis from the clients end.
Not too different from Redis at the moment, however this is straight out of a university project were we had a tight deadline and had to limit scope considerably but if you check the roadmap on the repo we want to add a lot to it.
“microsecond performance” irks me because you can’t get latencies of a microsecond without very expensive special network cards and APIs which they don’t seem to mention and I doubt they use. So they either mean 10s to hundreds of microseconds or they’re taking the reciprocal of their throughput which would be weird and misleading.
If you’ve made a fast product that’s great! Show us with well-explained benchmarks not the term which sounds best but you can still hand wave as justified, because it’ll make people suspicious.
Great project. I did not see an explanation on the architecture of a cluster. Is data replicated to all nodes, or is data only stored on a single node (sharded). What happens when a node in the cluster goes down? Does there have to be a consensus (odd number of nodes) for the cluster to be "healthy"?
> GhostDB provides a very large hash table that is distributed across multiple machines.
Sounds like no replication to me, AKA the memcached model. I can't find how to actually configure a cluster (the `Cluster Configuration` section of the docs doesn't contain anything related to hosts). I also can't find anything client side that would distribute requests to a list of nodes with a consistent hash, for ex. I can't find a client at all, actually.
Still, interesting project, kind of aiming for Redis features and a memcached topology.
Currently we follow the memcached model so there is no replication however, remember this is straight out of university were we had to limit scope considerably and were on a tight time constraint but we aim to add data replication, consensus etc.
Congrats for getting it out there ! That is more than half the battle. I thing I would like to see also is more Redis-Clones. The redis-parts not the KV parts(lots of options here). I want some alternatives or speed improvements for "Unions" and other set based operations :).
PS. GhostDB looks cool !