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
| Category | Description | Name 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 database | Data is stored in XML format | BaseX, eXist, MarkLogic Server etc. |
| Graph databases | Data 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 store | In 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 :
Mozilla
Adobe
Foursquare
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.




