Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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)?

like image 389
Tedk Avatar asked May 09 '10 16:05

Tedk


People also ask

Is NoSQL a column-oriented database?

These are NoSQL databases built for highly analytical, complex-query tasks. Unlike relational databases, columnar databases store their data by columns, rather than by rows. These columns are gathered to form subgroups. The keys and the column names of this type of database are not fixed.

What distinguishes column-oriented NoSQL from document oriented NoSQL define them and explain their differences?

The main difference is that document stores (e.g. MongoDB and CouchDB) allow arbitrarily complex documents, i.e. subdocuments within subdocuments, lists with documents, etc. whereas column stores (e.g. Cassandra and HBase) only allow a fixed format, e.g. strict one-level or two-level dictionaries.

What is the difference between NoSQL and relational database?

Relational databases are table-based. NoSQL databases can be document based, graph databases, key-value pairs, or wide-column stores. Relational databases were built during a time when data was mostly structured and clearly defined by its relationships. Today, we know that data is much more complex.

What is the difference between NoSQL and SQL databases?

SQL databases are table-based, while NoSQL databases are document, key-value, graph, or wide-column stores. SQL databases are better for multi-row transactions, while NoSQL is better for unstructured data like documents or JSON.


2 Answers

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.

like image 95
Ravindra babu Avatar answered Sep 21 '22 14:09

Ravindra babu


Some NoSQL databases are column-oriented databases, and some SQL databases are column-oriented as well. Whether the database is column or row-oriented is a physical storage implementation detail of the database and can be true of both relational and non-relational (NoSQL) databases.

Vertica, for example, is a column-oriented relational database so it wouldn't actually qualify as a NoSQL datastore.

A "NoSQL movement" datastore is better defined as being non-relational, shared-nothing, horizontally scalable database without (necessarily) ACID guarantees. Some column-oriented databases can be characterized this way. Besides column stores, NoSQL implementations also include document stores, object stores, tuple stores, and graph stores.

like image 31
Maxx Daymon Avatar answered Sep 19 '22 14:09

Maxx Daymon