MongoDB शार्डिंग: उदाहरण के साथ चरण दर चरण ट्यूटोरियल

⚡ स्मार्ट सारांश

MongoDB शार्डिंग बड़े डेटा सेट को कई क्षेत्रों में वितरित किए गए छोटे उपसमूहों में विभाजित करता है। MongoDB इंस्टेंसेस की संख्या बढ़ाकर किसी एक सर्वर पर CPU लोड को कम किया जा सकता है। शार्डेड क्लस्टर स्टोरेज और क्वेरी थ्रूपुट को क्षैतिज रूप से बढ़ाने के लिए शार्ड्स, एक कॉन्फ़िगरेशन सर्वर और एक राउटर को जोड़ता है।

  • 🧩 मूल अवधारणा: शार्डिंग एक लॉजिकल कलेक्शन को कई शार्ड्स में विभाजित करती है, फिर भी क्वेरी डेटा को एक ही कलेक्शन के रूप में मानती है।
  • 🏗️ Cluster अवयव: एक शार्डेड क्लस्टर को डेटा के लिए शार्ड, मेटाडेटा के लिए एक कॉन्फ़िगरेशन सर्वर और क्लाइंट कमांड को निर्देशित करने के लिए एक राउटर की आवश्यकता होती है।
  • ⚙️ कार्यान्वयन प्रवाह: कॉन्फ़िग सर्वर शुरू करें, मोंगोस राउटर लॉन्च करें, शार्ड जोड़ें, फिर डेटाबेस और कलेक्शन पर शार्डिंग सक्षम करें।
  • 🔑 शार्ड कुंजी: शार्ड कुंजी यह निर्धारित करती है कि दस्तावेज़ कैसे वितरित होते हैं, इसलिए उच्च कार्डिनैलिटी और यहां तक ​​कि एक्सेस पैटर्न भी आवश्यक हैं।
  • 📈 प्राथमिक लाभ: शार्डिंग क्षैतिज स्केलेबिलिटी प्रदान करता है, जिससे एक ही सर्वर को अपग्रेड करने के बजाय स्टोरेज और वर्कलोड को फैलाया जा सकता है।

MongoDB शार्डिंग: उदाहरण के साथ चरण दर चरण ट्यूटोरियल

शार्डिंग क्या है? MongoDB?

शार्डिंग एक अवधारणा है MongoDB, जो बड़े डेटा सेट को कई छोटे डेटा सेटों में विभाजित करता है MongoDB उदाहरणों।

कभी-कभी डेटा के भीतर MongoDB डेटा इतना विशाल होगा कि इतने बड़े डेटा सेट के खिलाफ क्वेरी करने से सर्वर पर सीपीयू का बहुत अधिक उपयोग हो सकता है। इस स्थिति से निपटने के लिए, MongoDB इसमें शार्डिंग की अवधारणा है, जो मूल रूप से डेटा सेट को कई भागों में विभाजित करना है। MongoDB उदाहरणों।

यह संग्रह, जिसका आकार बड़ा हो सकता है, वास्तव में कई संग्रहों या शार्ड्स में विभाजित है। तार्किक रूप से, सभी शार्ड्स एक ही संग्रह के रूप में कार्य करते हैं।

शार्डिंग के लाभ MongoDB

शार्डेड क्लस्टर को लागू करने से पहले, यह समझना ज़रूरी है कि टीमें शार्डिंग क्यों अपनाती हैं। इसके मुख्य लाभ इस प्रकार हैं:

  • क्षैतिज मापनीयता: डेटा को कई कमोडिटी सर्वरों में वितरित किया जाता है, बजाय इसके कि किसी एक मशीन को लगातार बड़ा होने के लिए मजबूर किया जाए।
  • उच्चतर थ्रूपुट: रीड और राइट ऑपरेशन शार्ड्स में समानांतर रूप से चलते हैं, इसलिए क्लस्टर प्रति सेकंड अधिक अनुरोधों को संभाल सकता है।
  • अधिक भंडारण क्षमता: सभी शार्ड्स की संयुक्त डिस्क एक सर्वर की तुलना में कहीं अधिक बड़े डेटा सेट को स्टोर कर सकती है।
  • उच्च उपलब्धता: जब प्रत्येक शार्ड को एक प्रतिकृति सेट के रूप में तैनात किया जाता है, तो एक नोड की विफलता से क्लस्टर बंद नहीं होता है।
  • संतुलित भार: RSI MongoDB बैलेंसर डेटा चंक्स को स्वचालित रूप से पुनर्वितरित करता है ताकि कोई भी एक शार्ड हॉटस्पॉट न बन जाए।

