2015-05-22 19 views
8

Trong khi nhìn vào documentation cho bản đồ-giảm, tôi thấy rằng:Khi nào thì sử dụng bản đồ giảm trên đường ống Aggregation trong MongoDB?

LƯU Ý:

Đối với hầu hết các hoạt động tập hợp, các tập hợp đường ống cung cấp hiệu suất tốt hơn và giao diện chặt chẽ hơn. Tuy nhiên, các thao tác giảm bản đồ cung cấp một số tính linh hoạt hiện không có sẵn trong đường ống tổng hợp.

Tôi không hiểu nhiều về nó.

  • Trường hợp sử dụng để sử dụng giảm bản đồ trên đường ống tổng hợp là gì?
  • Tính năng giảm bản đồ linh hoạt nào cung cấp?
  • Bao nhiêu delta có hiệu suất?

Trả lời

12

Đối với một điều, Map/Reduce trong MongoDB không được thực hiện cho các truy vấn đặc biệt, có chi phí đáng kể cho M/R. Ngay cả một hoạt động M/R rất đơn giản trên một tập dữ liệu nhỏ có thể mất hàng trăm mili giây vì chi phí trên. Tôi không thể nói nhiều về hiệu suất của M/R so với khung tổng hợp trên các tập dữ liệu lớn trong thực tế, nhưng về mặt lý thuyết, các hoạt động M/R trên một cơ sở dữ liệu lớn sẽ nhanh hơn vì các phân đoạn có thể chạy hoạt động chủ yếu song song.

Với tính linh hoạt, vì M/R thực sự chạy các phương thức javascript, bạn có toàn bộ sức mạnh của ngôn ngữ theo ý của mình. Ví dụ: giả sử bạn muốn nhóm một số dữ liệu bằng cosin của giá trị của trường. Vì không có toán tử $cos trong khung kết hợp, cũng không phải là cách có ý nghĩa để tạo các nhóm rời rạc từ các số liên tục (giống như $truncate), khung tổng hợp sẽ không giúp ích trong trường hợp đó.

Vì vậy, trong Tóm lại, tôi muốn nói với các trường hợp sử dụng nằm

  • giữ kết quả của M/R trong một bộ sưu tập riêng biệt và cập nhật nó bất cứ lúc nào (bằng cách sử dụng tham số out và sáp nhập các kết quả)
  • Truy vấn phức tạp trên các tập dữ liệu được phân đoạn lớn
  • Các truy vấn phức tạp đến mức bạn không thể sử dụng khung tổng hợp. Tôi muốn nói đó là một dấu hiệu khá chắc chắn về lỗ hổng thiết kế trong cấu trúc dữ liệu, nhưng về nguyên tắc, nó có thể giúp
Các vấn đề liên quan