Sharding = chia ngang một bảng/DB lớn thành nhiều shard, mỗi shard giữ một tập con dữ liệu trên node riêng → scale được cả ghi lẫn dung lượng (khác replication chỉ scale đọc).
Cách chọn shard key:
- Range-based: chia theo khoảng (A–M, N–Z) — dễ range query nhưng dễ hotspot nếu phân bố lệch.
- Hash-based: hash(key) → phân bố đều, nhưng range query khó.
- Consistent hashing: giảm số dữ liệu phải di chuyển khi thêm/bớt node.
- Directory/lookup: bảng tra cứu ánh xạ key → shard, linh hoạt nhưng thêm một điểm phụ thuộc.
Chi phí: cross-shard join/transaction phức tạp, cần chọn shard key khớp mẫu truy vấn để tránh hotspot và query fan-out.