Abstract: The current research explores and differentiates between various forms in which NoSQL databases exist. It examines the need of NoSQL and how they have become an important alternative to relational databases. NoSQL databases can be categorized into four major classifications which are: key value stores, graph databases, wide column stores, and document stores. These categories are compared on the basis of functional features and non-functional features. The non-functional features include performance, scalability, flexibility, structure and complexity. The functional features include de-normalization, joins, atomicity, aggregation and keys. Then for further analysis, one database is selected from each of these categories that is, MongoDB (document stores), Cassandra (wide column stores), Redis (key value stores), and Neo4j (graph databases). Selected databases are compared on their data model, CAP theorem, distributive properties and other factors. By performing the comparison on non-functional features, it has been found that a document store can be used if high performance, flexibility and scalability are required and if we have represented the data in JSON format. Column store can be used for semi structured data which requires high performance and scalability. Redis is anin-memory store and performs exceptionally fast in the case of single shard operation. Graph databases can be used when it comes to highly interconnected data and continuously evolving data models. The comparison between MongoDB, Cassandra, Redis and Neo4j concluded that all of them follow horizontal scaling and are schema free. Except Neo4j, others don't have complete ACID properties. Write and delete operations are fast for databases MongoDB, Redis and Cassandra, whereas read operation is comparatively slow in Cassandra. In case of Neo4j, REST performance is similar to MongoDB, whereas embedded is comparatively slow. We also discuss how these databases work in a distributed environment.