Was ist die beste Vorgehensweise für MongoDB-Verbindungen auf Node.js?

Dies ist mir etwas unklar (ich fange gerade mit Node und Mongo an), und es betrifft mich wirklich wegen der Serverleistung und -belastung (was ich denke, ist eine andere Frage, aber ich komme dazu auf das Ende des Beitrags).

Angenommen, ich schreibe eine API mit Node.js und Restify, wobei jeder API-Endpunkt einer Funktion entspricht, sollte ich:

ein) öffne die db verbindung und speichere sie in einer globalen var, und benutze das dann einfach in jeder funktion?
Beispiel:

// 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

b) die db verbindung öffnen und dann einfach alles in einen riesigen verschluss stecken?
Beispiel:

// 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
    });
}

c) die db jedes mal öffnen und schließen, wenn sie benötigt wird?
Beispiel:

// 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();
    });
});

Letzteres ist das, was ich aus Intuition machen würde, aber gleichzeitig fühle ich mich nicht ganz wohl dabei. Wird der Mongo-Server nicht zu stark belastet? Vor allem, wenn (und ich hoffe, dass ich dazu komme) es hunderte - wenn nicht tausende - solcher Anrufe gibt?

Danke im Voraus.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage