349 votes

Comment gérer les connexions mongodb dans une webapp nodejs?

Je suis en utilisant le nœud-mongodb-native pilote avec mongodb pour écrire un site web.

J'ai quelques questions sur la façon de gérer les connexions:

  1. Est-il suffisamment l'aide d'une seule connexion mongodb pour toutes les demandes? Est-il des problèmes de performances? Si non, puis-je configurer une connexion globale à utiliser dans l'ensemble de l'application?

  2. Si non, est-ce bon si j'ouvre une nouvelle connexion lors de l'arrivée des demandes et de la fermer traitées lors de la demande? Est-ce cher pour ouvrir et fermer une connexion?

  3. Dois-je utiliser une connexion globale de la piscine? J'entends le conducteur dispose d'une connexion native de la piscine, est-ce un bon choix?

  4. Si j'utilise un pool de connexions, le nombre de connexions doit être utilisé?

  5. Est-il d'autres choses que je devrais avis?

Merci pour votre aide~

527voto

Max Points 2659

Le principal committer à nœud-mongodb-native dit:

Vous ouvrez le faire MongoClient.connecter une fois que lorsque votre application démarre et la réutilisation la db objet. Ce n'est pas un singleton, le pool de connexion de chacun .connecter crée un nouveau pool de connexion.

Donc, pour répondre directement à votre question, la réutilisation de la db objet qui résulte de MongoClient.connect(). Cela vous donne de la mise en commun, et fournir une notable augmentation de la vitesse par rapport à l'ouverture/fermeture des connexions sur chaque db d'action.

12voto

floatdrop Points 93

Si vous avez Express, vous pouvez utiliser express-mongo-db pour mettre en cache et partager la connexion mongodb entre les requêtes sans pool (puisque la réponse acceptée indique que c'est le bon moyen de partager la connexion).

Si ce n'est pas le cas, vous pouvez consulter son code source et l'utiliser dans un autre cadre.

6voto

ControlAltDel Points 7430

J'ai utilisé le pool générique avec des connexions redis dans mon application - je le recommande vivement. Son générique et je sais vraiment que cela fonctionne avec mysql, donc je ne pense pas que vous aurez des problèmes avec elle et mongo

https://github.com/coopernurse/node-pool

4voto

jibsales Points 3766

http://mongoosejs.com/docs/api.html

Découvrez la source de Mongoose. Ils ouvrent une connexion et la lient à un objet Model. Ainsi, lorsque l'objet Model est requis, une connexion est établie avec la DB. Le pilote prend en charge le regroupement des connexions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X