NoSQL

What is NoSQL ?

NoSQL is a non-relational database management systems, different from traditional relational database management systems in some significant ways. It is designed for distributed data stores where very large scale of data storing needs (for example Google or Facebook which collects terabits of data every day for their users). These type of data storing may not require fixed schema, avoid join operations and typically scale horizontally.

History of NoSQL

The term NoSQL was coined by Carlo Strozzi in the year 1998. He used this term to name his Open Source, Light Weight, DataBase which did not have an SQL interface.

In the early 2009, when last.fm wanted to organize an event on open-source distributed databases, Eric Evans, a Rackspace employee, reused the term to refer databases which are non-relational, distributed, and does not conform to atomicity, consistency, isolation, durability - four obvious features of traditional relational database systems.

In the same year, the "no:sql(east)" conference held in Atlanta, USA, NoSQL was discussed and debated a lot.

And then, discussion and practice of NoSQL got a momentum, and NoSQL saw an unprecedented growth.

Important characteristics of NoSQL

schema-free : A database schema is the structure of database system, described in a formal language supported by the database management system. In a relation database the schema defines the tables, the fields in each table and the relationships between fields and tables, generally it stored in a data dictionary. In NoSQL, collection is a group of documents where document represent a row and collection represent a table in a relational database. Collections are schema free which means within a single collection different types and structured of documents can be stored. For example, both of the following documents can be stored in a single collection.
{"colour" : "red"}
{"salary" : 100.00}
Note that the previous documents have no common data elements at all. This flexibility means that schema free practice can be possible in NoSQL database.

horizontally scalable :
To scale horizontally (or scale out) means to add more nodes to a system (such as adding a new computer). In NoSQL system, data store can be much faster as it takes advantage of “scaling out” which means to add more nodes to a system and distribute the load over those nodes

Categories of NoSQL database

CategoryDescriptionName of the database
Document Oriented Data is stored as documents. An example format may be like - FirstName="Arun", Address="St. Xavier's Road", Spouse=[{Name:"Kiran"}], Children=[{Name:"Rihit", Age:8}] CouchDB, Jackrabbit, MongoDB, OrientDB, SimpleDB,Terrastore etc.
XML databaseData is stored in XML format BaseX, eXist, MarkLogic Server etc.
Graph databasesData is stored as a collection of nodes, where nodes are analogous to objects in a programming language. Nodes are connected using edges. AllegroGraph, DEX, Neo4j, FlockDB, Sones GraphDB etc.
Key-value storeIn Key-value-store category of NoSQL database, an user can store data in schema-less way. A key may be strings, hashes, lists, sets, sorted sets and values are stored against these keys. Cassandra, Riak, Redis, memcached, BigTable etc.

Production deployment

There is a large number of companies using NoSQL. To name a few :

Google

Facebook

Mozilla

Adobe

Foursquare

LinkedIn

Digg

McGraw-Hill Education

Vermont Public Radio

Zynga

Please Google+, Like this tutorial on FaceBook, Tweet, save it as bookmark and subscribe with our Feed. Have suggestions? comment using Disqus down this page. Thanks.

share with delicious share with facebook w3r rss  share with digg share with reddit share with stumbleupon share with twitter