यह ऐसा कुछ है जो मेरे लिए थोड़ा अस्पष्ट है (मैं सिर्फ नोड और मोंगो के साथ शुरू कर रहा हूं), और यह वास्तव में सर्वर प्रदर्शन और तनाव के कारण मुझे चिंतित करता है (जो मुझे लगता है कि एक और सवाल है, लेकिन मैं कि पद के अंत में)।Node.js पर MongoDB कनेक्शन के लिए सबसे अच्छा अभ्यास क्या है?
तो, यह सोचते हैं मैं Node.js और Restify, जहां प्रत्येक एपीआई endpoint एक समारोह से मेल खाती है के साथ एक एपीआई लिख रहा हूँ, चाहिए मैं:
क) db कनेक्शन खोलने और एक वैश्विक में संग्रहीत var, और फिर बस हर समारोह में इसका उपयोग करें?
उदाहरण:
// requires and so on leave me with a db var, assume {auto_reconnect: true}
function openDB() {
db.open(function(err, db) {
// skip err handling and so on
return db;
}
}
var myOpenDB = openDB(); // use myOpenDB in every other function I have
ख) db कनेक्शन खोलने और फिर बस एक विशाल बंद में सब कुछ डाल दिया?
उदाहरण:
// same as above
db.open(function(err, db) {
// do everything else here, for example:
server.get('/api/dosomething', function doSomething(req, res, next) { // (server is an instance of a Restify server)
// use the db object here and so on
});
}
ग) खुला और डाटाबेस हर बार यह आवश्यक है बंद?
उदाहरण:
// again, same as above
server.get('/api/something', function doSomething(req, res, next) {
db.open(function(err, db) {
// do something
db.close();
});
});
server.post('/api/somethingelse', function doSomethingElse(req, res, next) {
db.open(function(err, db) {
// do something else
db.close();
});
});
यह पिछले एक मैं अंतर्ज्ञान से बाहर क्या करेंगे है, लेकिन एक ही समय में मैं पूरी तरह से आराम से यह कर नहीं लग रहा है। क्या यह मोंगो सर्वर पर ज्यादा तनाव नहीं डालता है? विशेष रूप से जब (और मुझे उम्मीद है कि मैं उस पर पहुंच जाऊंगा) यह सैकड़ों हो जाता है - अगर हजारों नहीं - इस तरह की कॉल?
अग्रिम धन्यवाद। (दी इस बहुत संभावना नहीं है)
ध्यान दें कि विकल्प बी के लिए, आप आसानी से नामित कार्यों का उपयोग करके बड़े पैमाने पर बंद होने से बच सकते हैं, इस प्रकार कॉलबैक नरक से परहेज कर सकते हैं। उस ने कहा, यदि आप नोड का उपयोग कर रहे हैं, तो आप मॉड्यूल का उपयोग कर रहे हैं (मुझे उम्मीद है!) जिसका मतलब है कि (कुछ छोटी संख्या घोषित!) वैश्विक चर है - वे किसी और के नामस्थान को प्रदूषित नहीं करेंगे, क्योंकि कुछ भी नहीं छोड़ता है आपके मॉड्यूल के निर्यात को छोड़कर '.js' फ़ाइल। – Gijs
धन्यवाद! तो क्या आप सुझाव देते हैं कि मैं विकल्प बी का उपयोग करता हूं? मैं ड्राइवर के [Google समूह] (https://groups.google.com/forum/?fromgroups#!forum/node-mongodb-native) के आस-पास खुदाई कर रहा हूं और हर कोई ऐसा लगता है कि कुछ प्रकार के कनेक्शन पुनः उपयोग (उनमें से ज्यादातर वास्तव में विकल्प बी जैसे कुछ सुझाव देते हैं)। – ArturoVM
दूसरी ओर, मैंने कहीं पढ़ा है कि एक ही कनेक्शन के तहत सब कुछ कर रहा है, नोड की एसिंक प्रकृति के उद्देश्य को हरा रहा है। – ArturoVM