Why do we need NoSQL?
The Relational Databases have the following challenges:
Not good for large volume (Petabytes) of data with variety of data types (eg. images, videos, text)
Cannot scale for large data volume
Cannot scale-up, limited by memory and CPU capabilities
Cannot scale-out, limited by cache dependent Read and Write operations
Sharding (break database into pieces and store in different nodes) causes operational problems (e.g. managing a shared failure)
Complex RDBMS model
Consistency limits the scalability in RDBMS
Compared to relational databases, NoSQL databases are more scalable and provide superior performance. NoSQL databases address the challenges that the relational model does not by providing the following solution:
A scale-out, shared-nothing architecture, capable of running on a large number of nodes
A non-locking concurrency control mechanism so that real-time reads will not conflict writes
Scalable replication and distribution – thousands of machines with distributed data
An architecture providing higher performance per node than RDBMS
Schema-less data model