📖 Scenario: You are managing a MongoDB database for an online store. The store has many products, and you want to distribute the data evenly across multiple servers to keep the database fast and reliable.MongoDB uses chunks to split data into pieces and a balancer to move these pieces between servers automatically.
🎯 Goal: Learn how to create a sharded collection, understand chunks, and enable the balancer to distribute data evenly.
📋 What You'll Learn
Create a sharded collection called products in the store database
Shard the collection using the category field as the shard key
Check the chunk distribution for the products collection
Enable the balancer to balance chunks across shards
💡 Why This Matters
🌍 Real World
Large databases use sharding to split data across servers, improving speed and reliability for users worldwide.
💼 Career
Database administrators and backend engineers use sharding and balancer settings to manage scalable, high-performance MongoDB clusters.
Progress0 / 4 steps
1
Enable sharding on the store database
Use the sh.enableSharding() command to enable sharding on the store database.
MongoDB
Hint
Use sh.enableSharding("store") to enable sharding on the database.
2
Shard the products collection on the category field
Use the sh.shardCollection() command to shard the store.products collection using { category: 1 } as the shard key.
MongoDB
Hint
Use sh.shardCollection("store.products", { category: 1 }) to shard the collection.
3
Check the chunk distribution for the products collection
Use the sh.status() command to view the chunk distribution for the store.products collection.
MongoDB
Hint
Use sh.status() to see how chunks are distributed.
4
Enable the balancer to distribute chunks evenly
Use the sh.setBalancerState(true) command to enable the balancer so it can move chunks between shards automatically.
MongoDB
Hint
Use sh.setBalancerState(true) to turn on the balancer.
Practice
(1/5)
1. What is the main purpose of chunks in MongoDB sharding?
easy
A. To backup data automatically
B. To create indexes on collections
C. To encrypt data for security
D. To split data into smaller parts for easier management
Solution
Step 1: Understand the role of chunks in sharding
Chunks divide large data sets into smaller pieces to distribute across servers.
Step 2: Identify the purpose of chunking
This splitting helps manage and query data efficiently in a distributed system.
Final Answer:
To split data into smaller parts for easier management -> Option D
Quick Check:
Chunks split data = To split data into smaller parts for easier management [OK]
Hint: Chunks break data into parts for easier handling [OK]
Common Mistakes:
Confusing chunks with backups
Thinking chunks encrypt data
Assuming chunks create indexes
2. Which of the following is the correct command to check the balancer status in MongoDB?
easy
A. sh.status()
B. db.balancerStatus()
C. sh.isBalancerRunning()
D. sh.getBalancerState()
Solution
Step 1: Recall MongoDB shell commands for sharding
The sh.status() command shows the sharding status including balancer info.
Step 2: Verify other options
Other commands are not valid MongoDB shell commands for balancer status.
Final Answer:
sh.status() -> Option A
Quick Check:
Balancer status command = sh.status() [OK]
Hint: Use sh.status() to see balancer info quickly [OK]
Common Mistakes:
Using non-existent commands like db.balancerStatus()
Confusing balancer commands with other shell commands
Assuming sh.getBalancerState() exists
3. Consider a sharded collection with chunks distributed unevenly. What will the balancer do when it runs?
medium
A. Move chunks from overloaded shards to underloaded shards
B. Delete chunks from overloaded shards
C. Merge all chunks into one big chunk
D. Create new chunks on the busiest shard
Solution
Step 1: Understand balancer's role in chunk distribution
The balancer moves chunks to spread data evenly across shards.
Step 2: Identify the correct action for uneven chunk distribution
It migrates chunks from overloaded shards to those with less data to balance load.
Final Answer:
Move chunks from overloaded shards to underloaded shards -> Option A
Quick Check:
Balancer moves chunks to balance load = Move chunks from overloaded shards to underloaded shards [OK]
Hint: Balancer moves chunks to balance shard load [OK]
Common Mistakes:
Thinking balancer deletes chunks
Assuming balancer merges chunks
Believing balancer creates chunks on busy shards
4. You run sh.startBalancer() but the balancer does not start. What is a likely cause?
medium
A. Chunks are too small to move
B. Balancer is disabled in the config server
C. Balancer is already running
D. No shards exist in the cluster
Solution
Step 1: Check balancer configuration
If balancer is disabled in the config server, it won't start even if commanded.
Step 2: Evaluate other options
Balancer already running would not prevent start command; chunk size doesn't block start; shards must exist for sharding.
Final Answer:
Balancer is disabled in the config server -> Option B
Quick Check:
Balancer disabled in config = won't start [OK]
Hint: Check config server if balancer won't start [OK]
Common Mistakes:
Assuming balancer can't start if already running
Thinking chunk size blocks balancer start
Ignoring config server settings
5. A MongoDB cluster has uneven chunk distribution causing slow queries on one shard. You want to manually trigger chunk migration to balance load. Which command should you use?
hard
A. sh.shardCollection('db.collection', { shardKey: 1 })
B. sh.splitChunk('db.collection', { shardKey: value })
C. sh.moveChunk('db.collection', { shardKey: value }, 'toShard')
D. sh.enableBalancer()
Solution
Step 1: Identify command to move chunks manually
sh.moveChunk() moves a specific chunk to a target shard manually.
Step 2: Differentiate from other commands
sh.splitChunk() splits chunks, sh.enableBalancer() enables automatic balancing, and sh.shardCollection() enables sharding on a collection.
Final Answer:
sh.moveChunk('db.collection', { shardKey: value }, 'toShard') -> Option C
Quick Check:
Manual chunk move = sh.moveChunk() [OK]
Hint: Use sh.moveChunk() to manually move chunks [OK]
Common Mistakes:
Using splitChunk to move chunks
Confusing enabling balancer with moving chunks
Trying to shard collection again instead of moving chunks
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.