NoSQL Database
    Initially data was stored in databases typically in mainframe systems that managed data in files using languages (3GL) such as c, COBOL, etc. To reduce the complexities of writing functions/procedures and custom code to organize such data, the related data was organized in relational databases that let to the creation of RDBMS and processing such data using SQL, invented by Edgar F. Codd in 1970. This is very efficient for structured and relational data.
    As the years progressed, the data volume increased drastically. The database size increased and they came to be commonly referred to as VLDB. Along with numeric, text and datetime data, other data types ( XML, BLOB, CLOB, ) were being commonly used. With the advent of web based e-commerce applications, data is typically created as transaction data along with image files, UPC bar codes in jpeg format, and social media applications create data in png format, audio files, video clips in mpeg and other sources such as security camera recording, data from GPS devices in video formats. Most of these data types are not structured and hence not suited for the RDBMS paradigm.
    Initially many companies tried to use such unstructures data (check images storage and processing in banking and financial institutions, large text, xml etc.) in relational databases, that provided compatible data types (BLOB, CLOB, xml etc.). The performance (retrive, read and render) was a big issue and so was the scalability, when such data was stored in RDBMS systems. This led to storing of non-structured data in non-relational databases and they are known as NoSQL databases started in 2000s, that use 3GL (c, java, Python, javascript, jQuery, etc.) for management of data and hence the moniker NoSQL. It is also know as Not Only SQL (NoSQL). Typically, NoSQL databases typically do not support or conform to ACID transactions. They adhere to the CAP theorem.
Types of NoSQL Database
    NoSQL databases pair each key value to complex data structure, which is commonly known as a document. A document can be setup using key-value pair, key-array pairs, or even nested documents. The document is typically stored as a json file.
    The columnar NoSQL databases store large datasets as columns than as rows. Typical columnar databases are Cassandra and HBase.
    The graph-database store data in the form of data networks or connections. This database is designed to rapidly find connected data, hierarchies (manager-employee) etc. extremely faster than RDBMS that use hierarchical queries. Typical graph databases are Neo4J and Giraph.
    The key-value store NoSQL databases store data as a key. Typical key-value databases are Riak and Berkeley DB. Redis database, an in-memory data structure store, has the ability to maps key-value to datatypes such as strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs and geospatial indexes with radius queries.

  No SQL Database references
  1. No SQL Databases - Christof Strauch
2. NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence, Pramod J. Sadalage and Martin Fowler, Addison-Wesley Professional; 1 edition (August 18, 2012)
3. No SQL Explained - mongoDB
  Relational database related references
  1. Relational Database
  2. Data warehousing using Relational Database
  3. Data Transaction ACID
  4. Storing BLOB data - Oracle database BLOB processing


Last revised on: February 23th, 2014