MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB Shards và tải tổng hợp không cân bằng

Khung tổng hợp là một bánh răng quan trọng trong cơ sở hạ tầng MongoDB. Nó giúp bạn phân tích, tóm tắt và tổng hợp dữ liệu được lưu trữ trong MongoDB. Tham khảo bài đăng trên blog này để biết thêm chi tiết về khung tổng hợp trong MongoDB 2.6.

Trong bản phát hành 2.6, MongoDB đã thực hiện một thay đổi tinh tế nhưng đáng kể trong cách các đường ống tổng hợp cơ bản thực thi trong môi trường phân đoạn. Khi làm việc với các tập hợp phân đoạn, MongoDB chia đường ống thành hai giai đoạn. Giai đoạn đầu tiên hoặc giai đoạn “$ match” chạy trên mỗi phân đoạn và chọn các tài liệu có liên quan. Nếu người lập kế hoạch truy vấn xác định rằng một phân đoạn không có liên quan dựa trên các khóa phân đoạn thì giai đoạn này không được thực thi trên phân đoạn đó.

Các giai đoạn tiếp theo chỉ chạy trên phân đoạn "chính" cho bộ sưu tập. Phân đoạn này hợp nhất dữ liệu từ các phân đoạn khác và chạy phần còn lại của đường dẫn. Điều này dẫn đến tải nhiều hơn đáng kể đối với phân đoạn chính của bộ sưu tập được tổng hợp. Dưới đây là một ví dụ từ một trong những khách hàng của chúng tôi đang chạy ba phân đoạn và sử dụng chủ yếu các truy vấn tổng hợp:

Như bạn thấy, tải trên phân đoạn đầu tiên thường xuyên gấp 3-4 lần lý do khác. Đây là một ví dụ cực đoan vì điều này trong trường hợp các phân đoạn thứ hai và thứ ba được thêm vào sau đó, do đó phân đoạn chính cho tất cả các bộ sưu tập là phân đoạn đầu tiên. Vì vậy, về cơ bản, các giai đoạn tiếp theo của tất cả các công việc tổng hợp của chúng tôi chỉ chạy trên Shard1. Nếu bạn kiểm tra nhật ký trên phân đoạn chính, bạn sẽ thấy một số lệnh "hợp nhất" truy xuất dữ liệu từ các phân đoạn khác.

Trước ngày 2.6, các giai đoạn tiếp theo của quy trình tổng hợp được sử dụng để chạy trên máy chủ MongoDB của bạn chứ không phải trên phân đoạn chính.

Vậy làm cách nào để xử lý tình trạng phân bố tải không đều này? Bạn có một số lựa chọn:

  1. Nếu bạn đang chạy các tập hợp trên nhiều tập hợp, hãy đảm bảo "các phân đoạn chính" của các tập hợp được trải đều trên các phân đoạn của bạn.
  2. Nếu bạn có tải tổng hợp cao chỉ trên một tập hợp, bạn có thể cần sử dụng các máy lớn hơn một chút cho phân đoạn chính của mình.

Như thường lệ, nếu bạn có bất kỳ câu hỏi hoặc nhận xét nào, vui lòng gửi email cho chúng tôi theo địa chỉ [email protected].


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Nhập CSV bằng lược đồ Mongoose

  2. Tài nguyên MongoDB hàng đầu

  3. Mongoose và nhiều cơ sở dữ liệu trong một dự án node.js

  4. Tạo khu vực quản trị trong năm phút với AdminBro, express, mongoDB, mongoose

  5. Kết nối với cơ sở dữ liệu MongoDB