Sign up ×

I've been reading up on NoSQL, but I can't figure out one thing. Is it meant to be a replacement for traditional SQL, or is it meant to be used in conjunction with it?

Basically, what I'm asking (I think) is: if you have some structured data that could be represented in an SQL database with tables for each kind of object and connections between them (e.g. users, messages, friendships, whatever), are there any advantages / does it make sense to store all of it in a NoSQL database, or should you just store it in a traditional SQL database and use a NoSQL one just for the stuff that needs to be accessed more frequently (e.g. cache)?


migration rejected from May 27 at 14:54


closed as primarily opinion-based by Colin 't Hart, RLF, Max Vernon, RolandoMySQLDBA, Paul White May 27 at 14:54


It sounds like someone hasn't done basic research. Not a "real question". (NoSQL only means "No SQL" while this often means that relationships are ... less important ... it is not always the case. Consider neo4j or Tutorial D are also "No SQL" databases). –  pst Oct 8 '11 at 22:47
Actually it means "Not Only SQL" and embraces polyglot persistence. See the article by Martin Fowler ( And there is a range from NOSQL stores handling large amounts of simple data to NOSQL stores handling complex, rich data (…) –  Michael Hunger Nov 18 '11 at 5:58

2 Answers 2

Apart from the above, a great reason to use NoSQL is for caching when building websites. You don't want to keep running complex queries, so you store the results in a NoSQL store. If sh*t hits the NoSQL fan (as detractors often point out, but I am not finding in practice) then design, and structure things so that you can always recover the cache in an emergency by running your cache generation process again over your tables.

You may also find NoSQL very useful for persisting API calls, and even for inter-process communication, since the performance is good enough.


If you've read through the answers posted above, you already know why NO SQL is much hyped. In simpler terms I can say it's being used because of the following reasons:

  1. If your data is very very huge (in terms of PETABYTES, TERABYTES etc.)
  2. If this huge data is very loosly coupled and there is no need for relational algebra. (i.e., information is very loosly related and you don't need lot of joins on tables to retireve data.)
  3. You need to scale up your database once in a while as well as you need to change it to make Database changes - adding more columns to your tables according to your requirement etc.
  4. If your data is not structured (file systems, images storage, videos) i.e., it can't be implemented or harder to implement using Tabular Databases (Oracle SQL Developer, MS SQL Server etc.)
