MongoDB Documentation, Release 3.0.4 Vertical scaling adds more CPU and storage resources to increase capacity. Scaling by adding capacity has lim- itations: high performance systems with large numbers of CPUs and large amount of RAM are disproportionately more expensive than smaller systems. Additionally, cloud-based providers may only allow users to provision smaller instances. As a result there is a practical maximum capability for vertical scaling. Sharding , or horizontal scaling , by contrast, divides the data set and distributes the data over multiple servers, or shards . Each shard is an independent database, and collectively, the shards make up a single logical database. Sharding addresses the challenge of scaling to support high throughput and large data sets: For example, to insert data, the application only needs to access the shard responsible for that record. For example, if a database has a 1 terabyte data set, and there are 4 shards, then each shard might hold only 256GB of data. If there are 40 shards, then each shard might hold only 25GB of data. MongoDB supports sharding through the configuration of a sharded clusters . • Sharding reduces the amount of data that each server needs to store. Each shard stores less data as the cluster grows. • Sharding reduces the number of operations each shard handles. Each shard processes fewer operations as the cluster grows. As a result, a cluster can increase capacity and throughput horizontally . 10.1.2 Sharding in MongoDB 662 Chapter 10. Sharding