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

MongoDB में कनेक्शन स्ट्रिंग (उदाहरण के साथ)

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

कनेक्शन स्ट्रिंग के लिए प्रारूप

दिए गए तरीकों में से कोई भी एक MongoDB कनेक्शन स्ट्रिंग स्थापित करेगा। DNS बीज सूची कनेक्शन प्रारूप या मानक कनेक्शन स्ट्रिंग प्रारूप।

स्ट्रिंग को जोड़ने के लिए मानक प्रारूप

MongoDB परिनियोजन के तीन मूल प्रकार हैं:स्टैंडअलोन, रेप्लिका सेट और शार्प्ड क्लस्टर, इन सभी का वर्णन यहाँ किया गया है।

यूआरआई में शामिल होने का यह सामान्य तरीका है।

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

उदाहरण:

स्टैंडअलोन
mongodb://mongodb0.example.com:27017
एक्सेस कंट्रोल को लागू करने वाला स्टैंडअलोन:
mongodb://myDBReader:D1fficultP%[email protected]:27017/?authSource=admin
प्रतिकृति सेट
mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?replicaSet=myRepl
प्रतिकृति सेट जो अभिगम नियंत्रण को लागू करता है:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongodb1.example.com:27017,mongodb2.example.com:27017/?authSource=admin&replicaSet=myRepl
साझा क्लस्टर
mongodb://mongos0.example.com:27017,mongos1.example.com:27017,mongos2.example.com:27017
साझा क्लस्टर जो अभिगम नियंत्रण को लागू करता है:
mongodb://myDBReader:D1fficultP%[email protected]:27017,mongos1.example.com:27017,mongos2.example.com:27017/?authSource=admin

कनेक्शन स्ट्रिंग के घटक

मानक यूआरआई कनेक्शन स्ट्रिंग के घटक:

  1. मोंगोडब:// – एक मानक कनेक्शन स्ट्रिंग को इंगित करने वाला एक आवश्यक उपसर्ग।
  2. उपयोगकर्ता नाम:पासवर्ड@ - प्रमाणीकरण क्रेडेंशियल वैकल्पिक हैं। यदि ऑथसोर्स दिया गया है, तो क्लाइंट उपयोगकर्ता को प्रमाणित करने का प्रयास करेगा। किसी ऑथसोर्स को निर्दिष्ट किए बिना, क्लाइंट उपयोगकर्ता को डिफॉल्टऑथडब के विरुद्ध सत्यापित करेगा। इसके अतिरिक्त, यदि डिफॉल्टऑथडब नहीं दिया गया है तो व्यवस्थापक डेटाबेस का उपयोग किया जाता है।
  3. होस्ट[:पोर्ट] – होस्ट (और वैकल्पिक रूप से पोर्ट नंबर) जिस पर मोंगोड इंस्टेंस काम कर रहा है (या शार्प क्लस्टर के मामले में मोंगोस इंस्टेंस)। आप UNIX डोमेन में होस्टनाम, IP पता या सॉकेट इंगित कर सकते हैं। अपने रोलआउट टोपोलॉजी के लिए आवश्यक मेजबानों की संख्या इंगित करें:
    एकल मोंगोड उदाहरण के मामले में, मोंगोड उदाहरण का होस्टनाम दें।
    निर्दिष्ट मोंगोड इंस्टेंस का होस्टनाम प्रदान करें एक रेप्लिका सेट के लिए रेप्लिका सेट सेटिंग्स में। पोर्ट नंबर निर्दिष्ट किए बिना, सामान्य पोर्ट 27017 का उपयोग किया जाता है।
  4. /defaultauthdb - वैकल्पिक। यदि कनेक्शन स्ट्रिंग में उपयोगकर्ता नाम है:पासवर्ड @ क्रेडेंशियल, लेकिन ऑथसोर्स विकल्प की आपूर्ति नहीं की जाती है, तो प्रमाणीकरण डेटाबेस का उपयोग किया जाता है। यदि authSource और defaultauthdb दोनों नहीं दिए गए हैं, तो क्लाइंट उपयोगकर्ता को प्रमाणित करने के लिए व्यवस्थापक डेटाबेस का उपयोग करता है।
  5. ?<विकल्प> – वैकल्पिक। कनेक्शन-विशिष्ट पैरामीटर क्वेरी स्ट्रिंग में नाम>=मान> जोड़े में निर्दिष्ट हैं। उपलब्ध विकल्पों की सूची कनेक्शन स्ट्रिंग विकल्प अनुभाग में देखी जा सकती है। यदि कनेक्शन स्ट्रिंग में कोई डेटाबेस निर्दिष्ट नहीं है, तो विकल्प स्ट्रिंग शुरू करने के लिए होस्ट और प्रश्न चिह्न (?) के बीच स्लैश (/) को शामिल किया जाना चाहिए।

