Should i use a NoSQL Data Store?

Since NoSQL became a trendy term you often see this sort of post in var­i­ous blogs and forums.

We are build­ing a new appli­ca­tion and we are con­sid­er­ing using NoSQL(Trendy NoSQL name here) as the only Data­base so no hybrid sys­tem RDBMS/noSQL

I would like to know does any­one build a app just rely­ing on noSQL ?
What about scal­ing noSQL on multi server ?
There any limit on num­ber of data­base / row noSQL can have on one server ?

Now there are a num­ber of imme­di­ate flaws in this ques­tion which should lead to a lot of pain in the project if they carry on like this.

The first and sim­plest is that while SQL (or per­haps we should say rela­tional) stan­dard data­bases are just that, a stan­dard, based on the ANSI SQL and mean­ing that whether you use Ora­cle or MySQL or MSSQL you are pretty well grap­pling with the same thing. How­ever NoSQL while seem­ing to does not imply any stan­dard­i­s­a­tion or even similarity.

One list of the archi­tec­tures of NoSQL breaks down as follows

  • Doc­u­ment store
  • Graph
  • Key-value store (with these variants)

  • Eventually‐consistent key‐value store
  • Hier­ar­chi­cal key-value store
  • Hosted ser­vices
  • Key-value cache in RAM
  • Key-value stores on disk
  • Ordered key-value stores

  • Mul­ti­value databases
  • Object data­base
  • Tab­u­lar
  • Tuple store

The prob­lem is peo­ple are decid­ing to go with a tech­nol­ogy that they know so lit­tle about that they need to ask a rather gen­eral forum if it is a good idea and how to do it. Then every­one jumps in and sug­gest pro’s and con’s and eso­teric plumb­ing for data struc­tures and even some alter­na­tive prod­ucts which are “much bet­ter” than what­ever the other one was.

Now call me old fash­ioned if you like but wouldn’t it be bet­ter to per­form a detailed require­ments analy­sis (or at least a basic require­ments analy­sis) of the project to deter­mine it’s archi­tec­ture and the data struc­tures needed to sup­port that archi­tec­ture and the longer term appli­ca­tion objec­tives and then inves­ti­gate which data stor­age method is going to fit those requirements?

Of course if it’s just a fash­ion thing and you just feel like using a new tech­nol­ogy you have seen blogged about then go ahead. In this case one is as good as another and yes sure use a cou­ple of them to make life more interesting.