📖 Scenario: Your e-commerce application's orders collection has grown to 500 million documents. A single MongoDB server can no longer handle the read/write load. You need to shard the collection across multiple servers to distribute the data and traffic.
🎯 Goal: Enable sharding on a database, choose an appropriate shard key, shard a collection, and verify the data distribution across shards.
📋 What You'll Learn
Enable sharding on the database
Shard a collection with an appropriate compound key
Check the shard distribution
Configure the balancer window
💡 Why This Matters
🌍 Real World
Sharding is how MongoDB scales to billions of documents across companies like eBay, Forbes, and Uber that need to handle massive data volumes.
💼 Career
Database administrators and backend engineers must understand sharding to design MongoDB deployments that scale with growing data and traffic.
Progress0 / 4 steps
1
Enable sharding on the database
Use sh.enableSharding() to enable sharding on the "ecommerce" database.
MongoDB
Hint
Use sh.enableSharding("databaseName") to enable sharding on a specific database.
2
Create index and shard the collection
First create a compound index on { "region": 1, "orderId": 1 } for the ecommerce.orders collection using db.orders.createIndex(). Then use sh.shardCollection() to shard "ecommerce.orders" on that same compound key.
MongoDB
Hint
The shard key must have a supporting index. Create the index first with db.orders.createIndex(), then shard with sh.shardCollection().
3
Check shard distribution
Use db.orders.getShardDistribution() to check how data is distributed across the shards.
MongoDB
Hint
Use db.orders.getShardDistribution() to see the percentage of data on each shard.
4
Configure balancer window
Set the balancer to only run during off-peak hours. Use db.settings.updateOne() on the config database to set the balancer's activeWindow with start as "02:00" and stop as "06:00". Filter by { _id: "balancer" } and use $set.
MongoDB
Hint
Update the balancer settings in db.settings with an activeWindow object containing start and stop times.
Practice
(1/5)
1. What does horizontal scaling in MongoDB primarily involve?
easy
A. Adding more servers to share the data load
B. Increasing the CPU power of a single server
C. Using faster disks on the existing server
D. Compressing data to save space
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 A
Quick Check:
Horizontal scaling = adding servers [OK]
Hint: Horizontal scaling means more servers, not bigger servers [OK]
Common Mistakes:
Confusing horizontal scaling with vertical scaling
Thinking faster disks alone is horizontal scaling
Mixing data compression with scaling
2. Which MongoDB feature is used to implement horizontal scaling?
easy
A. Sharding
B. Indexing
C. Replication
D. Aggregation
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 A
Quick Check:
Horizontal scaling = Sharding [OK]
Hint: Sharding splits data across servers horizontally [OK]
Common Mistakes:
Confusing replication with sharding
Thinking indexing scales data horizontally
Mixing aggregation with scaling
3. Given a MongoDB cluster with 3 shards, each holding 1 million documents, what happens when you add a 4th shard?
medium
A. The cluster stops working until manually rebalanced
B. New data only goes to the 4th shard, old data stays on first 3
C. All data duplicates on the 4th shard
D. Data automatically redistributes to balance across all 4 shards
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 D
Quick Check:
Shard addition triggers auto-balancing [OK]
Hint: Adding shards triggers automatic data balancing [OK]
Common Mistakes:
Assuming new shard only gets new data
Thinking data duplicates on new shard
Believing manual rebalance is always required
4. You configured a MongoDB sharded cluster but notice all queries hit only one shard. What is the likely cause?
medium
A. Replication is not enabled
B. Shard key is not properly chosen or missing
C. Indexes are missing on all shards
D. The cluster has too many shards
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 B
Quick Check:
Shard key controls query distribution [OK]
Hint: Proper shard key ensures queries spread across shards [OK]
Common Mistakes:
Blaming replication for query routing
Assuming indexes affect shard routing
Thinking too many shards cause single shard hits
5. You have a MongoDB cluster with 5 shards. Your application experiences uneven load because one shard stores much more data than others. What is the best solution to fix this?
hard
A. Increase RAM on the overloaded shard server
B. Add more replicas to the overloaded shard
C. Choose a better shard key that evenly distributes data
D. Disable sharding and use a single server
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 C
Quick Check:
Balanced shard key = even load [OK]
Hint: Good shard key balances data evenly across shards [OK]
Common Mistakes:
Adding replicas does not fix data imbalance
Increasing RAM only helps performance, not distribution
Disabling sharding removes scaling benefits
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.