DNS बीज सूची के लिए कनेक्शन प्रारूप

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

DNS बीज सूची का उपयोग करने के लिए नियमित MongoDB कनेक्शन स्ट्रिंग उपसर्ग के बजाय mongodb+srv उपसर्ग का उपयोग करें। उपयोगकर्ता को यह बताने के लिए कि निम्नलिखित होस्टनाम एक DNS SRV रिकॉर्ड है, +srv उपसर्ग का उपयोग करें। बाद में, मोंगोश या ड्राइवर डोमेन नेम सिस्टम (डीएनएस) को यह पता लगाने के लिए क्वेरी करेगा कि कौन से होस्ट मोंगोड इंस्टेंस को निष्पादित कर रहे हैं।

नोट: यदि +srv कनेक्शन स्ट्रिंग चर का उपयोग किया जाता है, तो tls (या संबंधित ssl) विकल्प सही पर सेट होता है। क्वेरी स्ट्रिंग में स्पष्ट रूप से tls विकल्प को गलत में निर्दिष्ट करके, आप इस व्यवहार को ओवरराइड कर सकते हैं और इसके बजाय tls=false का उपयोग कर सकते हैं।

DNS बीज सूची कनेक्शन स्ट्रिंग्स अक्सर निम्न उदाहरण की तरह दिखती हैं:

mongodb+srv://server.example.com/

डीएनएस सेटअप इस तरह दिख सकता है:

Record                            TTL   Class    Priority Weight Port  Target

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27317 mongodb1.example.com.

_mongodb._tcp.server.example.com. 86400 IN SRV   0        5      27017 mongodb2.example.com.

बीज सूची के सदस्यों के साथ जुड़ने से क्लाइंट को कनेक्शन स्थापित करने के लिए अन्य प्रतिकृति सेट सदस्यों की निर्देशिका तक पहुंच मिलती है। होस्ट बीज सूची से भिन्न सर्वर सूची तैयार कर सकता है क्योंकि क्लाइंट आमतौर पर अपनी बीज सूची में DNS उपनामों का उपयोग करते हैं। प्रतिकृति सेट के सदस्यों को केवल उनके होस्टनाम के माध्यम से ही पहुँचा जा सकता है; इसलिए, यदि ऐसा होता है, तो उपयोगकर्ता बीज सूची में बताए गए नामों के बजाय प्रतिकृति द्वारा दिए गए होस्टनाम का उपयोग करेंगे।

नोट: निर्दिष्ट होस्टनाम द्वारा प्रदान किए गए एसआरवी रिकॉर्ड में वही मूल डोमेन (example.com) होना चाहिए जो होस्टनाम के रूप में है। यदि मूल डोमेन और होस्टनाम मेल नहीं खाते हैं तो आपको कनेक्ट करने की अनुमति नहीं दी जाएगी।

इसके अतिरिक्त, DNS बीज सूची कनेक्शन स्ट्रिंग्स आपको URL के हिस्से के रूप में उसी तरह पैरामीटर प्रदान करने की अनुमति देती हैं जैसे सामान्य लोग करते हैं। DNS बीज सूची कनेक्शन स्ट्रिंग का उपयोग करते समय आप निम्न सेटिंग्स को इंगित करने के लिए एक TXT रिकॉर्ड का भी उपयोग कर सकते हैं:

