Jaka jest najlepsza praktyka dla połączeń MongoDB w Node.js?

Jest to dla mnie trochę niejasne (dopiero zaczynam pracę z Node i Mongo) i naprawdę mnie to dotyczy ze względu na wydajność serwera i obciążenie (co chyba jest kolejnym pytaniem, ale dojdę do tego w koniec postu).

Zakładając, że piszę API z Node.js i Restify, gdzie każdy punkt końcowy API odpowiada funkcji, powinienem:

za) otwórz połączenie db i przechowuj je w globalnym var, a następnie użyj tego w każdej funkcji?
Przykład:

// 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) otwórz połączenie db i po prostu umieść wszystko w jednym gigantycznym zamknięciu?
Przykład:

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

do) otwierać i zamykać db za każdym razem, gdy jest to potrzebne?
Przykład:

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

Ten ostatni jest tym, co zrobiłbym z intuicji, ale jednocześnie nie czuję się w pełni komfortowo. Czy nie obciąża to zbytnio serwera Mongo? Zwłaszcza kiedy (i mam nadzieję, że do tego dojdę) setki - jeśli nie tysiące - połączeń w ten sposób?

Z góry dziękuję.

questionAnswers(2)

yourAnswerToTheQuestion