views:

209

answers:

4

I haven't been confronted with this yet, but this is what i think (very superficial and simplistic imho)

If you have a key value kind of storage and all you accesses are key lookups use the NOSQL solutions. If you want lookups based on values (and subvalues) or have something more complicated like joins you would go for a relational solution. Transactions = relational (am not too sure if nosql solutions support that notion yet) It also looks like NOSQL = denormalized (SQL) (i may be terribly mistaken here)

In general, any principles/guidelines/thumb rules to decide chosing the data model for your application.

A: 

What is your alternative? How else are you planning on storing data?

Jacques
A: 

NOSQL is not a particular data model or paradigm for data access. It is used to refer to any number of non-SQL database technologies, typically those designed for distributed database applications.

Denormalization is generally a relational database term. It has nothing to do with NOSQL databases, most or all of which are not relational.

dportas
I don't think that denormalization is a relational db term. Normalization means that you don't store information that could somehow be determined from other information in the db.
TTT
@TTT: Perhaps it could be taken to mean that in other contexts but in relational databases it has a very specific meaning which is rather different. Anyway if your definition is the intended one then I don't see why it would be the case that "NOSQL = denormalized" according to Neal.
dportas
agree nosql = denormalized (sql) is a lil misleading.in relational you can store normalized as well as denormalized data. in a nosql kinda store (read key value type) you cannot really normalize data.
neal aise
You can normalize your data in a NoSQL DB. You can always choose to store id's as references to other collections in for instance MongoDB. Storing everything normalized in MongoDB has the big disadvantage that you have to do a lot of client side joining and you can run into a lot of inconsistencies but it is not impossible.
TTT
+1  A: 
TTT
+1  A: 

There are various factors which one may use to select a DB implementation, some of them are:

  1. Cost : NoSQL DBs lean more towards the open source , cheaper side
  2. Scalability : NoSQL can scale better with cheaper hardware
  3. If you have too many joins you should go for a traditional RDBMS
  4. Consistency guarantees can vary based on the solution used w.r.t NoSQL

You can also check out the following podcast : "Episode 165: NoSQL and MongoDB with Dwight Merriman" on SE Radio.

Ravi Vyas