authSource
replicaSet

प्रत्येक मोंगोड उदाहरण के लिए केवल एक TXT रिकॉर्ड निर्दिष्ट किया जा सकता है। यदि DNS में कई TXT प्रविष्टियाँ हैं या यदि TXT प्रविष्टि में प्रतिकृतिसेट या authSource के अलावा कोई विशेषता है, तो क्लाइंट एक त्रुटि लौटाएगा।

Server.example.com का TXT रिकॉर्ड इस तरह दिखेगा:

Record              TTL   Class    Text

server.example.com. 86400 IN TXT   "replicaSet=mySet&authSource=authDB"

यह कनेक्शन स्ट्रिंग DNS SRV प्रविष्टियों के साथ-साथ TXT रिकॉर्ड सेटिंग्स से निम्नानुसार उत्पन्न होती है:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?replicaSet=mySet&authSource=authDB

URL के क्वेरी स्ट्रिंग पैरामीटर की आपूर्ति करके एक TXT रिकॉर्ड के विकल्पों को ओवरराइड किया जा सकता है। निम्न परिदृश्य में क्वेरी स्ट्रिंग DNS प्रविष्टि के TXT रिकॉर्ड में सेट किए गए authSource विकल्प को ओवरराइड करती है।

mongodb+srv://server.example.com/?connectTimeoutMS=300000&authSource=aDifferentAuthDB

ऑथसोर्स ओवरराइड का उपयोग करते हुए, सामान्य कनेक्शन स्ट्रिंग इस तरह दिखाई देगी:

mongodb://mongodb1.example.com:27317,mongodb2.example.com:27017/?connectTimeoutMS=300000&replicaSet=mySet&authSource=aDifferentAuthDB

नोट: यदि कनेक्शन स्ट्रिंग में निर्दिष्ट होस्टनाम के साथ कोई DNS रिकॉर्ड संबद्ध नहीं है, तो mongodb+srv पैरामीटर विफल हो जाएगा। अंतिम नोट के रूप में, +srv कनेक्शन स्ट्रिंग संशोधन का उपयोग करते समय, कनेक्शन के लिए TLS (या समकक्ष SSL सुरक्षा) का उपयोग करने का विकल्प सही पर सेट होता है। क्वेरी स्ट्रिंग में स्पष्ट रूप से tls विकल्प को गलत में निर्दिष्ट करके, आप इस व्यवहार को ओवरराइड कर सकते हैं और इसके बजाय tls=false का उपयोग कर सकते हैं।

अपना MongoDB कनेक्शन स्ट्रिंग प्राप्त करें

MongoDB से कनेक्ट करने के लिए आपको एक URI स्ट्रिंग की आवश्यकता होगी। यदि आप मोंगो शेल, कम्पास, या मोंगोडीबी ड्राइवरों का उपयोग करके मोंगोडीबी परिनियोजन से लिंक करते हैं, तो आपसे यूआरआई (यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर) के लिए कहा जाएगा।

यह माना जाता है कि आपने पहले से ही MongoDB में प्रमाणीकरण स्थापित कर लिया है और प्रदान की गई URI स्ट्रिंग का उपयोग करते समय MongoDB डेटाबेस के पढ़ने और लिखने के अधिकार के लिए एक उपयोगकर्ता नाम और पासवर्ड जेनरेट किया है।

इस मामले में, आप अपने द्वारा बनाए गए लॉगिन और पासवर्ड का उपयोग readWriteAnyDatabase भूमिका के लिए कर सकते हैं और साथ ही MongoDB से कनेक्ट करने के लिए अपने कनेक्शन स्ट्रिंग में व्यवस्थापक डेटाबेस नाम का उपयोग कर सकते हैं।

कनेक्शन स्ट्रिंग के लिए विकल्प