इन सभी फायदों को मिलाकर, शार्डिंग स्केलिंग के लिए मानक दृष्टिकोण बन जाता है। MongoDB एक सर्वर की सीमाओं से परे।

शार्डिंग को कैसे लागू करें

शार्ड्स को क्लस्टर का उपयोग करके कार्यान्वित किया जाता है, जो कि वास्तव में समूहों का एक समूह है। MongoDB उदाहरणों।

शार्ड के घटकों में निम्नलिखित शामिल हैं:

  1. एक शार्ड -यही मूल बात है, और यह कुछ और नहीं, बल्कि एक MongoDB इंस्टेंस जो डेटा का सबसेट रखता है। उत्पादन वातावरण में, सभी शार्ड को प्रतिकृति सेट का हिस्सा होना चाहिए।
  2. सर्वर कॉन्फ़िगर करें - यह एक MongoDB वह इंस्टेंस जो क्लस्टर के बारे में मेटाडेटा रखता है, मूल रूप से विभिन्न के बारे में जानकारी। MongoDB वे इंस्टेंसेस जो शार्ड डेटा को धारण करेंगे।
  3. एक राउटर - यह एक MongoDB यह वह इंस्टेंस है जो मूल रूप से क्लाइंट द्वारा भेजे गए कमांड को सही सर्वरों तक पुनर्निर्देशित करने के लिए जिम्मेदार है।

चरण दर चरण शार्डिंग Cluster उदाहरण

चरण 1) कॉन्फ़िगरेशन सर्वर के लिए एक अलग डेटाबेस बनाएँ.

mkdir /data/configdb

चरण 2) शुरू करें MongoDB कॉन्फ़िगरेशन मोड में इंस्टेंस। मान लीजिए हमारे पास सर्वर D नाम का एक सर्वर है, जो हमारा कॉन्फ़िगरेशन सर्वर होगा। सर्वर को कॉन्फ़िगरेशन सर्वर के रूप में कॉन्फ़िगर करने के लिए हमें नीचे दिए गए कमांड को चलाना होगा।

mongod --configdb ServerD:27019

चरण 3) कॉन्फ़िगरेशन सर्वर निर्दिष्ट करके मोंगोस इंस्टेंस प्रारंभ करें।

mongos --configdb ServerD:27019

चरण 4) मोंगो शेल से, मोंगोस इंस्टेंस से कनेक्ट करें।

mongo --host ServerD --port 27017

चरण 5) यदि आपके पास सर्वर A और सर्वर B हैं जिन्हें क्लस्टर में जोड़ना है, तो नीचे दिए गए कमांड जारी करें।

sh.addShard("ServerA:27017")
sh.addShard("ServerB:27017")

चरण 6) डेटाबेस के लिए शार्डिंग सक्षम करें। इसलिए, यदि हमें एम्प्लॉईडीबी डेटाबेस को शार्ड करना है, तो नीचे दिए गए कमांड का उपयोग करें।

sh.enableSharding("Employeedb")

चरण 7) कलेक्शन के लिए शार्डिंग सक्षम करें। इसलिए, यदि हमें एम्प्लॉई कलेक्शन को शार्ड करना है, तो नीचे दिए गए कमांड का उपयोग करें।

sh.shardCollection("Employeedb.Employee", { "Employeeid": 1, "EmployeeName": 1 })

शार्ड कुंजी का चयन कैसे करें MongoDB

शार्ड कुंजी अनुक्रमित फ़ील्ड, या फ़ील्ड का समूह है, जो MongoDB प्रत्येक दस्तावेज़ को किस शार्ड में संग्रहीत किया जाए, यह तय करने के लिए कुंजी का उपयोग किया जाता है। चूंकि कुंजी डेटा वितरण को नियंत्रित करती है, इसलिए शार्डिंग में इसका सही चुनाव करना सबसे महत्वपूर्ण निर्णय है। एक खराब कुंजी डेटा और ट्रैफ़िक को एक ही शार्ड पर केंद्रित कर देती है, जिससे शार्डिंग के लाभ समाप्त हो जाते हैं।

एक मजबूत शार्ड कुंजी में आम तौर पर निम्नलिखित विशेषताएं होती हैं:

  • उच्च कार्डिनैलिटी: इस फ़ील्ड में कई संभावित मान होने चाहिए ताकि डेटा को कई बारीक-बारीक हिस्सों में विभाजित किया जा सके।
  • कम बार होना: किसी एक मूल्य का प्रभुत्व नहीं होना चाहिए, अन्यथा उस मूल्य को साझा करने वाले दस्तावेज़ एक ही शार्ड में जमा हो जाएंगे।
  • गैर-मोनोटोनिक परिवर्तन: टाइमस्टैम्प जैसी कुंजीयां जो हमेशा बढ़ती रहती हैं, प्रत्येक नए लेखन को उसी शार्ड में भेजती हैं, जिससे एक हॉटस्पॉट बनता है।

