I struggle choosing. I started both at the same time and keep going back and forth.
Riak
-> I love the fault tolerance
-> easier to scale with a dreamworld of hash-rings I wish I could have.
-> no indexes
-> no Geo-spatial indexes
-> I don't like link walking... it's not intuitive.
-> I want to use Riak (Lucerne/Solr like) full text search, but the docs are poor and have to read dozens of useless documents to get nowhere very quickly. It's a separate install that requires pre-commits?(which are never explained well enough to start using it).
-> installing on Mac OSX is painful (homebrew works/doesn't work depending on version, 32 bit or 64? how come I don't have include 32bit flags with older repo's, yet newer ones are only 64bit yet don't compile.... errors errors errors...ERLANG which? such a pain in the ass installing Riak unless you do it using specific build tools.
-> Only Joyent provides a hosted solution which is too expensive relative to its offering.
-> accepts any docs just set the content type.. handles original documents without conversions
-> easy to load balance behind NGINX
-> can choose between conflicting writes
MongoDB
-> straight forward install.. up and running in no time
-> SQL like queries
-> intuitive indexes
-> Geo-spatial indexes
-> Affordable hosted services with more than one provider.
-> no full text searching over documents
-> have to fiddle with doc handling GRIDFS etc..
-> can't choose between conflicting writes (last one wins)
I wish I could have "RiaMong"
-> straight forward install.. up and running in no time
-> fault tolerance
-> easier to scale with a dreamworld of hash-rings.
-> indexes
-> Geo-spatial indexes
-> Affordable hosted services at with more than one provider.
-> full text searching for documents
-> handle original documents without conversions
-> can choose between conflicting writes
I work at Basho. Specifically I've been doing a lot of work on Riak Search lately. I absolutely agree that the Search documentation is underwhelming and could use some major love. I take it as a personal challenge to improve the situation before the 1.0 release comes out.
That aside, you might like to know that for the 1.0 release Search is bundled along with the standard Riak package (you just need to set a flag to enable it). You can try using the latest pre-release or even build from source on master or the 1.0 branch. If you don't actually need full-text search then you could also checkout Riak's new support for secondary indexes. Please drop a line on the mailing list or IRC if you have questions.
Great list. I think the reason Mongo has become so popular is because the line it straddles between SQL and NoSQL, specifically the query language. You feel right at home.
CiuchDB is another DB I like quite a bit, but wrapping your had around writing map reduce views in order to index and execute queries is A LOT different than a select.
Thank you very much for your answer, especially since you compared the two. That helps me understand even better.
Just wanted to let you know Basho is addressing some of your wishes. Riak 1.0, which is coming out at the end of this month, has integrated riak search (so it is no longer a separate install) and also has integrated secondary indexes (on numerical values, so not full text search but integrated nicely.) I believe, it may be possible, to do geo-spatial searches using the new index system, but I've only thought about it, haven't tried it yet. (It's not built in, but I think its something one could build, and I'd like to build myself eventually.) They now have binary builds for installing on Mac OS X (IIRC) and I've been able to install via homebrew and source lately, so they might have fixed that. They've also got a new thing called riak_pipe which is really useful for certain classes of problems (its new so not well documented yet.)
Anyway, thanks again for your answer, and just wanted to let you know Basho seems to be addressing the issues you ran into.
Riak
MongoDB I wish I could have "RiaMong" Oh well maybe someday :)