There are countless debates on SQL or no-SQL. From what I can tell, the real advantage I see in no-sql is writing speed. At least that is the main thing that no-sql advocates shout about. Of course, there are many types no-sql databases (couchDB, mongoDB) and many types of sql databases (mysql, postgresql, sqlite….) and they all have their own advantages and disadvantages.
Almost every app I’ve built uses relational models. And I like to keep things simple at the start and make them more efficient/appropriate when there is a need to. For example, using both postgresql (for e-commerce transactions) and mongodb (for user activities, comments and other social stuff) within that app.
At the end of the day, hardcore techies will always debate and ponder and find the urge to try it all out. I try to avoid that because sometimes I find it counter-productive and time consuming. It’s good to experiment because that’s how we learn. But I guess we just have to ask what our priorities are at that point in time!
I’ve built many apps with little traffic, sometimes so little that my database performance is insignificant. So, nowadays, I don’t think too much. If I’m building blog-cms-like applications, I’d use simpleDB (cause it’s ridiculously cheap and I can use heroku for free! Heroku’s postgresql only provisions you with 5mb for free.)(there are times when being cheap is a bad idea!). And if I’m unsure on what to use, I’d ask myself, is there going to be a lot of writes to the database? If no, postgresql it is! If yes, I’ll still start with postgresql.
MongoDB has been a popular starting point. And yes it is pretty awesome. But if you’re planning to manage your own server, scaling and stuff, MongoDB adds some responsibilities. So if you’re ok with that, go ahead. Alternatively, you could go with MongoHQ and let them manage it for you (for a price).
I’ve heard good tings about Cassandra (made by facebook). I confess that my hands are itchy to give it a try.