© 2026 Laravel

Database Sharding: Chiến lược Scale cho hàng Terabyte dữ liệu

2 phút đọc
#database #sharding #scalability #system-design

Mục lục bài viết

Sử dụng các mục để điều hướng nhanh

#1. Vấn đề

Khi Database của bạn đạt tới giới hạn của một server vật lý (CPU/RAM/Disk), việc tiếp tục upgrade server (Vertical Scaling) trở nên quá đắt đỏ và có giới hạn.

#2. Định nghĩa Sharding

Sharding là kỹ thuật chia nhỏ dữ liệu của một bảng khổng lồ ra nhiều database instances khác nhau. Mỗi shard chỉ chứa một phần dữ liệu (ví dụ: User có ID 1-1tr ở Shard A, 1tr-2tr ở Shard B).

#3. Quizz phỏng vấn

Câu hỏi: Làm thế nào để giải quyết vấn đề “Cross-shard Query” (query dữ liệu nằm ở nhiều shard)? Trả lời:

  • Tốt nhất là thiết kế lại Schema để dữ liệu liên quan nằm cùng Shard (ví dụ: Orders của User A phải cùng Shard với User A).
  • Nếu không thể, dùng một lớp Aggregator ở tầng Application để chạy query song song ở các shard rồi gộp kết quả lại (chậm và tốn tài nguyên).

Câu hỏi mẹo: Thế nào là “Hot Shard”? Trả lời: Là tình trạng một shard nhận được quá nhiều traffic so với các shard còn lại. Nguyên nhân thường do “Sharding Key” không tốt (ví dụ shard theo region, nhưng 90% user của bạn lại nằm ở US).

Bài viết liên quan