NoSQL is short for “not only SQL”. NoSQL databases include mechanisms for storage and retrieval of data based on means other than the tabular relations used in relational databases
The term NoSQL was actually coined back in 1998, but research and development into NoSQL systems didn’t really take off until 2009. The idea behind NoSQL is to develop new database technologies to deal with the massive growth in data stored about users, objects and products, as well as the increasing frequency of users accessing data. Database professionals argue that we must develop these new technologies to avoid performance problems as the scale of databases inevitably increases.
Types of NoSQL Databases
Document databases pair each key with a document data structure. Documents can hold a variety of different key-value pairs, or key-array pairs or even nested documents.
Graph stores or graph store databases store information regarding networks, such as social connections, for example. Neo4J and HyperGraphDB are open-source graph databases that store data structured in graphs rather than in tables.
Key-value stores are the most basic type of NoSQL database. Every item in the database is stored as an attribute name/key along with the value of the key. Riak and Voldemort are well-known key-value stores. A few key-value stores (such as Redis, for example), permit each value to have a type (i.e., “integer”, etc.) to add functionality.
Wide-column stores, including Cassandra and HBase, are specifically designed for queries over large datasets, and they store columns (instead of rows) of data together.
Advantages of NoSQL
In general, NoSQL databases are both more scalable and higher performing (faster access times) than large relational databases. By the same token, NoSQL data models are designed to improve on problem areas in the relational model. Not only SQL data models allow for:
- dealing with large amounts of structured, semi-structured and unstructured data
- agile sprints, quick iterations and regularly scheduled code pushes
- flexible, easy-to-use object-oriented programming
- highly efficient scale-out architecture (versus inefficient monolithic architecture for relational models).