NoSQL is a non sql or we can say a non relational database management system. NoSQL is designed to support the requirements of cloud applications and to overcome issues like scalability, performance and data distribution limitations of relational databases. Using NoSQL does not mean we are opposing SQL, but it is an alternative way of storing the data. NoSQL databases are used with large data and real-time web applications such as Facebook Google etc. NoSQL database is used in applications that create huge volumes of data, and the data can be structured, semi-structured and unstructured that can not be handled with relational database.
Relational databases support ACID. So there should be schema based data stores.But there are limitations on speed and scaling when it comes to massive high availability data stores. But NoSQL databases being schema-less do not define any strict data structure.
Types of NoSQL Databases
1) Key Value Databases - It the simplest NoSQL databases store. Each single entity in the database is stored as an attribute "key" with its "value". And the key of a key/value pair will always be a unique value and is used to access the data. Key value pairs store the data either in memory or in disk. Redis, MemcacheDBis Oracle’s Berkeley DB are the key value database.
2) Document Databases - In Document oriented databases each key is paired with a document and that document consists of complex data structure.Each documents can contain many different key-value pairs and even nested documents. Document databases create indexing of documents on the basis of its properties and primary identifier. Some of the Document Oriented Databases are MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable.
3) Graph Based Databases - A graph database is used for the data that is interconnected and can be well represented as a graph. A graph database uses nodes, edges and properties to represent and store data. Unlike Document Database, graph database does not provides indexing. Because every element contains a direct pointer to its adjacent element so no index is required. Examples are: Neo4j, OrientDB, Facebook Open Graph and Titan.
4) Column Databases - Column databases generally serialize all the values of a column on disk, which makes retrieval of a large amount of a specific data fast.Column-oriented database stores the data very effectively. As this database does not store a column when value doesn't exists. So It does not consume space for storing null value.Example of Column Based Databases are CouchDB, OrientDB etc.