Sharding phân phối dữ liệu của một collection ra nhiều shard để mở rộng ngang ghi + lưu trữ. Thành phần một sharded cluster:
- Shard: mỗi shard (thường là một replica set) giữ một tập con dữ liệu.
mongos: router — ứng dụng nối tới mongos, nó định tuyến truy vấn tới shard phù hợp.- Config servers: giữ metadata về việc ánh xạ dữ liệu → shard.
Shard key quyết định cách chia:
- Hashed: rải đều, tránh hot shard, nhưng truy vấn range kém.
- Ranged: theo khoảng, tốt cho range query, dễ lệch.
MongoDB chia dữ liệu thành chunk và cân bằng (balancer) chuyển chunk giữa các shard cho đều.
Đánh đổi/lưu ý: chọn shard key sai → hot shard hoặc truy vấn phải hỏi mọi shard (scatter-gather) rất chậm; nên chọn shard key có độ chọn lọc cao và khớp mẫu truy vấn phổ biến. Thường chỉ shard khi một replica set đã tới giới hạn.