Horizontal scaling involves setting up additional servers that are collectively referred to as a cluster. The cluster is then managed by a control mechanism that is responsible for assigning tasks to cluster member servers. One example of horizontal scaling that many of you will be familiar with is the concept of a web server farm: where you have a group of web servers that service requests on the backend but appear to the internet as a single server. The control mechanism would be a scheduling daemon that determines which server in the web server farm has the most available bandwidth, and directs the next request to that server.
In the context of MongoDB, horizontal scaling is achieved by splitting data in a large collection into fragments referred to as shards. All the shards together are referred to as a sharded cluster.
The advantage of horizontal scaling is that you can simply continue to add servers as needed, giving you virtually unlimited storage. Another benefit...