I am searching to employ a key/value store for many side projects (mostly like a chance to learn), but a lot of have put their hands up recently that I have got no clue where to start. Just listing from memory, I'm able to think about:
- Tokyo, japan Cabinet
- Berkeley DB
And I am certain you will find more available which have ended up through my search efforts. With the information available, it's difficult to find solid evaluations between all the rivals. My criteria and questions are:
- (Most Significant) Which would you recommend, and why?
- Which may be the quickest?
- Which is easily the most stable?
- Which may be the simplest to setup and install?
- Which of them have bindings for Python and/or Ruby?
To date it appears like Redis is the greatest solution, but that is only because I have become one solid response (from ardsrk). I am searching for more solutions like his, simply because they point me in direction of helpful, quantitative information. Which Key-Value store do you use, and why?
If anybody practical knowledge with CouchDB, Riak, or MongoDB, I'd like to hear your encounters together (as well as much more if you're able to provide a comparative analysis of countless of these)
Which would you recommend, and why?
I suggest Redis. Why? Continue reading through!!
Which may be the quickest?
I can not say be it the quickest. But Redis is fast. Its fast because it holds all of the data in RAM. Lately, virtual memory feature was added but nonetheless all of the secrets remain in primary memory with only rarely used values being swapped to disk.
Which is easily the most stable?
Again, since i have don't have any direct knowledge about another key-value stores I can not compare. However, Redis has been utilized in production by many people web programs like github and instagram among many more.
Which may be the simplest to setup and install?
Redis is rather simple to setup. Grab the source as well as on a Linux box run
make install. This yields
redis-server binary you could use it the journey and begin it.
redis-server binds to localhost:6379 automatically. Take a look at
redis.conf that accompany the origin for additional configuration and setup options.
Which of them have bindings for Python and/or Ruby?
[EDIT: reaction to xorlev's comment]
@xorlev: Just comment when i had skipped something vital that you mention and also you brought to mind it.
make 32bit which makes all pointers only 32-bits in dimensions even on 64 bit machines. This protects considerable memory on machines with under 4GB of RAM.
Hope this can help.
I have been having fun with MongoDB and contains one factor that causes it to be ideal for my application, a chance to store complex Maps/Lists within the database directly. I've got a large Map where each value is a listing and that i do not have to do anything whatsoever special simply to write and retrieve that not understanding all of the different secrets and list values. I'm not sure much concerning the other available choices however the speed which ability make Mongo ideal for my application. As well as the Java driver really is easy to make use of.