You may have heard about NoSQL a lot from past few years. Do you have a doubt about whether I should use it or not!
Here are few points about NoSQL related databases:
NoSQL does not provide sql for query language. Data is not necessarily represented as fixed schema. Data is stored as document, key value pair or in graph style. Few NoSQL databases started providing NoSQL kind of query. But still it is not near to SQL.
In NoSQL kind of Databases, you need to already know that how are you going to use the information. It is an important point.
NoSQL is good where you have massive amount of data. It does not mean that it is bad in small amount of data. But then in smaller size of data, why will you loose the flexibility of SQL! NoSQL is like manual database whereas RDBMS (MySQL) are like automatic database. Lots of things you can do manually in noSQL for performance and stability.
NoSQL is very good in distributed scenario where you need to partition database because of it massiveness. So, Facebook, twitter and alike are using noSQL.
With NoSQL, MapReduce techniques can be easily used to perform analytical queries and high write loads.
NoSQL is good in fast response time under all loads. Good in real time insert, delete and update (good for gaming). So, for example, storing Apache log data, noSQL DB is a good candidate.
Bad thing about NoSQL is that it does not provider Data Integrity. Application needs to enforce it.
Redis and memcache are mentioned at many places for key/value pair storage.
MongoDB and CoughDB are in document based NoSQL storage.
For Graph based, FlockDb, InfiniteGraph and others are there. More info on types of NoSQL databases here.
So, Should I start project with NoSQL?
Above you read many good and bad points about NoSQL. You can decide about it based on your scenario.
You better know whether your data will grow to that level or not where you are ready to sacrifice your existing knowledge of RDBMS and ready to embrace new technology. The technology which requires you to have knowledge of the way you are going to use it before you start creating database in NoSQL DB. NoSQL is new so you may find few people who has prior knowledge about it but in RDBMS, you can easily find many people. Management of it will be little difficult than the known RDBMS like MySQL but it will provide all the benefits NoSQL brings with it. If you sure, your application is going to be that large then there is no harm in using NoSQL based DB as this can provide speed in that massive scale (FB, Twitter, etc). In the link Highscalability below you will find more use cases for NoSQL.
5 reasons to use NoSQL,
Comparison - Cassandra - MongoDB - CouchDB - Redis - Riak - HBase - Noo4j