MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

MongoDB 4.2 के लिए Percona सर्वर का परिचय

नोएसक्यूएल डेटाबेस प्रौद्योगिकी का चयन करते समय प्रदर्शन, लचीलापन, विश्वसनीयता और सुरक्षा जैसे महत्वपूर्ण विचारों को ध्यान में रखा जाना चाहिए। कम से कम जहां तक ​​डेटाबेस का संबंध है, इन प्रमुख कारकों को व्यावसायिक लक्ष्यों को प्राप्त करने के साथ जोड़ा जाना चाहिए।

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

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

इस ब्लॉग में हम MongoDB के Percona संस्करण पर चर्चा करेंगे और यह कैसे विभिन्न तरीकों से MongoDB की शक्ति का विस्तार करता है।

MongoDB के लिए Percona सर्वर क्या है?

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

यह मालिकाना सॉफ्टवेयर विक्रेता संबंधों पर कम खर्च के साथ इष्टतम प्रदर्शन के लिए उच्च प्रदर्शन, बेहतर सुरक्षा और विश्वसनीयता प्रदान करता है।

MongoDB प्रमुख विशेषताओं के लिए Percona सर्वर

MongoDB सामुदायिक संस्करण Percona सर्वर के लिए महत्वपूर्ण है, क्योंकि इसमें पहले से ही लचीली स्कीमा, वितरित लेनदेन, JSON दस्तावेज़ों की परिचितता और मूल उच्च उपलब्धता जैसी महत्वपूर्ण विशेषताएं हैं। इसके अलावा, MongoDB के लिए Percona सर्वर निम्नलिखित मुख्य विशेषताओं को एकीकृत करता है जो इसे उन पहलुओं को संतुष्ट करने में सक्षम बनाता है जिनका हमने ऊपर उल्लेख किया है:

  • हॉट बैकअप
  • बाकी एन्क्रिप्शन पर डेटा
  • ऑडिट लॉगिंग
  • पेरकोना मेमोरी इंजन
  • एसएएसएल के साथ बाहरी एलडीएपी प्रमाणीकरण
  • HashiCorp Vault Integration
  • उन्नत क्वेरी प्रोफाइलिंग

हॉट बैकअप 

MongoDB के लिए Percona सर्वर बिना किसी ध्यान देने योग्य ऑपरेशन गिरावट के पृष्ठभूमि में चल रहे सर्वर पर एक भौतिक डेटा बैकअप बनाता है। यह व्यवस्थापक डेटाबेस पर व्यवस्थापक के रूप में createBackup कमांड चलाकर और बैकअप निर्देशिका निर्दिष्ट करके प्राप्त किया जा सकता है।

> use admin

switched to db admin

> db.runCommand({createBackup: 1, backupDir: "/my/backup/data/path"})

{ "ok" : 1 }

जब आप { "ok" :1 } प्राप्त करते हैं तो बैकअप सफल रहा। अन्यथा, उदाहरण के लिए यदि आप एक खाली बैकअप निर्देशिका पथ निर्दिष्ट करते हैं, तो आपको एक त्रुटि प्रतिक्रिया प्राप्त हो सकती है अर्थात:

{ "ok" : 0, "errmsg" : "Destination path must be absolute" }

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

