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

MongoDB एटलस के साथ क्लाउड में डेटाबेस क्लस्टर बनाएं

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

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

सौभाग्य से, एक आसान विकल्प है: MongoDB एटलस, डेटाबेस का पूरी तरह से प्रबंधित, क्लाउड संस्करण।

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

इस ट्यूटोरियल में, मैं आपको दिखाऊंगा कि MongoDB एटलस फ्री टियर क्लस्टर कैसे बनाया जाता है और इसे पायथन एप्लिकेशन में उपयोग किया जाता है।

आवश्यकताएं

आगे बढ़ने से पहले, सुनिश्चित करें कि आपके कंप्यूटर पर निम्नलिखित स्थापित और कॉन्फ़िगर किए गए हैं:

  • पायथन 3.4 या उच्चतर
  • पिप 18.0 या उच्चतर
<एच2>1. एक क्लस्टर बनाना

MongoDB की क्लाउड सेवाओं का उपयोग करने में सक्षम होने के लिए, आपको एक MongoDB एटलस खाते की आवश्यकता होगी। एक बनाने के लिए, इसके होम पेज पर जाएं और निःशुल्क प्रारंभ करें . दबाएं बटन।

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

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

क्लस्टर टियर . में अनुभाग में, M0 . चुनें अपना फ्री टियर क्लस्टर बनाने का विकल्प। यह 512 एमबी स्टोरेज स्पेस प्रदान करता है, मोंगोडीबी का हालिया संस्करण जिसमें स्टोरेज इंजन के रूप में वायर्ड टाइगर, तीन नोड्स का एक प्रतिकृति सेट और प्रति सप्ताह 10 जीबी बैंडविड्थ की उदार है।

अंत में, क्लस्टर को एक सार्थक नाम दें और क्लस्टर बनाएं दबाएं बटन।

MongoDB एटलस को अब आपका क्लस्टर सेट करने में लगभग पांच मिनट का समय लगेगा।

2. क्लस्टर कॉन्फ़िगर करना

इससे पहले कि आप क्लस्टर का उपयोग शुरू करें, आपको सुरक्षा संबंधी कुछ विवरण प्रदान करने होंगे, इसलिए सुरक्षा पर स्विच करें टैब।

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

इसके बाद, आईपी श्वेतसूची . में अनुभाग में, आपको उन IP पतों की एक सूची प्रदान करनी होगी जिनसे आप क्लस्टर तक पहुँच प्राप्त करेंगे। अभी के लिए, आपके कंप्यूटर का वर्तमान IP पता प्रदान करना पर्याप्त है।

आईपी पता जोड़ें दबाएं एक नया IP पता प्रविष्टि बनाने के लिए बटन। पॉप अप होने वाले डायलॉग में, वर्तमान IP पता जोड़ें दबाएं श्वेतसूची प्रविष्टि . को स्वत:भरने के लिए बटन खेत। इसके अतिरिक्त, यदि आपके पास कोई स्थिर IP पता नहीं है, तो अस्थायी श्वेतसूची के रूप में सहेजें को चेक करके इसे एक अस्थायी प्रविष्टि के रूप में चिह्नित करना एक अच्छा विचार है विकल्प। अंत में, पुष्टि करें दबाएं प्रविष्टि जोड़ने के लिए।

3. कनेक्शन स्ट्रिंग प्राप्त करना

अपने एप्लिकेशन से अपने क्लस्टर से कनेक्ट करने के लिए आपको एक वैध कनेक्शन स्ट्रिंग की आवश्यकता होगी। इसे प्राप्त करने के लिए, अवलोकन . पर जाएं टैब करें और कनेक्ट करें . दबाएं बटन।

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

4. पायथन ड्राइवर स्थापित करना

प्रोग्रामेटिक रूप से अपने MongoDB एटलस क्लस्टर के साथ इंटरैक्ट करने में सक्षम होने के लिए, आपके पास अपने कंप्यूटर पर एक MongoDB ड्राइवर स्थापित होना चाहिए। Python प्रोग्रामिंग भाषा के लिए, PyMongo आज उपलब्ध सबसे लोकप्रिय ड्राइवर है। इसे अपने कंप्यूटर पर स्थापित करने का अनुशंसित तरीका pip . का उपयोग करना है मॉड्यूल जैसा कि नीचे दिखाया गया है:

python3 -m pip install pymongo --user

आपने देखा होगा कि आपकी MongoDB एटलस कनेक्शन स्ट्रिंग एक mongodb+srv:// है यूआरआई। ड्राइवर को DNS SRV रिकॉर्ड के साथ काम करने के लिए सक्षम करने के लिए, आपको dnspython भी इंस्टॉल करना होगा मापांक। यहां बताया गया है:

python3 -m pip install dnspython --user

5. क्लस्टर से जुड़ रहा है

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

