MongoDB - Sharding
Sharding là quá trình lưu trữ các bản ghi dữ liệu trên nhiều máy và đó là cách tiếp cận của MongoDB để đáp ứng nhu cầu tăng trưởng dữ liệu. Khi kích thước của dữ liệu tăng lên, một máy đơn lẻ có thể không đủ để lưu trữ dữ liệu cũng như không cung cấp thông lượng đọc và ghi có thể chấp nhận được. Sharding giải quyết vấn đề với tỷ lệ theo chiều ngang. Với sharding, bạn thêm nhiều máy hơn để hỗ trợ tăng trưởng dữ liệu và nhu cầu của các hoạt động đọc và ghi.
Tại sao Sharding?
Trong sao chép, tất cả các lần ghi đều đi đến nút chính
Các truy vấn nhạy cảm về độ trễ vẫn chuyển sang chế độ chính
Tập hợp bản sao đơn có giới hạn là 12 nút
Bộ nhớ không thể đủ lớn khi tập dữ liệu hoạt động lớn
Đĩa cục bộ không đủ lớn
Chia tỷ lệ dọc quá đắt
Sharding trong MongoDB
Biểu đồ sau đây cho thấy Sharding trong MongoDB sử dụng cụm phân đoạn.
Trong sơ đồ sau, có ba thành phần chính:
Shards- Các mảnh được sử dụng để lưu trữ dữ liệu. Chúng cung cấp tính khả dụng cao và tính nhất quán dữ liệu. Trong môi trường sản xuất, mỗi phân đoạn là một tập hợp bản sao riêng biệt.
Config Servers- Máy chủ cấu hình lưu trữ siêu dữ liệu của cụm. Dữ liệu này chứa một ánh xạ tập dữ liệu của cụm thành các phân đoạn. Bộ định tuyến truy vấn sử dụng siêu dữ liệu này để nhắm mục tiêu hoạt động đến các phân đoạn cụ thể. Trong môi trường sản xuất, các cụm phân đoạn có chính xác 3 máy chủ cấu hình.
Query Routers- Các bộ định tuyến truy vấn về cơ bản là các thể hiện mongo, giao diện với các ứng dụng khách và hoạt động trực tiếp đến phân đoạn thích hợp. Bộ định tuyến truy vấn xử lý và nhắm mục tiêu các hoạt động đến các phân đoạn và sau đó trả về kết quả cho máy khách. Một cụm phân đoạn có thể chứa nhiều hơn một bộ định tuyến truy vấn để phân chia tải yêu cầu của máy khách. Một máy khách gửi yêu cầu đến một bộ định tuyến truy vấn. Nói chung, một cụm phân đoạn có nhiều bộ định tuyến truy vấn.