Data partitioning (sharding) chia dữ liệu qua nhiều server/database sao cho mỗi cái giữ một tập con — cho phép horizontal scaling của dữ liệu và tải vượt qua một server đơn. Chọn cách partition (partition key và chiến lược) là then chốt.
Partitioning/sharding là gì
PARTITIONING / SHARDING → chia dữ liệu thành các phần (partition/shard) qua nhiều
server, mỗi cái giữ một TẬP CON:
→ không server đơn nào giữ (hay bị quá tải bởi) toàn bộ dữ liệu
→ scale LƯU TRỮ và TẢI theo chiều ngang (mỗi shard xử lý phần của nó)
→ cho phép xử lý dữ liệu/throughput vượt quá năng lực của một máy
Các chiến lược partitioning
HASH-based → hash partition key → gán vào một shard:
✓ phân bố ĐỀU (tránh hotspot) ✗ query theo khoảng khó; resharding khó nhằn
RANGE-based → partition theo khoảng giá trị (vd A-M, N-Z; khoảng ngày):
✓ query theo khoảng hiệu quả ✗ rủi ro HOTSPOT (tải không đều nếu dữ liệu/truy cập lệch)
DIRECTORY/lookup → một bảng tra cứu ánh xạ key tới shard (linh hoạt, nhưng tra cứu là overhead)
GEOGRAPHIC → partition theo region (data locality)
