ServBay में MongoDB डेटाबेस स्थापित करें और प्रबंधित करें
MongoDB एक अग्रणी NoSQL डॉक्युमेंट डेटाबेस है, जो अपनी लचीलापन, शक्तिशाली क्वेरी क्षमताओं और होरिज़ॉन्टल स्केलेबिलिटी के लिए प्रसिद्ध है। यह आधुनिक एप्लिकेशन डेवलपमेंट में डेवलपर्स की पसंदीदा है। ServBay macOS डेवलपर्स को एक अभूतपूर्व इंटीग्रेटेड वातावरण प्रदान करता है, जिससे कई MongoDB वर्ज़न की स्थापना, कॉन्फ़िगरेशन और प्रबंधन सरल हो जाता है। साथ ही, इसमें सभी आवश्यक कमांड-लाइन टूल्स पहले से इंटीग्रेटेड हैं, जिससे आपको एक संपूर्ण और उत्पादक लोकल डेवलपमेंट एवं टेस्टिंग वर्कस्टेशन मिलता है।
संक्षिप्त अवलोकन: ServBay में MongoDB क्यों चुनें?
ServBay सिर्फ एक लॉन्चर नहीं है — यह एक संपूर्ण डेवलपमेंट एनवायरनमेंट मैनेजर है। MongoDB के संदर्भ में, इसका अर्थ है:
- मल्टी-वर्ज़न सपोर्ट व स्विचिंग: आप एक क्लिक में कई MongoDB वर्ज़न (जैसे 5.0, 6.0, 7.0 आदि) इंस्टॉल और चला सकते हैं, तथा प्रोजेक्ट आवश्यकताओं के अनुसार आसानी से स्विच कर सकते हैं — किसी भी एनवायरनमेंट कॉन्फ्लिक्ट की चिंता के बिना।
- ग्राफ़िकल कॉन्फ़िगरेशन: जटिल कॉन्फ़िग फाइलों को एडिट करने की आवश्यकता नहीं। ServBay के ग्राफ़िकल इंटरफ़ेस में MongoDB के पोर्ट, IP, डेटा डायरेक्ट्री आदि प्रमुख पैरामीटर को डायरेक्ट बिना परेशानी के सेट कर सकते हैं।
- इंटीग्रेटेड टूलचेन: ServBay आपको आधिकारिक MongoDB Shell (
mongosh
) और MongoDB Database Tools के साथ बिल्ट-इन सपोर्ट देता है, जिससेmongostat
,mongotop
,mongodump
औरmongorestore
जैसे टूल्स तुरंत उपलब्ध रहते हैं।
यह गाइड आपको शुरुआती से एक्सपर्ट तक की पूरी यात्रा में मार्गदर्शन देगा — इंस्टॉलेशन, कॉन्फ़िगरेशन, इंटरएक्टिव मैनेजमेंट, रीयल-टाइम परफॉर्मेंस मॉनिटरिंग, डेटा बैकअप और रीस्टोर, आदि सभी मुख्य पहलुओं को कवर करता है।
1. MongoDB सर्विस की स्थापना और कॉन्फ़िगरेशन
चरण 1: MongoDB सॉफ़्टवेयर पैकेज इंस्टॉल करें
ServBay में MongoDB सर्विस इंस्टॉल करना पहली आवश्यकता है।
ServBay एप्लिकेशन खोलें।
बायीं नेविगेशन बार में पैकेजेस (Packages) पर क्लिक करें।
पैकेज सूची में 'Databases' श्रेणी देखें, और 'MongoDB' सेक्शन खोजें।
अपने प्रोजेक्ट के अनुसार MongoDB वर्ज़न (जैसे 'MongoDB 7.0') चुनें, और दाहिनी ओर मौजूद इंस्टॉल बटन पर क्लिक करें। ServBay स्वचालित रूप से डाउनलोड और इंस्टॉलेशन पूरी कर देगा।
चरण 2: MongoDB सर्विस का विस्तारपूर्वक कॉन्फ़िगरेशन
इंस्टॉलेशन के बाद, आप MongoDB सर्विस को अपने हिसाब से सेट कर सकते हैं।
बायीं नेविगेशन बार में Databases -> MongoDB -> अपने इंस्टॉल किए गए वर्ज़न (जैसे 'MongoDB 7.0') पर क्लिक करें।
इस पेज पर, आप निम्नलिखित मुख्य सेटिंग्स को कस्टमाइज़ कर सकते हैं:
- Bind IP (बाइंड IP): यह IP ऐड्रेस है जहाँ MongoDB सर्विस नेटवर्क अनुरोधों के लिए लिसन करती है। डिफ़ॉल्ट '127.0.0.1, ::1' लोकल डेवलपमेंट के लिए सबसे सुरक्षित है — यानी सिर्फ आपके अपने कंप्यूटर के ऐप्स इस डेटाबेस से कनेक्ट हो सकते हैं।
- Bind Port (बाइंड पोर्ट): डेटाबेस कनेक्शन के लिए पोर्ट नंबर। MongoDB का डिफ़ॉल्ट पोर्ट '27017' है, जब तक कोई खास आवश्यकता न हो, इसे न बदलें।
- Socket: यह Unix सॉकेट फ़ाइल का पथ है, लोकल कनेक्शनों के लिए यह TCP/IP नेटवर्क की तुलना में अधिक तेज़ एवं एफिशिएंट है।
- Data dir (डेटा डाइरेक्ट्री): MongoDB सभी डेटाबेस फ़ाइलों (जैसे संग्रह, इंडेक्स आदि) को इस लोकल डायरेक्ट्री में सेव करता है। ServBay उचित डिफ़ॉल्ट मान सेट करता है। फोल्डर आइकन पर क्लिक करके आप Finder में डायरेक्ट्री देख सकते हैं।
- Additional Parameters (अतिरिक्त पैरामीटर): यह एडवांस्ड सेटिंग्स के लिए है, जैसे कि अगर आप एक्सेस कंट्रोल चालू करना चाहते हैं तो
--auth
जोड़ सकते हैं।
चरण 3: MongoDB सर्विस शुरू करें
- सारी सेटिंग्स करने के बाद, Save (सहेजें) बटन को निचले दाएं कोने में क्लिक करें।
- Packages पेज पर लौटें, अपने सेट किए गये MongoDB वर्ज़न को खोजें, और उसके दाएं तरफ ग्रे स्विच को 'ऑन' करें।
- जब स्विच हरा हो जाए और स्टेटस इंडिकेटर जल जाए, तो MongoDB इंस्टेंस चालू है और कनेक्शन के लिए तैयार है।
2. इंटरएक्टिव प्रबंधन: MongoDB Shell (mongosh
) का उन्नत उपयोग
mongosh
MongoDB का आधिकारिक, आधुनिक कमांड-लाइन इंटरफ़ेस है: इसमें सिंटैक्स हाइलाइटिंग, स्मार्ट ऑटो-कंप्लीशन, कमांड हिस्ट्री और स्क्रिप्टिंग की क्षमता है। यह डेटाबेस से इंटरेक्शन के लिए पसंदीदा टूल है।
MongoDB Shell इंस्टॉल करना
ServBay, mongosh
को एक अलग पैकेज के तौर पर प्रदान करता है, जिसे आप आवश्यकता अनुसार इंस्टॉल कर सकते हैं।
- Packages पेज में, 'MongoDB Shell' खोजें।
- दाहिनी ओर इंस्टॉल बटन दबाएँ। इंस्टॉल पूरा होते ही, ServBay की टर्मिनल व्यवस्था में
mongosh
कमांड हर जगह उपलब्ध हो जाएगी।
mongosh
का उपयोग कैसे करें
आप ServBay द्वारा मैनेज्ड किसी भी टर्मिनल (जैसे macOS का Terminal या iTerm2) में mongosh
का प्रयोग कर सकते हैं।
बेसिक कनेक्शन: टर्मिनल खोलें और इस आसान कमांड से अपने लोकल '27017' पोर्ट पर चल रहे MongoDB इंस्टेंस से कनेक्ट करें:
bashmongosh
1आप साफ़ और पूरा कनेक्शन स्ट्रिंग भी भर सकते हैं:
bashmongosh "mongodb://127.0.0.1:27017"
1इंटरएक्टिव ऑपरेशन्स के उदाहरण (CRUD डेमो): कनेक्शन सफल होने पर, आप एक शक्तिशाली इंटरएक्टिव जावास्क्रिप्ट वातावरण में आ जाएंगे। उदाहरण के तौर पर:
चरण 1: डेटाबेस चुनें या नया बनाएं
javascript// यह कमांड आपको servbay-demo डेटाबेस पर स्विच कर देगी। अगर यह डेटाबेस अभी नहीं है, तो पहली बार डेटा लिखने पर वह खुद ही बन जाएगा। use servbay-demo
1
2चरण 2: संग्रह (कलेक्शन) बनाएं और डेटा डालें (Create)
javascript// एक यूज़र डॉक्युमेंट जोड़ना db.users.insertOne({ _id: 1, name: "Alice", email: "alice@servbay.demo", age: 30, tags: ["developer", "php", "backend"], joined_date: new Date("2023-01-15") }) // कई यूज़र्स डालना, विविध क्वेरी के लिए db.users.insertMany([ { _id: 2, name: "Bob", email: "bob@servbay.demo", age: 25, tags: ["designer", "ui", "frontend"] }, { _id: 3, name: "Charlie", email: "charlie@servbay.demo", age: 35, tags: ["developer", "python", "data"] }, { _id: 4, name: "Diana", email: "diana@servbay.demo", age: 29, tags: ["developer", "nodejs", "backend"] } ])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16चरण 3: डेटा पढ़ना (Read)
javascript// सभी डॉक्युमेंट्स देखें। .pretty() से आउटपुट सुंदर दिखाई देगा। db.users.find().pretty() // फिल्टर करके: 28 वर्ष से ऊपर एवं 'developer' टैग वाले यूज़र db.users.find({ age: { $gt: 28 }, tags: "developer" }) // सिर्फ नाम और ईमेल लाना db.users.find({}, { name: 1, email: 1, _id: 0 })
1
2
3
4
5
6
7
8चरण 4: डेटा अपडेट करना (Update)
javascript// एक डॉक्युमेंट को बदलना: Alice के टैग्स में 'lead' जोड़ना और उसकी उम्र बदलना db.users.updateOne( { name: "Alice" }, { $set: { age: 31 }, $addToSet: { tags: "lead" } } // $addToSet टैग्स दोहराए नहीं जाएगा ) // कई डॉक्युमेंट्स: सभी 'backend' डेवलपर्स में 'active' स्टेटस जोड़ना db.users.updateMany( { tags: "backend" }, { $set: { status: "active" } } )
1
2
3
4
5
6
7
8
9
10
11चरण 5: डेटा हटाना (Delete)
javascript// एक डॉक्युमेंट हटाना db.users.deleteOne({ name: "Bob" }) // हटाने के बाद वेरीफाई करें db.users.find({ name: "Bob" }).count() // यह 0 लौटाएगा
1
2
3
4
5
3. वास्तविक-समय मॉनिटरिंग और प्रबंधन: MongoDB डेटाबेस टूल्स पर महारत
ServBay ने 'MongoDB Database Tools' पैकेज भी शामिल किया है, जिसमें mongostat
, mongotop
, mongodump
और mongorestore
जैसे एडवांस्ड मैनेजमेंट और ऑपरेशंस के लिए जरूरी टूल्स होते हैं।
MongoDB Database Tools इंस्टॉल करें
- Packages पेज में 'MongoDB Database Tools' खोजें।
- दाहिनी ओर इंस्टॉल बटन दबाएं।
3.1 mongostat
से रीयल टाईम इंस्टेंस मॉनिटरिंग
mongostat
MongoDB का "ECG" है — यह हर सेकंड इंस्टेंस की मुख्य परफॉर्मेंस मीट्रिक का स्नैपशॉट दिखाता है, जिससे प्रदर्शन समस्याएँ और लोड काम्पोजिशन तुरंत पकड़ में आ सकते हैं।
मूल प्रयोग: टर्मिनल खोलें और यह कमांड चलाएं, हर सेकंड डेटा अपडेट होगा:
bashmongostat
1आप निम्न जैसा आउटपुट उदाहरण देखेंगे, हर लाइन एक समय बिंदु दर्शाती है:
insert query update delete getmore command dirty used flushes vsize res qrw arw net_in net_out conn time *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 103b 501b 4 Nov 26 15:30:00.001 *0 *0 *0 *0 0 1|0 0.0% 23.2% 0 1.29G 84.0M 0|0 1|0 71b 501b 4 Nov 26 15:30:01.001
1
2
3मुख्य कॉलम व्याख्या:
insert
,query
,update
,delete
: प्रति सेकंड संबंधित ऑपरेशन की संख्या।dirty
: कैश में संशोधित लेकिन डिस्क पर न लिखा गया डेटा अनुपात।used
: स्टोरेज इंजन द्वारा कैश का उपयोग।vsize
,res
: वर्चुअल और रेजिडेंट मेमोरी यूसेज।qrw
,arw
: कतार में प्रतीक्षारत रीड/राइट क्लाइंट्स।net_in
,net_out
: नेटवर्क इनपुट/आउटपुट।conn
: करंट एक्टिव कनेक्शन संख्या।
व्यावहारिक केस: उच्च कनकरेंट लेखन लोड मॉनिटर करें
- टर्मिनलA खोलें,
mongosh
से कनेक्ट हों, और एक लॉग इन्सर्शन स्क्रिप्ट चलाएं:javascript// mongosh में चलाएं use log_system print("Starting high-frequency log insertion...") while (true) { db.app_logs.insertOne({ level: "INFO", message: "User activity detected.", timestamp: new Date() }); sleep(50); // हर 50 मिली सेकंड में लिखें (~20 बार प्रति सेकंड) }
1
2
3
4
5
6
7 - टर्मिनलB खोलें,
mongostat
को 2 सेकंड रिफ्रेश इंटरवल के साथ चलाएं:bashmongostat 2
1 - टर्मिनलB का आउटपुट देखें, यहाँ
insert
कॉलम ~40 दिखेगा (202), जो संकेत देता है कि राइट ऑपरेशन्स का लोड मुख्यतः यही है।
- टर्मिनलA खोलें,
3.2 mongotop
से संग्रह पर रीड/राइट समय की पहचान
अगर mongostat
से पता चले "डेटाबेस बिज़ी है", तो mongotop
बताता है "कौन बिजी कर रहा है"। यह हर कलेक्शन पर रीड/राइट ऑपरेशन में लगा समय ट्रैक करता है, जिससे हॉटस्पॉट का तुरंत पता चलता है।
मूल प्रयोग: टर्मिनल में
mongotop
चलाएं। डिफ़ॉल्ट रूप से हर सेकंड रिफ्रेश:bashmongotop
1आउटपुट उदाहरण:
ns total read write time local.oplog.rs 1101ms 155ms 946ms Nov 26 15:35:00.000 servbay-app.sessions 210ms 1ms 209ms Nov 26 15:35:00.000 servbay-app.articles 15ms 15ms 0ms Nov 26 15:35:00.000
1
2
3
4मुख्य कॉलम व्याख्या:
ns
: नेमस्पेस (डेटाबेस.संग्रह)।total
: एकत्रित रीड/राइट कुल समय।read
: कलेक्शन पर पढ़ने का कुल समय।write
: कलेक्शन पर लिखने का कुल समय।
केस स्टडी: हॉटस्पॉट कलेक्शन पहचानना
- टर्मिनलA (
mongosh
) में, एक स्क्रिप्ट चलाएं जो लगातार यूज़र सेशन अपडेट करती है और कभी-कभी लेख पढ़ती है:javascript// mongosh में चलाएं use servbay_app print("Simulating application load...") // लगातार सेशन अपडेट setInterval(() => { db.sessions.updateOne({ sid: "session_abc" }, { $set: { data: Math.random() } }, { upsert: true }); }, 50); // हर 50 मिली सेकंड में // कम बार आर्टिकल्स पढ़ना setInterval(() => { db.articles.find({ tags: "featured" }).limit(5).toArray(); }, 500); // हर 500 मिली सेकंड में
1
2
3
4
5
6
7
8
9
10
11
12 - टर्मिनलB पर
mongotop
को 5 सेकंड के रिफ्रेश के साथ चलाएं:bashmongotop 5
1 - आउटपुट देखें,
servbay_app.sessions
कलेक्शन के लिएwrite
औरtotal
समय बहुत ऊँचा होगा।servbay_app.articles
के 'read' में ही गतिविधि दिखेगी — इस आधार पर, प्रदर्शन संबंधित समस्या (बॉटलनेकट) मुख्यतः सेशन्स की बार-बार लिखाई हो सकती है; सेशन प्रबंधन अनुकूलित करें।
- टर्मिनलA (
3.3 mongodump
से डेटा बैकअप
mongodump
Robust टूल है MongoDB डेटा का बाइनरी (BSON) बैकअप बनाने के लिए।
- केवल एक डेटाबेस बैकअप:bash
mongodump --db servbay-demo --out /Applications/ServBay/backup/mongodb/servbay-demo-backup-$(date +%F)
1 - केवल एक संग्रह (कलेक्शन) बैकअप:bash
mongodump --db servbay-demo --collection users --out /Applications/ServBay/backup/mongodb/users-backup
1 - पूरे MongoDB इंस्टेंस (सभी डेटाबेस) का बैकअप:bash
mongodump --out /Applications/ServBay/backup/mongodb/full-instance-backup
1
3.4 mongorestore
से डेटा पुनर्स्थापना (रीस्टोर)
mongorestore
'mongodump' से बनाए गये बैकअप को पुनः MongoDB इंस्टेंस में डालने के लिए है।
- एक डेटाबेस पुनर्स्थापित करें:bash
# --drop विकल्प डिस्टीनेशन डेटाबेस के कलेक्शंस को पहले साफ़ करता है mongorestore --drop --db servbay-demo /Applications/ServBay/backup/mongodb/servbay-demo-backup-2023-11-26/servbay-demo/
1
2 - एक बैकअप संग्रह को नया कलेक्शन बनाकर आयात करें:bash
mongorestore --db servbay-demo --collection users_restored /Applications/ServBay/backup/mongodb/users-backup/users.bson
1
4. ग्राफिकल इंटरफ़ेस टूल (GUI) से कनेक्ट करें
कमांड लाइन के अलावा, आप किसी भी लोकप्रिय MongoDB ग्राफिकल टूल्स का उपयोग करके ServBay के डेटाबेस से जुड़ और प्रबंध कर सकते हैं। यह डेटा ब्राउज़िंग एवं एग्रीगेशन पाइपलाइन बनाने के लिए सुविधाजनक है। सिफारिशी टूल्स हैं MongoDB Compass, TablePlus, या Studio 3T।
कनेक्ट करते समय, अपने GUI टूल में निम्न सेटिंग्स भरें:
- Host (होस्ट):
127.0.0.1
- Port (पोर्ट):
27017
- Authentication (प्रमाणीकरण): जब तक आपने अतिरिक्त पैरामीटर्स में
--auth
जोड़कर यूज़र नहीं बनाया है, इस फ़ील्ड को खाली छोड़ दें।
निष्कर्ष
ServBay ने macOS की सहजता के साथ MongoDB की शक्तिशाली क्षमताओं को जोड़ते हुए डेवलपर्स के लिए बेजोड़ लोकल डेवलपमेंट ईकोसिस्टम पेश किया है। इस गाइड की मदद से आप न केवल MongoDB इंस्टॉल और रन करना सीख चुके हैं, बल्कि mongosh
से एडवांस्ड प्रबंधन, mongostat
और mongotop
से पेशेवर स्तर का रीयल-टाइम मॉनिटरिंग और mongodump
/mongorestore
से सुरक्षित डेटा बैकअप व पुनर्स्थापना भी सरलता से कर सकते हैं। अब आप पूरी आत्मविश्वास से अपने अगले प्रोजेक्ट में MongoDB का अत्यंत कुशलतापूर्वक उपयोग कर सकते हैं।