Đây là trạng thái hiện tại của chức năng cho Bản đồ / Rút gọn trong MongoDB
1) Hầu hết các giới hạn về hiệu suất cho Map / Reduce vẫn còn trong MongoDB phiên bản 2.2. Công cụ Bản đồ / Rút gọn vẫn yêu cầu mọi bản ghi phải được chuyển đổi từ BSON sang JSON, các tính toán thực tế được thực hiện bằng công cụ JavaScript được nhúng (chậm) và vẫn có một khóa JavaScript chung duy nhất, chỉ cho phép một chuỗi JavaScript duy nhất để chạy cùng một lúc.
Đã có một số cải tiến gia tăng đối với Bản đồ / Thu nhỏ cho các cụm được phân đoạn. Đáng chú ý nhất, hoạt động Reduce cuối cùng hiện được phân phối trên nhiều phân đoạn và đầu ra cũng được phân chia song song.
Tôi không đề xuất Bản đồ / Rút gọn để tổng hợp thời gian thực trong MongoDB phiên bản 2.2
2) Bắt đầu với MongoDB 2.2, bây giờ có một Khung tổng hợp mới. Đây là một triển khai mới của các hoạt động tổng hợp, được viết bằng C ++ và được tích hợp chặt chẽ vào khung MongoDB.
Hầu hết các công việc Bản đồ / Rút gọn có thể được viết lại để sử dụng Khung tổng hợp. Chúng thường chạy nhanh hơn (cải thiện tốc độ 20 lần so với Map / Reduce là phổ biến trong phiên bản 2.2), chúng sử dụng đầy đủ công cụ truy vấn hiện có và bạn có thể chạy song song nhiều lệnh Tổng hợp.
Nếu bạn có yêu cầu tổng hợp thời gian thực, thì nơi đầu tiên để bắt đầu là với Khung tổng hợp. Để biết thêm thông tin về khung tổng hợp, hãy xem các liên kết sau:
- http://www.10gen.com/presentations/mongonyc-2012/new-aggregation-framework
- http://docs.mongodb.org/manual/reference/aggregation/
3) Đã có những cải tiến đáng kể về Bản đồ / Thu nhỏ trong phiên bản MongoDB 2.4. Công cụ JavaScript SpiderMonkey đã được thay thế bằng công cụ JavaScript V8 và không còn khóa JavaScript toàn cầu, có nghĩa là nhiều chủ đề Bản đồ / Rút gọn có thể chạy đồng thời.
Công cụ Map / Reduce vẫn chậm hơn đáng kể so với khung tổng hợp, vì hai lý do chính:
-
Công cụ JavaScript được thông dịch, trong khi Khung tổng hợp chạy mã C ++ được biên dịch
-
Công cụ JavaScript vẫn yêu cầu mọi tài liệu đang được kiểm tra phải được chuyển đổi từ BSON sang JSON; nếu bạn đang lưu kết quả đầu ra trong một bộ sưu tập, thì tập kết quả sau đó phải được chuyển đổi từ JSON trở lại BSON
Không có thay đổi đáng kể nào trong Bản đồ / Rút gọn từ 2,4 đến 2,6.
Tôi vẫn không khuyên bạn nên sử dụng Bản đồ / Rút gọn để tổng hợp thời gian thực trong MongoDB phiên bản 2.4 hoặc 2.6.
4) Nếu bạn thực sự cần Bản đồ / Rút gọn, bạn cũng có thể xem Bộ điều hợp Hadoop. Có thêm thông tin ở đây:
- http://www.10gen.com/presentations/webinar/mongodb-hadoop-taming-elephant-room
- http://api.mongodb.org/hadoop/MongoDB%2BHadoop+Connector.html
- http://www.mongodb.org/display/DOCS/Hadoop+Quick+Start