स्क्रिप्ट के अंदर, क्लस्टर के साथ बातचीत करने में सक्षम होने के लिए, आपको MongoClient के एक उदाहरण की आवश्यकता होगी कक्षा। इसके निर्माता के लिए एकमात्र तर्क के रूप में, अपनी कनेक्शन स्ट्रिंग पास करें।

import pymongo



my_client = pymongo.MongoClient(

    'mongodb+srv://alice:[email protected]/test?retryWrites=true'

)

उपरोक्त कंस्ट्रक्टर तुरंत लौटता है और कोई त्रुटि नहीं उठाएगा। इसलिए, यह जांचने के लिए कि क्या आपने सफलतापूर्वक एक कनेक्शन स्थापित किया है, मेरा सुझाव है कि आप क्लस्टर पर एक ऑपरेशन करने का प्रयास करें। server_info() के लिए एक कॉल विधि, जो आपको आपके MongoDB उदाहरण के बारे में विभिन्न विवरण देती है, पर्याप्त होगी।

यदि आपकी कनेक्शन स्ट्रिंग में कोई त्रुटि नहीं है, तो server_info() . पर कॉल करें विधि सफल होगी। हालांकि, यदि आपके द्वारा निर्दिष्ट उपयोगकर्ता नाम या पासवर्ड गलत है, तो आप एक OperationFailure का सामना करेंगे त्रुटि। निम्नलिखित कोड आपको दिखाता है कि इसे कैसे पकड़ा जाए:

try:

    print("MongoDB version is %s" % 

            my_client.server_info()['version'])

except pymongo.errors.OperationFailure as error:

    print(error)

    quit(1)

अब आप आगे बढ़ सकते हैं और अपनी स्क्रिप्ट चलाने का प्रयास कर सकते हैं।

6. दस्तावेज़ सम्मिलित करना

MongoDB एटलस के वेब इंटरफ़ेस से आपको मिलने वाली डिफ़ॉल्ट कनेक्शन स्ट्रिंग में test नामक डेटाबेस का उल्लेख है . आइए उसी डेटाबेस का उपयोग जारी रखें। यहां बताया गया है कि आप इसका संदर्भ कैसे प्राप्त कर सकते हैं:

my_database = my_client.test

एक MongoDB डेटाबेस एक या अधिक संग्रहों से बना होता है, जो और कुछ नहीं बल्कि BSON दस्तावेज़ों के समूह होते हैं (बाइनरी JSON के लिए संक्षिप्त)। MongoDB एटलस पर आपके मुफ़्त टियर क्लस्टर में अधिकतम 500 संग्रह हो सकते हैं।

एक वास्तविक उदाहरण के लिए, चलिए foods . नामक एक नया संग्रह बनाते हैं . PyMongo के साथ, आपको ऐसा करने के लिए किसी भी विधि को स्पष्ट रूप से कॉल करने की आवश्यकता नहीं है। आप इसे केवल ऐसे संदर्भित कर सकते हैं जैसे कि यह पहले से मौजूद है।

my_collection = my_database.foods

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

insert_one() का उपयोग करना विधि संग्रह में दस्तावेज़ जोड़ने का सबसे आसान तरीका है। दस्तावेज़ की सामग्री को निर्दिष्ट करने के लिए, आप विधि के लिए एक पायथन शब्दकोश पास करते हैं। निम्नलिखित नमूना कोड आपको दिखाता है कि कैसे:

my_collection.insert_one({

    "_id": 1,

    "name": "pizza",

    "calories": 266,

    "fats": {

        "saturated": 4.5,

        "trans": 0.2

    },

    "protein": 11

})

एक बार में एक दस्तावेज़ जोड़ना अक्षम हो सकता है। insert_many() . के साथ विधि, आप अपने संग्रह में एक साथ कई दस्तावेज़ जोड़ सकते हैं। यह अपने इनपुट के रूप में शब्दकोशों की एक सरणी की अपेक्षा करता है। निम्न कोड संग्रह में दो और दस्तावेज़ जोड़ता है:

my_collection.insert_many([

    {

        "_id": 2,

        "name": "hamburger",

        "calories": 295, "protein": 17,

        "fats": { "saturated": 5.0, "trans": 0.8 },

    },

    {

        "_id": 3,

        "name": "taco",

        "calories": 226, "protein": 9,

        "fats": { "saturated": 4.4, "trans": 0.5 },

    }

])

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

7. चल रही क्वेरी

जब आपने अपने संग्रह में कुछ दस्तावेज़ जोड़े हैं, तो आप find() पर कॉल करके उस पर क्वेरी चला सकते हैं विधि, जो एक Cursor लौटाती है जिस वस्तु पर आप पुनरावृति कर सकते हैं। यदि आप इसके लिए कोई तर्क नहीं देते हैं, तो find संग्रह के सभी दस्तावेज़ लौटाता है।

निम्नलिखित कोड आपको दिखाता है कि हमारे संग्रह में मौजूद सभी खाद्य पदार्थों के नाम कैसे प्रिंट करें:

my_cursor = my_collection.find()