MongoDB यह कुंजी के आधार पर दो शार्डिंग रणनीतियों का समर्थन करता है। रेंज्ड शार्डिंग डेटा को सन्निहित श्रेणियों में विभाजित करता है और रेंज क्वेरी के लिए उपयुक्त है, जबकि हैश्ड शार्डिंग राइट्स को शार्ड्स में समान रूप से वितरित करने के लिए एक हैश फ़ंक्शन लागू करता है। टीमें अक्सर भारी राइट्स होने पर हैश्ड शार्डिंग से शुरुआत करती हैं और रेंज-आधारित रीड्स हावी होने पर रेंज्ड शार्डिंग पर स्विच करती हैं। आप जो भी रणनीति चुनें, कमिट करने से पहले वास्तविक क्वेरी पैटर्न के विरुद्ध कुंजी का परीक्षण करें, क्योंकि डेटा लोड होने के बाद शार्ड कुंजी को आसानी से बदला नहीं जा सकता है।

शार्डिंग बनाम प्रतिकृति MongoDB

शार्डिंग और रेप्लिकेशन पूरक हैं लेकिन अलग-अलग विशेषताएं हैं। नीचे दी गई तालिका इनके अंतरों को दर्शाती है ताकि आप प्रत्येक को सही ढंग से लागू कर सकें, और व्यवहार में प्रोडक्शन क्लस्टर दोनों का एक साथ उपयोग करते हैं।

पहलू Sharding प्रतिकृति
उद्देश्य डेटा को विभाजित करके क्षैतिज रूप से स्केल करें डेटा की सुरक्षा करें और उसे उपलब्ध रखें
प्रत्येक नोड पर डेटा डेटा का एक उपसमूह (एक शार्ड) डेटा की पूरी प्रति
प्राथमिक लाभ अधिक भंडारण और प्रवाह क्षमता दोष सहिष्णुता और रीड स्केलिंग
ज़रूरी भाग शार्ड्स, कॉन्फ़िगरेशन सर्वर, मोंगोस राउटर प्राथमिक और द्वितीयक सदस्य

संक्षेप में, शार्डिंग स्केल की आवश्यकता को पूरा करती है, जबकि प्रतिकृति उपलब्धता की आवश्यकता को पूरा करती है, और एक मजबूत परिनियोजन इन दोनों को जोड़ता है।

अक्सर पूछे जाने वाले प्रश्न

जी हां। एआई उपकरण क्वेरी पैटर्न और फ़ील्ड कार्डिनैलिटी का विश्लेषण करके संभावित शार्ड कुंजी सुझा सकते हैं और मोनोटोनिक फ़ील्ड के बारे में चेतावनी दे सकते हैं। चूंकि कुंजी को बाद में बदलना मुश्किल होता है, इसलिए किसी भी सुझाव को लागू करने से पहले वास्तविक कार्यभार के आधार पर उसकी पुष्टि अवश्य कर लें।

हां। एआई-आधारित निगरानी संभव है। tracडेटा वृद्धि, सीपीयू लोड और क्वेरी लेटेंसी का उपयोग करके यह पूर्वानुमान लगाया जा सकता है कि कोई एक सर्वर कब ओवरलोड हो जाएगा। यह सर्वर को शार्ड करने का सही समय बताता है, हालांकि इंजीनियरों को कार्रवाई करने से पहले क्षमता योजनाओं की पुष्टि कर लेनी चाहिए।

रेंज्ड शार्डिंग डेटा को सन्निहित मान श्रेणियों में विभाजित करती है, जो रेंज क्वेरी के लिए उपयुक्त है लेकिन असमान चंक्स का जोखिम रखती है। हैश्ड शार्डिंग कुंजी को हैश करती है ताकि लेखन शार्ड्स में समान रूप से वितरित हो सके, जिससे कुशल रेंज स्कैन की कीमत पर लेखन वितरण में सुधार होता है।

हाँ। डेटाबेस पर शार्डिंग सक्षम करें, सुनिश्चित करें कि चयनित शार्ड कुंजी पर एक इंडेक्स मौजूद है, फिर नेमस्पेस पर sh.shardCollection() चलाएँ। MongoDB यह स्वचालित रूप से मौजूदा दस्तावेजों को उपलब्ध शार्ड्स में टुकड़ों में वितरित करना शुरू कर देता है।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: