Take the 2-minute tour ×
Database Administrators Stack Exchange is a question and answer site for database professionals who wish to improve their database skills and learn from others in the community. It's 100% free, no registration required.

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.

share|improve this question

1 Answer 1

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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