Open osevan opened 3 years ago
Hey @osevan
The speed comes from using shared memory instead of sockets. In KeyDB socket IO can be >80% of CPU time for certain work loads so this can definitely be an improvement. I don't think integrating whitedb into KeyDB itself is feasible (we have to support a wide number of features) but having a shared memory interface is interesting.
The issue there is that we can only communicate with processes on the same machine. I'm not sure how common a use case this is.
Hey @osevan
The speed comes from using shared memory instead of sockets. In KeyDB socket IO can be >80% of CPU time for certain work loads so this can definitely be an improvement. I don't think integrating whitedb into KeyDB itself is feasible (we have to support a wide number of features) but having a shared memory interface is interesting.
The issue there is that we can only communicate with processes on the same machine. I'm not sure how common a use case this is.
Sometimes for highspeed in memory databases we didnt need additional server or servercluster itself,because we need best latency and fast inserts and reads.
So networkstack for.db.clustering not always needed.
For my usecases in 99,999 %
We need only one machine with very fast latency and huge amount writes and reads as possible.
I wish you good luck with understanding of library and try to plant in keydb.
Btw keydb is my favourite in memeory db.
Thumbs up
I would recommend trying out Unix sockets instead of using localhost as performance will be significantly better.
The issue there is that we can only communicate with processes on the same machine. I'm not sure how common a use case this is.
It is the required step to get better performance: https://blog.acolyer.org/2019/06/24/fast-key-value-stores/ In-process rate limiting https://github.com/mailgun/gubernator.
In-process cache https://medium.com/vimeo-engineering-blog/video-metadata-caching-at-vimeo-a54b25f0b304
So an example step would be to import redis/keydb as a library in all your client nodes and it will implement a cluster with all your client nodes.
I found very fast dB in github, but not known by many guys.
It works without networkstack so no filedescriptor needed.
It works directly over library in memory and the owner claims, fastest in memory dB.
Could you benchmark itself and if its faster,upload your benchmark here and update keydb with whitedb as additional module to use as different make dbbackend=whitedb with keydb?
This will be win win situation for everyone who want use fast in memory db.
https://github.com/priitj/whitedb/tree/master/Doc
http://whitedb.org/speed.html
Thanks and
Best regards