डेटाबेस सिस्टम सबसे अच्छा प्रदर्शन करता है जब वे कुछ अच्छी तरह से परिभाषित दृष्टिकोणों के साथ एकीकृत होते हैं जो थ्रूपुट को पढ़ने और लिखने दोनों की सुविधा प्रदान करते हैं। मोंगोडीबी ने रिलेशनल डीबीएम के विपरीत क्षैतिज और लंबवत स्केलिंग को सक्षम करने के उद्देश्य से प्रतिकृति और शेरिंग को गले लगाकर अतिरिक्त मील चला गया, जिसकी एक ही अवधारणा केवल लंबवत स्केलिंग को बढ़ाती है।
शार्डिंग डेटाबेस क्लस्टर के सदस्यों के बीच लोड का वितरण सुनिश्चित करता है ताकि पढ़ने के संचालन को थोड़ा विलंबता के साथ किया जा सके। शार्डिंग के बिना, डेटा के एक बड़े सेट और उच्च थ्रूपुट संचालन के साथ एकल डेटाबेस सर्वर की क्षमता को तकनीकी रूप से चुनौती दी जा सकती है और यदि आवश्यक उपायों को ध्यान में नहीं रखा गया तो उस सर्वर की विफलता हो सकती है। उदाहरण के लिए, यदि प्रश्नों की दर बहुत अधिक है, तो सर्वर की CPU क्षमता अत्यधिक हो जाएगी।
दूसरी ओर प्रतिकृति एक अवधारणा है जिसके तहत विभिन्न डेटाबेस सर्वर एक ही डेटा को रख रहे हैं। यह डेटा अखंडता को बढ़ाने के अलावा डेटा की उच्च उपलब्धता सुनिश्चित करता है। एक उच्च प्रदर्शन करने वाले सोशल मीडिया एप्लिकेशन का उदाहरण लें, यदि मुख्य सेवा डेटाबेस सिस्टम विफल हो जाता है जैसे कि पावर ब्लैकआउट के मामले में, हमारे पास समान डेटा की सेवा करने के लिए एक और सिस्टम होना चाहिए। एक अच्छे प्रतिकृति सेट में 3 से अधिक सदस्य होने चाहिए, एक मध्यस्थ और इष्टतम चुनाव टाइमआउटमिलिस। प्रतिकृति में, हमारे पास एक मास्टर/प्राथमिक नोड होगा जहां सभी लेखन कार्य किए जाते हैं और फिर एक Oplog पर लागू होते हैं। Oplog से, सभी किए गए परिवर्तन तब अन्य सदस्यों पर लागू होते हैं, जिन्हें इस मामले में द्वितीयक नोड या स्लेव के रूप में संदर्भित किया जाता है। यदि प्राथमिक नोड्स कुछ समय के बाद संचार नहीं करते हैं:चुनाव टाइमआउट मिलिस, अन्य नोड्स को चुनाव के लिए जाने का संकेत दिया जाता है। इलेक्शनटाइमआउटमिलिस को न तो बहुत अधिक और न ही बहुत कम सेट किया जाना चाहिए, क्योंकि सिस्टम लंबे समय तक बंद रहेगा, इसलिए बहुत सारे डेटा या बार-बार चुनाव हार जाते हैं, जिसके परिणामस्वरूप अस्थायी नेटवर्क विलंबता के साथ भी क्रमशः डेटा असंगति हो सकती है। ड्रॉ होने की स्थिति में मास्टर बनने के लिए विजेता सदस्य को वोट जोड़ने के लिए एक मध्यस्थ का उपयोग किया जाता है, लेकिन अन्य सदस्यों की तरह कोई डेटा नहीं रखता है।
एक MongoDB प्रतिकृति सेट को तैनात करने के लिए कठपुतली का उपयोग क्यों करें
अधिकतर, शार्पनिंग का उपयोग प्रतिकृति के साथ हाथ से किया जाता है। प्रतिकृति सेट को कॉन्फ़िगर करने और बनाए रखने की प्रक्रिया आसान नहीं है क्योंकि:
- मानवीय त्रुटि की उच्च संभावना
- दोहराए जाने वाले कार्यों को स्वचालित रूप से करने में असमर्थता
- विशेष रूप से जब बड़ी संख्या में सदस्य शामिल हों तब समय लगता है
- कार्य असंतोष की संभावना
- भारी जटिलता जो उभर सकती है।
उल्लेखित असफलताओं को दूर करने के लिए, हम कठपुतली जैसी स्वचालित प्रणाली को अपनाते हैं जिसमें बहुत सारे संसाधन होते हैं जो हमें आसानी से काम करने में मदद करते हैं।
अपने पिछले ब्लॉग में, हमने कठपुतली के साथ MongoDB को स्थापित और कॉन्फ़िगर करने की प्रक्रिया सीखी थी। हालाँकि, कठपुतली के बुनियादी संसाधनों को समझना महत्वपूर्ण है क्योंकि हम उनका उपयोग अपने प्रतिकृति सेट और शार्क को कॉन्फ़िगर करने में करेंगे। यदि आप इसे चूक गए हैं, तो यह आपके द्वारा बनाई गई मशीन पर आपके MongoDB को स्थापित करने और चलाने की प्रक्रिया के लिए मेनिफेस्ट फ़ाइल है
package {'mongodb':
ensure => 'installed',
}
service {'mongodb':
ensure => 'running',
enable => true
}
इसलिए हम उपरोक्त सामग्री को runMongoDB.pp नामक फ़ाइल में डाल सकते हैं और इसे कमांड के साथ चला सकते हैं
$ sudo apply runMongoDB.pp
'mongodb' मॉड्यूल और फ़ंक्शन गाएं, हम प्रत्येक mongodb संसाधन के लिए संबंधित पैरामीटर के साथ अपनी प्रतिकृति सेट सेट कर सकते हैं।
मोंगोडीबी कनेक्शन
हमें एक नोड और मोंगोडब सर्वर के बीच एक मोंगोडब कनेक्शन स्थापित करने की आवश्यकता है। इसका मुख्य उद्देश्य कॉन्फ़िगरेशन परिवर्तनों को लागू होने से रोकना है यदि मोंगोडब सर्वर तक नहीं पहुंचा जा सकता है लेकिन संभावित रूप से डेटाबेस निगरानी जैसे अन्य उद्देश्यों के लिए उपयोग किया जा सकता है। हम mongodb_conn_validator
. का उपयोग करते हैंmongodb_conn_validator{‘mongodb_validator’:
ensure => present,
server: ‘127.0.0.1:27017’,
timeout: 40,
tcp_port:27017
}
name: इस मामले में mongodb_validator नाम संसाधन की पहचान को परिभाषित करता है। इसे एक कनेक्शन स्ट्रिंग के रूप में भी माना जा सकता है
सर्वर:यह एक स्ट्रिंग या स्ट्रिंग की एक सरणी हो सकती है जिसमें सर्वर के DNS नाम/आईपी पते होते हैं जहां mongodb चलना चाहिए।
समय समाप्त:यह वह अधिकतम संख्या है जो सत्यापनकर्ता को यह तय करने से पहले प्रतीक्षा करनी चाहिए कि कठपुतली नहीं चल रही है।
tcp_port: यह संसाधन के लिए एक प्रदाता है जो mongodb सर्वर से https कनेक्शन का प्रयास करके mongodb कनेक्शन को मान्य करता है। स्थानीय कठपुतली वातावरण से कठपुतली SSL प्रमाणपत्र सेटअप प्रमाणीकरण में उपयोग किया जाता है।
डेटाबेस बनाना
mongodb_database{‘databaseName’:
ensure => present,
tries => 10
}
इस फ़ंक्शन में 3 पैरामीटर लगते हैं:
name:इस मामले में नाम डेटाबेसनाम हमारे द्वारा बनाए जा रहे डेटाबेस के नाम को परिभाषित करता है, जिसे नाम => 'डेटाबेसनाम' के रूप में भी घोषित किया जाता।
कोशिश करता है:यह MongoDB स्टार्टअप की प्रतीक्षा करने के लिए अधिकतम दो सेकंड की कोशिश को परिभाषित करता है
MongoDB उपयोगकर्ता बनाना
मॉड्यूल mongodb_user किसी को कठपुतली मॉड्यूल में दिए गए डेटाबेस के लिए उपयोगकर्ता बनाने और प्रबंधित करने में सक्षम बनाता है।
mongodb_user {userprod:
username => ‘prodUser’,
ensure => present,
password_hash => mongodb_password(‘prodUser’, ‘passProdser’),
database => prodUser,
roles => [‘readWrite’, ‘dbAdmin’],
tries => 10
}
गुण
उपयोगकर्ता नाम:उपयोगकर्ता के नाम को परिभाषित करता है।
password_hash:यह उपयोगकर्ता का पासवर्ड हैश है। फ़ंक्शन mongodb_password() MongoDB 3.0 और बाद में उपलब्ध हैश बनाने के लिए उपयोग किया जाता है।
भूमिकाएं:यह उन भूमिकाओं को परिभाषित करती है जिन्हें उपयोगकर्ता को लक्ष्य डेटाबेस पर निष्पादित करने की अनुमति है।
पासवर्ड:यह सादा उपयोगकर्ता पासवर्ड टेक्स्ट है।
डेटाबेस:उपयोगकर्ता के लक्षित डेटाबेस को परिभाषित करता है।
प्रतिकृति सेट बनाना
प्रतिकृति सेट बनाने के लिए हम मॉड्यूल mongodb_replset का उपयोग करते हैं।
Mongodb_replset{'replicaset1':
arbiter: 'host0:27017',
ensure => present,
members => ['host0:27017','host1:27017', 'host2:27017', 'host3:27017']
initialize_host: host1:27017
}
नाम:प्रतिकृति सेट के नाम को परिभाषित करता है।
सदस्य:रेप्लिका सेट के सदस्यों की एक सरणी धारण करेगी।
प्रारंभिक_होस्ट:प्रतिकृति सेट के प्रारंभ में उपयोग किया जाने वाला होस्ट
आर्बिटर:रेप्लिका सेट सदस्य को परिभाषित करता है जिसका उपयोग मध्यस्थ के रूप में किया जाएगा।
एक MongoDB शार्ड बनाना
mongodb_shard{'shard1':
ensure => present,
members => ['shard1/host1:27017', 'shard1/host2:27017', 'shard1/host3:27017']
keys: 'price'
}
नाम:शार्ड के नाम को परिभाषित करता है।
सदस्य:यह शार्प सदस्यों का समूह धारण करेगा।
कुंजियाँ:शार्डिंग में उपयोग की जाने वाली कुंजी या कुंजियों की एक सरणी को परिभाषित करें जिसका उपयोग कंपाउंड शार्ड कुंजी बनाने के लिए किया जा सकता है।