131 votes

Indexation de mangouste dans le code de production

Par la Mangouste documentation pour MongooseJS et MongoDB/Node.js :

Au démarrage de votre application, la Mangouste appelle automatiquement ensureIndex pour chaque index définies dans votre schéma. Alors que nice pour le développement, il est recommandé que ce comportement est désactivé dans la production depuis la création de l'index peut causer un impact significatif sur les performances. Désactiver le comportement en définissant l' autoIndex option de votre schéma de faux.

Cela semble d'instruire la suppression de l'indexation automatique de la mangouste avant le déploiement d'optimiser la Mangouste de demander Mongo aller et le taux de désabonnement à travers tous les index de démarrage de l'application, ce qui semble de bon sens.

Quelle est la bonne façon de gérer l'indexation dans le code de production? Peut-être un script externe doit générer les index? Ou peut - ensureIndex n'est pas nécessaire si une seule demande est de la seule lecture/écriture à une collection parce qu'il continuera d'un index à chaque fois qu'un DB d'écriture se produit?

Edit: Pour compléter, MongoDB fournit une bonne documentation pour la façon de faire de l'indexation, mais pas pourquoi ou quand explicite de l'indexation des directives devrait être fait. Il me semble que les index doivent être tenus à jour par l'écrivain automatiquement des applications sur les collections avec les index existants et qu' ensureIndex est vraiment plus d'une chose une seule fois (en fait quand un nouvel indice est appliqué), auquel cas la Mangouste de l' autoIndex devrait être un no-op sous une normale de redémarrer le serveur.

144voto

JohnnyHK Points 61191

Je n'ai jamais compris pourquoi la Mangouste de la documentation, aussi largement recommande de désactiver autoIndex de la production. Une fois que l'index a été ajouté, à la suite ensureIndex appels va simplement voir que l'indice existe déjà, et ensuite de retour. Elle n'a donc qu'un effet sur les performances lorsque vous êtes le premier création de l'index, et à cette époque, les collections sont souvent vide, afin de créer un index serait rapide de toute façon.

Ma suggestion est de quitter autoIndex activé sauf si vous avez une situation où il est en vous donnant de la peine, comme si vous voulez ajouter un nouvel index pour une collection existante qui a des millions de docs et vous voulez plus de contrôle sur le moment où il est créé.

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