NoSQL Zone is brought to you in partnership with:

Senior Java developer, one of the top stackoverflow users, fluent with Java and Java technology stacks - Spring, JPA, JavaEE. Founder and creator of http://computoser.com and http://welshare.com . Worked on Ericsson projects, Bulgarian e-government projects and large scale recruitment platforms. Member of the jury of the International Olympiad in Linguistics and the Program committee of the North American Computational Linguistics Olympiad. Bozhidar is a DZone MVB and is not an employee of DZone and has posted 82 posts at DZone. You can read more from them at their website. View Full User Profile

From 2010: Why Startups Should Not Choose NoSQL

06.28.2012
| 9650 views |
  • submit to reddit

The NoSQL hype is omnipresent. And many startups are tempted to go for Cassandra/MongoDB/HBase/Redis/… . Here I’ll argue why they should rather stick to a SQL solution – MySQL or PostgreSQL.

In my previous post about Cassandra I detailed why I decided not to use it. Now, a dozen presentations watched and several dozen articles read later, I can detail why I think it is not generally a good idea.

NoSQL is great for “web-scale”. That is the mantra of NoSQL evangelists. But an important downside of NoSQL solutions, which is mentioned by most sources (twitter, facebook, rackspace) is that in NoSQL (at least for Cassandra and HBase) you must know what will be the questions that you will be asking upfront. You can’t just query anything you like. On the other hand the relational model allows you to define your model and then ask whatever question (query) comes to your mind. And I can bet that a startup does not yet know all the questions it is about to ask its data store.

Another thing is usability. All developers are familiar with SQL and relational model. And startups must get in the public fast. Why bother learning a new paradigm, a new platform, and new tools (if you are lucky to have tools)?

Now let’s get back to the web-scale. A startup does not need web-scale. Really. You are not getting a million users overnight. Twitter didn’t. Facebook didn’t. If things work out you can gradually upgrade your data model to meet the new demands. That’s how twitter and facebook did. They started with MySQL. Oh, by the way – twitter is still using MySQL for the most important thing – tweets. Now, if you have more data than them, you are.. facebook?

So to summarize – don’t sacrifice flexibility and ease of work for some fictional “trillions of petabytes”. If it happens that you need to handle huge amounts of data, it will be in a way that you will be able to restructure your data model. And at a point when you will know what questions you want to ask.

Published at DZone with permission of Bozhidar Bozhanov, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Greg Brown replied on Thu, 2012/06/28 - 12:45pm

This article has NoJava. It doesn't belong on JavaLobby.

 

Sura Sos replied on Thu, 2012/06/28 - 3:29pm

No, they should use what ever technology that can give them significant competative advantage like cloud, nosql, dynamic language, etc,. What ever you are comfortable with. 

 

Christos Melas replied on Fri, 2012/06/29 - 9:41am

Good points..if you know sql and how to structure your complex data correctly in a rdbs.

For some startups it might be easier and better to stick with nosql, especially if there is no good knowledge of rdbms and sql. In that case one might get in all kind of trouble i.e. imagine a non relational schema or a not so well structured data model.

Jonathan Fisher replied on Fri, 2012/06/29 - 3:28pm

Ted Dzubia wrote an excellent article called "I can't wait for NoSQL to Die" that explains this in detail. Essentially, NoSQL is non-pragmatic. The lack of tooling, the longevity of the implementation, the lack of standards, and so forth make it a bad choice. Relational databases will work just fine for the 80% case in startups. Choosing NoSQL from the get go is saying you're only problem will be scalability, when in fact your biggest problem is going to be the lack of time to get things done.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.