Conventional relational databases were the product of a great deal of research and testing to obtain optimal storage structures. However, their flaw is that they have a rigid structure which cannot be altered if there are different specifications. To combat this problem, NoSQL databases were created.
There are many different types of NoSQL databases, with different specifications. Some of these are −
Column - Data is stored in a columnar form. Some examples of this type of database are: Accumulo, Cassandra, Druid, Vertica etc.
Key Value - These databases are organised as key value pairs, where each key appears exactly once. The keys are usually arranged in a sorted fashion. Examples of this type of databases are: Aerospike, ArangoDB, Couchbase, Dynamo etc.
Graph - The databases are arranged in the form of a graph with the elements connected using the relations between them. Examples are AllegroGraph, InfiniteGraph,MarkLogic etc.
Document - The database is stored in the form of documents that are accessed using a unique key. A single key references a document. Examples of Domument based databases are: Apache CouchDB, BaseX, Clusterpoint erc.
|Graph Database||VARIABLE||VARIABLE||HIGH||HIGH||GRAPH THEORY|
|Key value database||HIGH||HIGH||HIGH||NONE||VARIABLE|
The data is not as consistent in NoSQL databases as in traditional relational databases. Moreover, while SQL databases uphold the ACID properties and provide reliable transactions, the NoSQL databases often sacrifice the ACID properties for speed and scalability.
Basically, both the SQL and NoSQL databases provide different functionalities and compliment each other in the long run. It is up to the user to choose whichever type of database suits their needs the best.