$ service mongod stop && rm -rf /var/lib/mongodb/* && cp --recursive /my/backup/data/path /var/lib/mongodb/ && service mongod start

यदि आप MongoDB 4.2.1-1 

के लिए Percona सर्वर का उपयोग कर रहे हैं, तो आप बैकअप को संग्रह प्रारूप में भी संग्रहीत कर सकते हैं
> use admin

> db.runCommand({createBackup: 1, archive: "path/to/archive.tar" })

आप डिफ़ॉल्ट सेटिंग्स का उपयोग करके या अधिक कॉन्फ़िगरेशन के साथ सीधे AWS S3 का बैकअप भी ले सकते हैं। डिफ़ॉल्ट S3 बकेट बैकअप के लिए:

> db.runCommand({createBackup:1,  s3:{बाल्टी:"बैकअप", पथ:"newBackup"}})

डेटा-एट-रेस्ट एन्क्रिप्शन

MongoDB संस्करण 3.2 ने WiredTiger स्टोरेज इंजन के लिए रेस्ट एन्क्रिप्शन पर डेटा पेश किया ताकि यह सुनिश्चित किया जा सके कि डेटा फ़ाइलों को डिक्रिप्ट किया जा सकता है और पार्टियों द्वारा केवल डिक्रिप्शन कुंजी के साथ पढ़ा जा सकता है। MongoDB के लिए Percona सर्वर में आराम से डेटा एन्क्रिप्शन, MongoDB में रेस्ट इंटरफ़ेस पर डेटा एन्क्रिप्शन के साथ हाथ में जाने के लिए संस्करण 3.6 में पेश किया गया था। हालांकि नवीनतम संस्करण में Amazon AWS और KIMP प्रमुख प्रबंधन सेवाओं के लिए समर्थन शामिल नहीं है।

एन्क्रिप्शन को रोलबैक फ़ाइलों पर तब भी लागू किया जा सकता है जब डेटा रेस्ट पर सक्षम हो। MongoDB के लिए Percona सर्वर 2 चयनात्मक सिफर मोड के साथ EncryptionCipherMode विकल्प का उपयोग करता है:

  1. AES256-CBC (डिफ़ॉल्ट सिफर मोड)
  2. एईएस256-जीसीएम

आप नीचे दिए गए आदेश से डेटा एन्क्रिप्ट कर सकते हैं

$ mongod ... --encryptionCipherMode or 

$ mongod ... --encryptionCipherMode AES256-GCM

हम एन्क्रिप्शन कुंजी वाली फ़ाइल का पथ निर्दिष्ट करने के लिए --ecryptionKeyFile विकल्प का उपयोग करते हैं।

$ mongod ... --enableEncryption --encryptionKeyFile <fileName>

ऑडिट लॉगिंग

हर डेटाबेस सिस्टम के लिए, प्रशासकों के पास हो रही गतिविधियों पर नज़र रखने का अधिदेश होता है। MongoDB के लिए Percona सर्वर में, जब ऑडिटिंग सक्षम होती है, तो सर्वर प्राधिकरण और प्रमाणीकरण जैसी विभिन्न उपयोगकर्ता घटनाओं के बारे में जानकारी बनाने की तुलना में एक ऑडिट लॉग फ़ाइल बनाता है। हालाँकि, सर्वर को ऑडिटिंग सक्षम के साथ शुरू करने से, लॉग को रनटाइम के दौरान गतिशील रूप से प्रदर्शित नहीं किया जाएगा।

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

पेरकोना मेमोरी इंजन

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

$ service mongod stop

$ mongod --storageEngine inMemory --dbpath <newDataDir>

यदि आपके पास अपने डिफ़ॉल्ट MongoDB समुदाय संस्करण के साथ पहले से ही कुछ डेटा है और आप Percona मेमोरी इंजन में माइग्रेट करना चाहते हैं, तो बस आदेश जारी करके mongodumb और mongorestore उपयोगिताओं का उपयोग करें:

$ mongodump --out <dumpDir>

$ service mongod stop

$ rm -rf /var/lib/mongodb/*

$ sed -i '/engine: .*inMemory/s/#//g' /etc/mongod.conf

$ service mongod start

$ mongorestore <dumpDir>

एसएएसएल के साथ बाहरी एलडीएपी प्रमाणीकरण

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

  1. LDAP सर्वर जो सभी उपयोगकर्ता क्रेडेंशियल को दूरस्थ रूप से संग्रहीत करता है
  2. SASL डेमॉन जिसका उपयोग दूरस्थ LDAP सेवा के लिए MongoDB सर्वर-स्थानीय प्रॉक्सी के रूप में किया जाता है।
  3. SASL लाइब्रेरी:MongoDB क्लाइंट और सर्वर के लिए आवश्यक प्रमाणीकरण डेटा बनाता है।

प्रमाणीकरण सत्र क्रम

  • क्लाइंट चल रहे मोंगोड इंस्टेंस से जुड़ जाता है और SASL लाइब्रेरी का उपयोग करके एक सादा प्रमाणीकरण अनुरोध बनाता है।
  • आलेख अनुरोध तब सर्वर को एक विशेष Mongo कमांड के रूप में भेजा जाता है जो उसके बाद mongod सर्वर द्वारा उसके अनुरोध पेलोड के साथ प्राप्त किया जाता है।
  • सर्वर कुछ एसएएसएल सत्र बनाता है जो एसएएसएल पुस्तकालय के अपने संदर्भ का उपयोग करते हुए क्लाइंट क्रेडेंशियल से प्राप्त होते हैं।
  • मोंगॉड सर्वर एसएएसएल लाइब्रेरी को ऑथ पेलोड भेजता है जो इसे सस्लौथ डेमॉन को सौंप देता है। डेमॉन इसे एलडीएपी को भेजता है और प्रमाणीकरण अनुरोध पर हां या नहीं प्रतिक्रिया की प्रतीक्षा करता है, यह जांच कर कि उपयोगकर्ता मौजूद है या नहीं और सबमिट किया गया पासवर्ड सही है।
  • saslauthd इस प्रतिक्रिया को SASL पुस्तकालय के माध्यम से mongod सर्वर को भेजता है जो तब तदनुसार अनुरोध को प्रमाणित या अस्वीकार करता है।

 इस प्रक्रिया के लिए यहां एक उदाहरण दिया गया है:

मोंगॉड सर्वर में बाहरी उपयोगकर्ता जोड़ने के लिए:

> db.getSiblingDB("$external").createUser( {user : username, roles: [ {role: "read", db: "test"} ]} );

हालांकि बाहरी उपयोगकर्ताओं के पास व्यवस्थापक डेटाबेस में असाइन की गई भूमिकाएं नहीं हो सकतीं।

HashiCorp Vault Integration

HashCorp Vault एक ऐसा उत्पाद है जिसे गोपनीय जानकारी तक पहुंच को सुरक्षित रूप से संग्रहीत और कसकर नियंत्रित करके रहस्यों को प्रबंधित करने और संवेदनशील डेटा की रक्षा करने के लिए डिज़ाइन किया गया है। पिछले Percona संस्करण के साथ, बाकी एन्क्रिप्शन कुंजी पर डेटा कुंजी फ़ाइल के अंदर सर्वर पर स्थानीय रूप से संग्रहीत किया गया था। हैशकॉर्प वॉल्ट के साथ एकीकरण एन्क्रिप्शन कुंजी को बहुत बेहतर तरीके से सुरक्षित करता है।

उन्नत क्वेरी प्रोफाइलिंग

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

निष्कर्ष

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

MongoDB के लिए Percona सर्वर परिनियोजन के विकल्प के रूप में ClusterControl द्वारा पूरी तरह से समर्थित है।


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. GoLang में डेटा स्रोत के रूप में MongoDB का उपयोग करना

  2. MongoDB विशिष्ट सरणी मान बदलें

  3. नेवला, आबादी वाले क्षेत्र के आधार पर क्वेरी छाँटें

  4. MongoDB में सूचकांक

  5. मोंगोडब एकत्रीकरण $ समूह, सरणी की लंबाई प्रतिबंधित करें