Sharding là một kỹ thuật chia nhỏ cơ sở dữ liệu (CSDL) theo chiều ngang, trong đó dữ liệu được phân chia thành các phần nhỏ hơn gọi là “shard” hoặc “phân đoạn”. Mỗi shard chứa một tập hợp con của dữ liệu và được lưu trữ trên một máy chủ riêng biệt.

Cách hoạt động:

  1. Chia dữ liệu: Dữ liệu được chia thành các shard dựa trên một khóa phân vùng (partition key). Khóa này có thể là một cột trong bảng hoặc một hàm băm (hash) của các cột.
  2. Phân phối shard: Các shard được phân phối trên nhiều máy chủ. Một shard có thể được sao chép (replicate) trên nhiều máy chủ để đảm bảo tính khả dụng cao và chịu lỗi.
  3. Truy vấn: Khi có yêu cầu truy vấn, hệ thống sẽ xác định shard chứa dữ liệu cần thiết dựa trên khóa phân vùng và chuyển hướng truy vấn đến máy chủ tương ứng.

Ưu điểm:

  • Khả năng mở rộng: Sharding cho phép mở rộng CSDL theo chiều ngang bằng cách thêm nhiều máy chủ. Điều này giúp tăng khả năng lưu trữ và xử lý dữ liệu khi lượng dữ liệu tăng lên.
  • Hiệu suất: Truy vấn được thực hiện trên các shard nhỏ hơn, giúp tăng tốc độ truy vấn và giảm tải cho hệ thống.
  • Tính khả dụng cao: Việc sao chép shard trên nhiều máy chủ giúp đảm bảo tính khả dụng cao và chịu lỗi. Nếu một máy chủ bị hỏng, các máy chủ khác vẫn có thể phục vụ yêu cầu truy vấn.

Nhược điểm:

  • Độ phức tạp: Sharding làm tăng độ phức tạp của hệ thống do cần quản lý nhiều máy chủ và shard.
  • Thao tác join phức tạp: Các thao tác join giữa các shard có thể phức tạp và tốn kém về hiệu năng.
  • Chi phí: Sharding có thể yêu cầu đầu tư thêm về phần cứng và phần mềm.

Khi nào nên sử dụng Sharding:

  • Khi lượng dữ liệu lớn và cần khả năng mở rộng theo chiều ngang.
  • Khi yêu cầu hiệu suất cao đối với các truy vấn đọc và ghi.
  • Khi cần đảm bảo tính khả dụng cao và chịu lỗi.

Các giải pháp Sharding phổ biến:

  • MongoDB
  • Apache Cassandra
  • ScyllaDB
  • Vitess
  • Citus

CLICK TO REGISTER BINANCE MEMBER

OKX – DIGITAL CURRENCY EXCHANGE