What’s the difference between NoSQL and a Column-Oriented database

column-orienteddatabasenosqlrdbms

The more I read about NoSQL, the more it begins to sound like a column oriented database to me.

What's the difference between NoSQL (e.g. CouchDB, Cassandra, MongoDB) and a column oriented database (e.g. Vertica, MonetDB)?

Best Answer

NoSQL is term used for Not Only SQL, which covers four major categories - Key-Value, Document, Column Family and Graph databases.

Key-value databases are well-suited to applications that have frequent small reads and writes along with simple data models. These records are stored and retrieved using a key that uniquely identifies the record, and is used to quickly find the data within the database.

e.g. Redis, Riak etc.

Document databases have ability to store varying attributes along with large amounts of data

e.g. MongoDB , CouchDB etc.

Column family databases are designed for large volumes of data, read and write performance, and high availability

e.g Cassandra, HBase etc.

Graph database is a database that uses graph structures for semantic queries with nodes, edges and properties to represent and store data

e.g Neo4j, InfiniteGraph etc.

Before understanding NoSQL, you have to understand some key concepts.

Consistency – All the servers in the system will have the same data so anyone using the system will get the same copy regardless of which server answers their request.

Availability – The system will always respond to a request (even if it's not the latest data or consistent across the system or just a message saying the system isn't working) .

Partition Tolerance – The system continues to operate as a whole even if individual servers fail or can't be reached.

Most of the times, only two out above three properties will be satisfied by NoSQL databases.

From your question,

CouchDB : AP ( Availability & Partition) & Document database

Cassandra : AP ( Availability & Partition) & Column family database

MongoDB : CP ( Consistency & Partition) & Document database

Vertica : CA ( Consistency & Availability) & Column family database

MonetDB : ACID (Atomicity Consistency Isolation Durability) & Relational database

From : http://blog.nahurst.com/visual-guide-to-nosql-systems

enter image description here

Have a look at this article1 , article2 and ppt for various scenarios to select a particular type of database.