यहाँ MongoDB में मानचित्र/कम करने के लिए कार्यक्षमता की वर्तमान स्थिति है
1) मानचित्र/कम करने के लिए अधिकांश प्रदर्शन सीमाएं अभी भी मोंगोडीबी संस्करण 2.2 में बनी हुई हैं। मैप/रिड्यूस इंजन के लिए अभी भी आवश्यक है कि प्रत्येक रिकॉर्ड बीएसओएन से जेएसओएन में परिवर्तित हो जाए, वास्तविक गणना एम्बेडेड जावास्क्रिप्ट इंजन (जो धीमा है) का उपयोग करके की जाती है, और अभी भी एक वैश्विक जावास्क्रिप्ट लॉक है, जो केवल एक जावास्क्रिप्ट थ्रेड की अनुमति देता है एक बार में चलाने के लिए।
शार्प्ड क्लस्टर्स के लिए मैप/रिड्यूस में कुछ वृद्धिशील सुधार हुए हैं। सबसे विशेष रूप से, अंतिम कम करें ऑपरेशन अब कई शार्क में वितरित किया जाता है, और आउटपुट भी समानांतर में विभाजित किया जाता है।
मैं MongoDB संस्करण 2.2 में रीयल-टाइम एकत्रीकरण के लिए मानचित्र/कम करने की अनुशंसा नहीं करता हूं
2) MongoDB 2.2 से शुरू होकर, अब एक नया एग्रीगेशन फ्रेमवर्क है। यह एकत्रीकरण संचालन का एक नया कार्यान्वयन है, जिसे C++ में लिखा गया है, और इसे MongoDB ढांचे में मजबूती से एकीकृत किया गया है।
एग्रीगेशन फ्रेमवर्क का उपयोग करने के लिए अधिकांश मैप/रिड्यूस जॉब्स को फिर से लिखा जा सकता है। वे आम तौर पर तेजी से चलते हैं (20x गति सुधार बनाम नक्शा/कम करना संस्करण 2.2 में आम है), वे मौजूदा क्वेरी इंजन का पूरा उपयोग करते हैं, और आप समानांतर में एकाधिक एकत्रीकरण आदेश चला सकते हैं।
यदि आपके पास रीयल-टाइम एकत्रीकरण आवश्यकताएं हैं, तो आरंभ करने के लिए पहला स्थान एकत्रीकरण फ्रेमवर्क है। एकत्रीकरण ढांचे के बारे में अधिक जानकारी के लिए, इन लिंक्स पर एक नज़र डालें:
- http://www.10gen.com/presentations/mongonyc-2012/new-aggregation-framework
- http://docs.mongodb.org/manual/reference/aggregation/
3) MongoDB संस्करण 2.4 में मैप/रिड्यूस में महत्वपूर्ण सुधार हुए हैं। स्पाइडरमॉन्की जावास्क्रिप्ट इंजन को वी8 जावास्क्रिप्ट इंजन से बदल दिया गया है, और अब कोई वैश्विक जावास्क्रिप्ट लॉक नहीं है, जिसका अर्थ है कि कई मैप/रिड्यूस थ्रेड एक साथ चल सकते हैं।
मैप/रिड्यूस इंजन अभी भी दो मुख्य कारणों से एग्रीगेशन फ्रेमवर्क की तुलना में काफी धीमा है:
-
जावास्क्रिप्ट इंजन की व्याख्या की जाती है, जबकि एग्रीगेशन फ्रेमवर्क संकलित C++ कोड चलाता है
-
जावास्क्रिप्ट इंजन को अभी भी यह आवश्यक है कि जांचे जा रहे प्रत्येक दस्तावेज़ को बीएसओएन से जेएसओएन में परिवर्तित किया जाए; यदि आप किसी संग्रह में आउटपुट सहेज रहे हैं, तो परिणाम सेट को JSON से वापस BSON में परिवर्तित किया जाना चाहिए
2.4 और 2.6 के बीच Map/Reduce में कोई महत्वपूर्ण परिवर्तन नहीं हुए हैं।
मैं अभी भी MongoDB संस्करण 2.4 या 2.6 में रीयल-टाइम एकत्रीकरण के लिए मानचित्र/कम करें का उपयोग करने की अनुशंसा नहीं करता हूं।
4) यदि आपको वास्तव में मानचित्र/कम करने की आवश्यकता है, तो आप हडूप एडाप्टर को भी देख सकते हैं। यहां और जानकारी है:
- 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