Docs học tập
Backend nền tảng

D8 · Sharding và Partitioning

Sharding = chia ngang dữ liệu qua nhiều DB khác nhau (khác máy).

D8 · Nâng cao

Partitioning: chia một tủ hồ sơ thành nhiều ngăn. Sharding: chia hồ sơ ra nhiều tủ ở nhiều phòng khác nhau.

Cốt lõi

  • Sharding = chia ngang dữ liệu qua nhiều DB khác nhau (khác máy).
  • Partitioning = chia trong cùng một DB instance.
  • Ví dụ: bảng Users chia theo hash user_id → Shard1, Shard2, Shard3.

Đánh đổi

Ưu: tăng khả năng ghi + đọc. Nhược: JOIN phức tạp, resharding khó, nguy cơ hot shard.

Trong thực tế

Discord sharding 10M+ theo server_id.

Bug thường gặp

Chọn shard key theo ngày tạo → toàn bộ dữ liệu mới dồn vào một shard (hot shard).

Tự hỏi lại

Chọn shard key thế nào? Range-based vs hash-based?

On this page