2

I am thinking about using Riak for a SasS application I started working on recently. I was originally thinking about MongoDB but after running into Riak it seems like it may be the better option. The application is for server monitoring and goggle anylatics type data. From my understanding it is pretty easy to do a map reduce job in Riak and its easy to put http caching tools like varnish/nginx to make raik your a close friend. The php drive seems pretty good also. I just woundering if there is anything I am missing in the understand of why you would not want raik for this type of data?

  • Raik does not support database + tables it simply uses buckets?
  • Riak is very easy to cluster adding new nodes in is said to be very easy, and very easy to cache?
  • Supports simple querys, search, and map/reduce, but how is the overall index support to make sure my qouerys are quick and how do search and simple querys perform on when there are a large number of nodes in the cluster?
  • Any gochas i should be aware of for Riak and its PHP, Ruby, or Python drivers?

Thank you so much :)

If anyone thinks i am crazy and should be looking at another database please feel free to let me know.

1
  • the level of complexity of doing a map-reduce job is the same between Riak and MongoDB. MongoDB also has their Aggregation Framework, which I have found more useful than mapReduce.
    – code_monk
    Commented Apr 16, 2015 at 13:44

1 Answer 1

3

The key architectural difference between the two, is in CAP configuration (as-in Brewer's CAP Theorem). Riak is considered to be an "AP" database (High-availability, Partition-tolerant), whereas MongoDB is a "CP" (Strong-consistency, Partition-tolerant). The underlying question becomes whether the more-important aspect of your system is to read your data or to write your data. If successful writes are more-important, and you can handle the fact that not all nodes will be consistent (or will be via "eventual consistency") then I would say Riak is the better choice. If the more-important aspect is that each read returns accurate data a high percentage of the time, and you're prepared to sacrifice a little performance (due to locking) to get it, then MongoDB is the better choice.

To get an understanding of databases/tables/buckets, make sure to read-up on the Riak data model before getting too deep in your application's design. The only "gotchya" I would caution against, is that I've heard people use many words to describe doing a Map-Reduce, and "easy" was never one of them. If that functionality is a key component of your application, I'd make sure to investigate that thoroughly before making any decisions.

Here's an article that does a comparison of Riak vs. MongoDB. It's by Basho (full-disclosure), so it may have some bias. Additionally, here's a comparison of several NoSQL databases that you may find useful as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.