MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Les dangers de la création d'index sur MongoDB

Les index sont une partie essentielle de toute opération de base de données. Définir les bons index peut faire une énorme différence dans les performances de vos serveurs de base de données. Cependant, la création d'index dans MongoDB présente plusieurs pièges dont vous devez être conscient pour vos opérations quotidiennes. MongoDB à un niveau élevé prend en charge trois techniques pour créer des index sur vos collections.

1. Création d'un index de premier plan

Lorsque vous créez un index au premier plan, il bloque toutes les autres opérations sur la base de données ; sur une grande collection, cela peut prendre plusieurs heures. Cela implique que votre base de données est indisponible pendant toute la durée de la construction de l'index. Étant donné qu'il s'agit du mode par défaut de création d'index, il n'est pas surprenant que de nombreux développeurs se tirent une balle dans le pied en déclenchant des constructions d'index accidentelles. Il n'y a vraiment aucune bonne raison de déclencher une construction d'index de premier plan sur un serveur de production (sauf si vous savez que la collection contient une petite quantité de données).

2. Création d'un index d'arrière-plan

Comme son nom l'indique, le processus d'indexation en arrière-plan crée l'index en arrière-plan sans affecter la disponibilité de votre serveur de base de données. Cependant, il s'agit toujours d'une opération gourmande en ressources et vous devez vous attendre à une dégradation des performances. De plus, comme cela se produit en arrière-plan, la construction peut prendre beaucoup plus de temps que les index de premier plan. Dans les versions précédentes de MongoDB (<2.6), lorsque vous faisiez une construction d'index en arrière-plan sur le primaire d'un jeu de réplicas, il s'exécutait en tant que construction "de premier plan" sur les serveurs secondaires, heureusement ce n'est plus le cas - c'est une construction en arrière-plan sur tous les nœuds. Si une construction d'index en arrière-plan est interrompue, elle reprendra en tant que construction d'index de premier plan au redémarrage du serveur.

3. Création d'un index glissant

Le processus de création d'index glissant crée l'index sur un seul nœud à la fois. Ça donne quelque chose comme ça :

  1. Faites pivoter un nœud secondaire hors du jeu de répliques (vous pouvez le faire en modifiant les ports ou en redémarrant en mode autonome).
  2. Construisez l'index sur ce nœud au premier plan. Une fois l'index créé, faites pivoter le nœud dans le jeu de réplicas.
  3. Une fois que le nœud a rattrapé les changements, passez au nœud suivant. Si le nœud suivant est le nœud principal, vous devrez faire un rs.stepDown() pour en faire un secondaire.
  4. Rincer et répéter.

Plus de détails sur le processus de création d'index sont dans la documentation MongoDB.

Les constructions d'index glissants vous permettent de créer un index sans impact significatif sur les performances de votre application. Cependant, il y a un basculement impliqué - donc votre application devrait être capable de gérer cela (ce dont elle a besoin de toute façon).

Pouvez-vous créer un index glissant si vous n'avez pas de jeu de réplicas ? Malheureusement pour les instances autonomes, la seule option est une "construction d'index en arrière-plan".

La construction d'index glissants est notre approche préférée pour créer des index chez ScaleGrid. Nous fournissons même une interface utilisateur et vous facilitons le lancement de l'ensemble du processus à partir de notre interface utilisateur. Notre backend fera toute l'orchestration nécessaire pour la construction complète de l'index - il déclenchera une construction d'index serveur par serveur. Il vous suffit de vous installer avec nous, puis de pointer et de cliquer !

Comme toujours, si vous avez d'autres questions, vous pouvez nous contacter à [email protected].