Sharding là kỹ thuật phân phối dữ liệu trên nhiều máy chủ (gọi là shard). MongoDB sử dụng sharding để hỗ trợ triển khai các bộ dữ liệu rất lớn và các hoạt động có thông lượng cao.
Khi dữ liệu tăng, một máy chủ duy nhất không thể đáp ứng
Chia dữ liệu thành các phần và phân phối trên nhiều máy chủ
Kéo một chunk từ shard này sang shard khác
Kéo chunk ở trên và thả vào shard khác
Nhấp vào nút "Mô Phỏng Truy Vấn" để xem định tuyến
Thêm dữ liệu mới và quan sát phân phối
Thử chọn các shard key khác nhau và xem cách dữ liệu phân phối:
Giải thích: Khi chọn shard key "user_id", dữ liệu được phân phối đều giữa các shard
Nhập một truy vấn và xem nó được xử lý như thế nào:
Kết quả trực quan sẽ hiển thị ở đây
Xây dựng kiến trúc sharding cho ứng dụng của bạn:
Kết quả đề xuất kiến trúc của bạn sẽ xuất hiện ở đây sau khi bạn nhấp vào nút "Thiết kế".
Hiệu suất của kiến trúc không sharding vs có sharding:
Thử nghiệm với các mức tải khác nhau:
Thêm shard mới và xem hiệu suất thay đổi:
Một shard là một máy chủ hoặc một cụm máy chủ lưu trữ một phần dữ liệu của toàn bộ collection. Mỗi shard có thể là một replica set để đảm bảo tính sẵn sàng cao.
Shard key là một trường hoặc một tập hợp các trường trong tài liệu được sử dụng để phân phối dữ liệu trên các shard. Việc chọn shard key tốt là rất quan trọng để đảm bảo dữ liệu được phân phối đều và hiệu suất truy vấn cao.
Một chunk là một dải liên tục của các giá trị shard key. MongoDB chia dữ liệu thành các chunk và phân phối chúng trên các shard. Mỗi chunk có kích thước mặc định là 64MB.
Mongos hoạt động như một bộ định tuyến truy vấn (query router), cung cấp một giao diện từ các ứng dụng khách đến cụm sharded. Ứng dụng không kết nối trực tiếp đến các shard mà kết nối đến Mongos, Mongos sẽ định tuyến truy vấn đến shard phù hợp.
Balancer là một tiến trình nền chạy trong cụm sharded, có nhiệm vụ di chuyển các chunk giữa các shard để đảm bảo dữ liệu được phân phối đều. Nó hoạt động tự động để ngăn chặn một shard bị quá tải trong khi các shard khác còn trống.
Để đảm bảo tính sẵn sàng cao, mỗi shard thường được triển khai dưới dạng một replica set (tập hợp bản sao). Nếu một node chính (primary) trong shard bị lỗi, một trong các node phụ (secondary) sẽ tự động được bầu làm node chính mới, đảm bảo cụm vẫn hoạt động mà không bị gián đoạn.
Một shard key tốt có ba đặc điểm chính:
ID:
Phạm vi (Range):
Shard hiện tại:
Số lượng tài liệu (ước tính):