यह खंड उन विभिन्न तरीकों के बारे में बताता है जिनसे आप इंटरनेट से जुड़ सकते हैं।

  1. नाम =मान युग्म के रूप में, कनेक्शन विकल्प उपलब्ध हैं।
  2. ड्राइवर का उपयोग करते समय, विकल्प का नाम केस-संवेदी होता है।
  3. मोंगोश या पारंपरिक मोंगो शेल (संस्करण 4.2 या बाद के संस्करण) का उपयोग करते समय विकल्प नाम केस-असंवेदनशील होता है।
  4. विकल्प नाम केस-संवेदी होता है जब संस्करण 4.0 या पुराने पुराने मोंगो शेल का उपयोग किया जाता है।
  5. मान प्रदर्शित करते समय मामला कभी कोई समस्या नहीं होता है।

एम्परसेंड (&) अक्षर विकल्पों को अलग कर सकता है, जैसे कि name1=value1&name2=value2। रेप्लिकासेट और कनेक्टटाइमआउटएमएस पैरामीटर निम्नलिखित कनेक्शन में शामिल हैं:

mongodb://db1.example.net:27017,db2.example.net:2500/?replicaSet=test&connectTimeoutMS=300000

नोट: ड्राइवर अब पुराने सॉफ़्टवेयर के साथ संगतता बनाए रखने के लिए विकल्प विभाजक के रूप में सेमी-कोलन (;) स्वीकार करते हैं।

कनेक्शन स्ट्रिंग्स उदाहरण

आपको नीचे दिए गए उदाहरणों में लोकप्रिय कनेक्शन बिंदुओं के लिए यूआरआई उदाहरण मिलेंगे।

डेटाबेस सर्वर को स्थानीय रूप से चलाएं

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

mongodb://localhost
प्रशासनिक डेटाबेस

फॉसलिनक्स पासवर्ड के साथ एडमिन डेटाबेस में फॉस के रूप में लॉग इन करने के लिए, निम्नलिखित कमांड का पालन किया जाना चाहिए:

mongodb://foss:fosslinux@localhost
रिकॉर्ड का डेटाबेस

सिस्टम व्यवस्थापक के रूप में पासवर्ड फॉसलिनक्स का उपयोग करके रिकॉर्ड डेटाबेस से कनेक्ट करना और लॉग इन करना।

mongodb://foss:fosslinux@localhost/records
UNIX में डोमेन सॉकेट

UNIX डोमेन सॉकेट से अटैच करते समय, URL एन्क्रिप्टेड कनेक्शन स्ट्रिंग का उपयोग करें।

MongoDB निम्नलिखित पथ के साथ एक UNIX डोमेन समापन बिंदु से लिंक करता है:

mongodb://%2Ftmp%2Fmongodb-27017.sock

नोट: सभी ड्राइवर UNIX डोमेन सॉकेट का समर्थन नहीं करते हैं। अपने ड्राइवर के बारे में अधिक जानने के लिए, ड्राइवर दस्तावेज़ अनुभाग पर जाएँ।

विभिन्न मशीनों पर उपयोगकर्ताओं के साथ प्रतिकृति सेट

नीचे db1.example.net और db2.example.net पर सेट की गई दो-सदस्यीय प्रतिकृति का कनेक्शन है:

mongodb://db1.example.net,db2.example.com/?replicaSet=test

नोट: रेप्लिका सेट कॉन्फिग में दिए गए मोंगोड इंस्टेंस को रेप्लिका सेट के लिए निर्दिष्ट किया जाना चाहिए।

लोकलहोस्ट पर उपयोगकर्ताओं के साथ प्रतिकृति सेट करें

पोर्ट 27017, 27018, और 27019 का उपयोग लोकलहोस्ट पर चल रहे प्रतिकृति सेट से कनेक्शन स्थापित करने के लिए किया जाता है:

mongodb://localhost,localhost:27018,localhost:27019/?replicaSet=test
वितरण प्रतिकृति सेट पढ़ें

तीन-सदस्यीय प्रतिकृति सेट से कनेक्ट करना और द्वितीयक सदस्यों को पठन वितरित करना नीचे सूचीबद्ध विधि की आवश्यकता है:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&readPreference=secondary
उच्च स्तरीय लेखन चिंता प्रतिकृति सेट

