Horizontal scaling means adding more machines to handle more data or users. It helps systems grow smoothly without slowing down.
Horizontal scaling mental model in MongoDB
sh.enableSharding("databaseName") sh.shardCollection("databaseName.collectionName", { shardKey: 1 })
Use sh.enableSharding to turn on sharding for a database.
Use sh.shardCollection to split a collection using a shard key.
shopDB database and shards the orders collection by orderId.sh.enableSharding("shopDB") sh.shardCollection("shopDB.orders", { orderId: 1 })
userId.sh.enableSharding("userDB") sh.shardCollection("userDB.profiles", { userId: 1 })
This example shows how to set up horizontal scaling in MongoDB by adding servers as shards, enabling sharding on a database, choosing a shard key, and letting MongoDB distribute data automatically. Queries are routed to the correct server based on the shard key.
/* Step 1: Add shards (servers) to the cluster */ sh.addShard("server1:27017") sh.addShard("server2:27017") /* Step 2: Enable sharding on the database */ sh.enableSharding("ecommerceDB") /* Step 3: Choose a shard key and shard the collection */ sh.shardCollection("ecommerceDB.products", { productId: 1 }) /* Step 4: MongoDB automatically distributes data based on productId */ /* Step 5: When a query comes in, MongoDB routes it to the right shard */
Choosing the right shard key is very important for balanced data distribution.
Too many writes to one shard can cause a hotspot and slow down the system.
MongoDB manages routing and balancing automatically once sharding is set up.
Horizontal scaling means adding more servers to share the load.
MongoDB uses sharding to split data across servers based on a shard key.
This helps handle more data and users without slowing down.
Practice
Solution
Step 1: Understand horizontal scaling concept
Horizontal scaling means adding more machines to handle more data or users.Step 2: Apply to MongoDB context
MongoDB uses sharding to distribute data across multiple servers, which is horizontal scaling.Final Answer:
Adding more servers to share the data load -> Option AQuick Check:
Horizontal scaling = adding servers [OK]
- Confusing horizontal scaling with vertical scaling
- Thinking faster disks alone is horizontal scaling
- Mixing data compression with scaling
Solution
Step 1: Recall MongoDB scaling features
Replication copies data for backup and availability, not scaling data horizontally.Step 2: Identify horizontal scaling feature
Sharding splits data across servers to scale horizontally.Final Answer:
Sharding -> Option AQuick Check:
Horizontal scaling = Sharding [OK]
- Confusing replication with sharding
- Thinking indexing scales data horizontally
- Mixing aggregation with scaling
Solution
Step 1: Understand shard addition effect
Adding a shard triggers MongoDB to redistribute chunks to balance data load.Step 2: Analyze options
Data automatically redistributes to balance across all 4 shards matches MongoDB's automatic balancing; others describe incorrect behaviors.Final Answer:
Data automatically redistributes to balance across all 4 shards -> Option DQuick Check:
Shard addition triggers auto-balancing [OK]
- Assuming new shard only gets new data
- Thinking data duplicates on new shard
- Believing manual rebalance is always required
Solution
Step 1: Understand shard key role
The shard key determines how data is distributed and which shard handles queries.Step 2: Diagnose query routing issue
If all queries hit one shard, shard key is likely missing or poorly chosen, causing no data distribution.Final Answer:
Shard key is not properly chosen or missing -> Option BQuick Check:
Shard key controls query distribution [OK]
- Blaming replication for query routing
- Assuming indexes affect shard routing
- Thinking too many shards cause single shard hits
Solution
Step 1: Identify cause of uneven load
Uneven data distribution usually means the shard key does not distribute data evenly.Step 2: Select best fix
Changing to a better shard key balances data and load across shards, improving performance.Final Answer:
Choose a better shard key that evenly distributes data -> Option CQuick Check:
Balanced shard key = even load [OK]
- Adding replicas does not fix data imbalance
- Increasing RAM only helps performance, not distribution
- Disabling sharding removes scaling benefits
Ready to prove it?
Pass the test and this pattern moves unknown
