Trung BìnhSystem Design iconSystem Design

Database Sharding là gì? Các chiến lược sharding phổ biến và khi nào nên dùng? (What is Database Sharding? What are common sharding strategies and when should you use it?)

Sharding là kỹ thuật chia dữ liệu của một database thành nhiều phần nhỏ hơn (shards), mỗi shard nằm trên một database server riêng, cho phép scale ngang khi dữ liệu vượt quá capacity của một server.

Các chiến lược:
- Range-based sharding: chia theo range của key (user_id 1-1M trên shard 1) – dễ implement nhưng dễ tạo hot spot.
- Hash-based sharding: hash key để phân phối đều – tránh hot spot nhưng khó range query.
- Directory-based sharding: lookup table ánh xạ key → shard – linh hoạt nhất nhưng thêm lookup overhead.
- Geographic sharding: chia theo region – tốt cho compliance và latency.

Thách thức: cross-shard joins tốn kém, distributed transactions phức tạp, rebalancing khi thêm shard khó. Dùng sharding khi đã tối ưu hết cách khác (index, caching, read replicas) và dataset thực sự vượt quá TB.

Xem toàn bộ System Design cùng filter theo level & chủ đề con.

Mở danh sách System Design