for item in my_cursor:

    print(item["name"])



# Output is:

#   pizza

#   hamburger

#   taco

अगर आप चाहते हैं find() विधि केवल उन दस्तावेज़ों को वापस करने के लिए जो विशिष्ट मानदंडों से मेल खाते हैं, आपको इसमें एक पायथन डिक्शनरी पास करनी होगी। उदाहरण के लिए, यदि आप उस दस्तावेज़ को खोजना चाहते हैं जिसका name फ़ील्ड "पिज़्ज़ा" पर सेट है, आप निम्न कोड का उपयोग कर सकते हैं:

my_cursor = my_collection.find({

    "name": "pizza"

})

अधिक जटिल प्रश्नों के लिए, आप उन शब्दकोशों में MongoDB के सहज रूप से नामित क्वेरी ऑपरेटरों का उपयोग कर सकते हैं जिन्हें आप find() में पास करते हैं। तरीका। उदाहरण के लिए, निम्न कोड आपको दिखाता है कि $lt . का उपयोग कैसे करें दस्तावेज़ खोजने के लिए ऑपरेटर जिसका calories फ़ील्ड 280 से कम मान पर सेट है:

my_cursor = my_collection.find({

    "calories": { "$lt": 280 }

})



for item in my_cursor:

    print("Name: %s, Calories: %d" % 

        (item["name"], item["calories"]))



# Output is:

#   Name: pizza, Calories: 266

#   Name: taco, Calories: 226

डॉट नोटेशन का उपयोग करके, आप अपने प्रश्नों में नेस्टेड फ़ील्ड का भी उपयोग कर सकते हैं। निम्नलिखित कोड आपको दिखाता है कि उन दस्तावेज़ों को कैसे खोजा जाए जिनके trans फ़ील्ड, जो fats . के अंदर है फ़ील्ड, उस मान पर सेट है जो 0.5 से अधिक या उसके बराबर है:

my_cursor = my_collection.find({

    "fats.trans": { "$gte": 0.5 }

})



for item in my_cursor:

    print("Name: %s, Trans fats: %.2f" % 

        (item["name"], item["fats"]["trans"]))



# Output is:

#   Name: hamburger, Trans fats: 0.80

#   Name: taco, Trans fats: 0.50

8. दस्तावेज़ों को अद्यतन करना और हटाना

insert_one() . के समान ही और insert_many() विधियाँ हैं update_one() और update_many() विधियाँ, जिनका उपयोग आप अपने संग्रह में पहले से मौजूद दस्तावेज़ों की सामग्री को बदलने के लिए कर सकते हैं। दोनों अद्यतन विधियों, नए डेटा के अलावा, उन दस्तावेज़ों पर शून्य करने के लिए एक क्वेरी की आवश्यकता है जिन्हें बदलने की आवश्यकता है।

आप अपनी अद्यतन विधियों में विभिन्न अद्यतन ऑपरेटरों का उपयोग कर सकते हैं। सबसे अधिक इस्तेमाल किया जाने वाला $set . है , जो आपको नए फ़ील्ड जोड़ने या मौजूदा फ़ील्ड के मानों को अपडेट करने देता है। निम्न कोड आपको दिखाता है कि fiber . नामक दो नए फ़ील्ड कैसे जोड़ें और sugar उस दस्तावेज़ के लिए जिसका name फ़ील्ड "टैको" पर सेट है:

my_collection.update_one(

    { "name": "taco" }, # query

    {

        "$set": {       # new data

            "fiber": 3.95,

            "sugar": 0.9

        }

    }

)

यदि क्वेरी आप update_one() . को पास करते हैं विधि एक से अधिक दस्तावेज़ लौटाती है, केवल पहला दस्तावेज़ अपडेट किया जाता है। update_many() विधि में यह सीमा नहीं है।

अंत में, delete_one() . का उपयोग करके और delete_many() विधियों, आप अपने संग्रह में दस्तावेज़ हटा सकते हैं। दोनों विधियों को यह निर्धारित करने के लिए एक प्रश्न की आवश्यकता है कि किन दस्तावेजों को हटाने की आवश्यकता है। यहां बताया गया है कि आप उन सभी दस्तावेज़ों को कैसे हटा सकते हैं जिनकी calories फ़ील्ड को 300 से कम मान पर सेट किया गया है:

my_collection.delete_many({

    "calories": {

        "$lt": 300

    }

})



# Deletes all the three documents

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Azure तालिका बनाम MongoDB Azure पर

  2. किसी अन्य फ़ील्ड के मान का उपयोग करके MongoDB फ़ील्ड को अपडेट करें

  3. एसक्यूएल में नंबरों को कैसे प्रारूपित करें

  4. MongoDB के शेल में 20 से अधिक आइटम (दस्तावेज़) कैसे प्रिंट करें?

  5. मैं MongoDB में 'पसंद नहीं' ऑपरेटर का उपयोग कैसे कर सकता हूं?