MongoDB इंफ्रास्ट्रक्चर में एग्रीगेशन फ्रेमवर्क एक महत्वपूर्ण हिस्सा है। यह आपको MongoDB में संग्रहीत डेटा का विश्लेषण, सारांश और एकत्रीकरण करने में मदद करता है। MongoDB 2.6 में एकत्रीकरण ढांचे के बारे में अधिक विवरण के लिए इस ब्लॉग पोस्ट को देखें।
2.6 रिलीज में, MongoDB ने शार्प्ड वातावरण में अंतर्निहित एग्रीगेशन पाइपलाइनों के निष्पादन के तरीके में एक सूक्ष्म लेकिन महत्वपूर्ण परिवर्तन किया। शार्प किए गए संग्रह के साथ काम करते समय MongoDB पाइपलाइन को दो चरणों में विभाजित करता है। पहला चरण या "$ मैच" चरण प्रत्येक शार्क पर चलता है और संबंधित दस्तावेज़ों का चयन करता है। यदि क्वेरी प्लानर यह निर्धारित करता है कि शार्ड कीज़ के आधार पर एक शार्ड प्रासंगिक नहीं है, तो इस चरण को उस शार्ड पर निष्पादित नहीं किया जाता है।
बाद के चरण संग्रह के लिए केवल "प्राथमिक" शार्क पर चलते हैं। यह शार्ड अन्य शार्क के डेटा को मर्ज करता है और बाकी पाइपलाइन को चलाता है। इसके परिणामस्वरूप एकत्र किए जा रहे संग्रह के प्राथमिक हिस्से पर काफी अधिक भार पड़ता है। यहां हमारे एक ग्राहक द्वारा तीन शार्क चलाने और प्राथमिक रूप से एकत्रीकरण क्वेरी का उपयोग करने का एक उदाहरण दिया गया है:
जैसा कि आप देख सकते हैं, पहले शार्प पर लोड दूसरे कारण से लगातार 3-4 गुना होता है। यह एक चरम उदाहरण है क्योंकि इस मामले में दूसरे और तीसरे हिस्से को बाद में जोड़ा गया था, इसलिए सभी संग्रहों के लिए प्राथमिक शार्ड पहला शार्ड है। तो अनिवार्य रूप से, हमारे सभी एकत्रीकरण कार्यों के बाद के चरण केवल Shard1 पर चलते हैं। यदि आप प्राथमिक शार्ड पर लॉग की जांच करते हैं, तो आपको अन्य शार्क से डेटा पुनर्प्राप्त करने वाले कई "मर्ज" आदेश दिखाई देंगे।
2.6 से पहले, एग्रीगेशन पाइपलाइन के बाद के चरण आपके MongoDB सर्वर पर चलते थे, न कि प्राइमरी शार्ड पर।
तो आप इस असमान लोड वितरण को कैसे संभालते हैं? आपके पास कुछ विकल्प हैं:
- यदि आप एक से अधिक संग्रहों पर एकत्रीकरण चला रहे हैं, तो सुनिश्चित करें कि संग्रह के "प्राथमिक शार्क" आपके शार्क में समान रूप से फैले हुए हैं।
- यदि आपके पास केवल एक संग्रह पर उच्च एकत्रीकरण भार है, तो आपको अपने प्राथमिक शार्ड के लिए थोड़ी बड़ी मशीनों का उपयोग करने की आवश्यकता हो सकती है।
हमेशा की तरह, यदि आपके कोई प्रश्न या टिप्पणी हैं, तो कृपया हमें [email protected] पर ईमेल करें।