अधिकांश डेटा-असर वाले मतदान सदस्यों में प्रतिकृति के लिए प्रतीक्षा करते समय लेखन चिंता और दो-सेकंड टाइमआउट वाले प्रतिकृति सेट से कनेक्ट करना इस कॉन्फ़िगरेशन का उपयोग करके पूरा किया जाता है:

mongodb://example1.com,example2.com,example3.com/?replicaSet=test&w=majority&wtimeoutMS=2000
साझा क्लस्टर

निम्नलिखित का उपयोग करके एक बहु-आवृत्ति शार्प क्लस्टर से जुड़ना संभव है:

mongodb://router1.example.com:27017,router2.example2.com:27017,router3.example3.com:27017/
MongoDB एटलस क्लस्टर

निम्नलिखित प्रमाणीकरण के लिए AWS IAM क्रेडेंशियल्स का उपयोग करके MongoDB एटलस क्लस्टर से कनेक्शन स्थापित करता है:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

यह उदाहरण दिखाता है कि AWS IAM क्रेडेंशियल के माध्यम से एटलस से कनेक्ट करने के लिए MONGODB-AWS प्रमाणीकरण विधि और $external authSource का उपयोग कैसे करें।

यदि आप AWS सत्र टोकन का उपयोग कर रहे हैं, तो AWS सत्र टोकन authMechanismProperties मान प्रदान किया जाना चाहिए:

mongosh 'mongodb+srv://<aws access key id>:<aws secret access key>@cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws session token>'

नोट: जब तक एडब्ल्यूएस एक्सेस कुंजी आईडी या गुप्त एक्सेस कुंजी में निम्न में से कोई भी वर्ण होता है:(: / ? # [ ] @ ), आपको उन्हें एन्कोड करने के लिए प्रतिशत-एन्कोडिंग का उपयोग करना होगा।

आप अपने प्लेटफॉर्म पर इन क्रेडेंशियल्स को निर्दिष्ट करने के लिए नियमित एडब्ल्यूएस आईएएम पर्यावरण चर का भी उपयोग कर सकते हैं। MONGODB-AWS प्रमाणीकरण का उपयोग करते समय, mongosh जाँच करता है और पता लगाता है कि क्या निम्न पर्यावरण चर मौजूद हैं:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN

एक कनेक्शन स्ट्रिंग को कॉन्फ़िगर किए जाने पर इन क्रेडेंशियल्स को शामिल करने की आवश्यकता नहीं है।

बैश शेल में, निम्नलिखित चर निम्नलिखित उदाहरण में सेट किए गए हैं:

export AWS_ACCESS_KEY_ID='<aws access key id>'

export AWS_SECRET_ACCESS_KEY='<aws secret access key>'

export AWS_SESSION_TOKEN='<aws session token>'

पर्यावरण चर स्थापित करने के लिए वाक्य रचना अन्य गोले में भिन्न होगी, इसलिए इसके बारे में जागरूक रहें। अधिक जानकारी के लिए, अपने प्लेटफ़ॉर्म के दस्तावेज़ीकरण पर जाएँ।

निम्न कमांड पुष्टि करेगा कि कुछ निश्चित पर्यावरण चर सेट किए गए हैं या नहीं:

env | grep AWS

निम्न कोड दर्शाता है कि नीचे सूचीबद्ध चरों का उपयोग करके किसी MongoDB एटलस क्लस्टर से कनेक्शन कैसे स्थापित किया जाए:

mongosh 'mongodb+srv://cluster0.example.com/testdb?authSource=$external&authMechanism=MONGODB-AWS'

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


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में स्वत:वृद्धि अद्वितीय उपयोगकर्ता आईडी के अनुक्रम को संग्रहीत करने के लिए

  2. सी # के लिए सबसे परिपक्व मोंगोडीबी ड्राइवर क्या है?

  3. Prometheus और ClusterControl के साथ MongoDB की निगरानी कैसे करें

  4. Azure पर सबसे तेज़ MongoDB!

  5. मोंगोडीबी की तुलना में रेडिस कितना तेज है?