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

L'exécution d'une mise à jour partielle sur un document MongoDb dans WiredTiger offre-t-elle un avantage par rapport à une mise à jour complète du document ?

WiredTiger utilise Multiversion Concurrency Control (MVCC) pour conserver plusieurs vues des données pendant toute la durée de vie des lecteurs. Le format en mémoire de WiredTiger est différent du format sur disque :en mémoire, il stocke les différences avec un document, mais une version complète du document est construite lorsqu'elle est vidée dans les fichiers de données dans le cadre de points de contrôle périodiques.

Indépendamment de la manière dont les différents moteurs de stockage MongoDB gèrent les mises à jour persistantes sur le disque, l'utilisation de mises à jour partielles plutôt que de mises à jour complètes présente toujours des avantages en termes de performances (en particulier si vous définissez des valeurs de champ qui sont petites par rapport à la taille globale du document).

Par exemple, considérez :

  • Trafic réseau pour les mises à jour de documents (tout moteur de stockage)
  • Taille des entrées dans le journal (tout moteur de stockage)
  • Taille des entrées dans oplog de réplication (tout moteur de stockage)
  • Taille des versions en mémoire des mises à jour (WiredTiger)

Si vous envoyez à chaque fois des mises à jour complètes de documents, vous créez également des scénarios dans lesquels l'ordre dans lequel les mises à jour atteignent le serveur est significatif, même lorsque les modifications peuvent concerner des ensembles de champs distincts. Vous pouvez ajouter une logique d'application supplémentaire telle qu'une gestion des versions optimiste pour vous assurer de ne pas écraser accidentellement les valeurs de champ, mais cela peut ajouter une complexité inutile en fonction de votre cas d'utilisation.