हाल के एक ब्लॉग पोस्ट में, मैंने चर्चा की कि आपको MongoDB को कब स्केल करने की आवश्यकता है। इस पोस्ट में, फोकस इस बात पर है कि MongoDB को कैसे स्केल किया जाए।
MongoDB वर्जन 3.0 ने WiredTiger को डिफ़ॉल्ट स्टोरेज इंजन के रूप में पेश किया। तब से MongoDB स्केलेबिलिटी के मामले में दो दृष्टिकोण प्रदान करने में सक्षम है। Mongo अब लंबवत और क्षैतिज दोनों तरह से विस्तार करने में सक्षम है। दोनों दृष्टिकोणों पर करीब से नज़र डालने की आवश्यकता है।
वर्टिकल स्केलिंग
वर्टिकल स्केलिंग कंप्यूटिंग संसाधनों को बढ़ाती है, जैसे CPU की संख्या और प्रकार, या RAM या डिस्क स्पेस की मात्रा। इसे ध्यान में रखते हुए, WiredTiger के साथ वर्टिकल स्केलिंग करते समय, आपको यह पहचानने की आवश्यकता है कि कौन सा संसाधन किसी बॉटलनेक में योगदान दे रहा है (चाहे वह CPU/RAM/डिस्क स्पेस हो या इनमें से कुछ संयोजन)।
WiredTiger RAM पर नोट
यदि आवंटित RAM 1GB से कम है, तो WiredTiger आमतौर पर या तो 256MB या उपलब्ध RAM का 50 प्रतिशत डिफ़ॉल्ट करता है। परिणामस्वरूप, यदि अधिक RAM आवंटित किया जाता है तो WiredTiger कैश को रीसाइज करना होगा।
हॉरिजॉन्टल स्केलिंग
हॉरिजॉन्टल स्केलिंग आमतौर पर सर्वर जोड़कर नेटवर्क पर कंप्यूटिंग संसाधनों को वितरित करती है। जैसे-जैसे नोड्स जोड़े जाते हैं, डेटा को कई नोड्स पर वितरित करने के लिए, MongoDB शार्डिंग नामक डेटाबेस आर्किटेक्चर का उपयोग करता है, जो डेटा को पार्टीशन करने के लिए की रेंज का उपयोग करता है जिसे कई डेटाबेस इंस्टेंस के बीच वितरित किया जाता है।
शार्डिंग इंफ्रास्ट्रक्चर सेट अप करना
शार्डिंग कॉन्फ़िगरेशन सेट अप करने में शामिल भौतिक घटकों में निम्नलिखित आइटम आवश्यक हैं।
- Mongos क्वेरी राउटर के रूप में कार्य करता है।
- कॉन्फिग सर्वर शार्डिंग मेटाडेटा रखते हैं।
- डेटा नोड्स वास्तविक डेटा रखते हैं।
भौतिक घटकों के बारे में अधिक जानकारी के लिए, हमारे MongoDB अवलोकन पर जाएं।
शार्ड कीज़ परिभाषित करना
भौतिक शार्डिंग इंफ्रास्ट्रक्चर सेट अप करने के बाद, शार्डिंग के तार्किक पहलू पर ध्यान केंद्रित करें। शार्ड कीज़ एक कलेक्शन के भीतर विभिन्न फील्ड्स को दर्शाती हैं जिनका उपयोग MongoDB डेटा को पार्टीशन करने के लिए करता है। सुविधाजनक रूप से, Mongo आपको इन कीज़ को परिभाषित करने देता है।
शार्ड कीज़ लागू करने में शामिल फील्ड्स की पहचान करने के लिए:
- शार्ड करने के लिए कलेक्शन की पहचान करें। 200MB से बड़े कलेक्शन जिनका डेटा समान रूप से वितरित किया जा सकता है, शार्डिंग के लिए अच्छे उम्मीदवार हैं।
- उपयुक्त शार्ड की जनरेट या तैयार करें। शार्ड की बनाते समय, निम्नलिखित सिफारिशों और प्रश्नों पर विचार करें:
- एप्लिकेशन डेटाबेस के साथ कैसे इंटरैक्ट करता है, इसकी कुछ अंतर्दृष्टि प्राप्त करें।
- विचार करें कि एप्लिकेशन अधिक रीड-या राइट-हैवी है, या यह समान रूप से संतुलित है।
- डेटाबेस के खिलाफ सबसे महत्वपूर्ण गतिविधि क्या है? उदाहरण के लिए, एप्लिकेशन डेटाबेस में बड़ी मात्रा में डेटा लिख सकता है, लेकिन सबसे महत्वपूर्ण गतिविधि 100 ms से कम में डेटा लौटाने वाली क्वेरी हो सकती है।
- साप्ताहिक और मासिक डेटा विकास के अपेक्षित पैटर्न क्या हैं?
- क्या किसी दर्द या समस्या क्षेत्रों को संबोधित करने की आवश्यकता है, जैसे स्लो क्वेरी?
- क्या एप्लिकेशन दिन, सप्ताह, महीने, या वर्ष के निश्चित घंटों के दौरान व्यस्त है? क्या यह हर समय व्यस्त है?
इन मुद्दों की जांच करने के बाद, आप अधिक विस्तृत विश्लेषण शुरू कर सकते हैं। हमारा अगला ब्लॉग पोस्ट चर्चा करेगा कि सही शार्ड की कैसे ढूंढें।