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

Un aperçu du moteur de stockage WiredTiger pour MongoDB

Chaque système de base de données a un composant structuré qui est chargé de maintenir la façon dont les données sont stockées et servies à la fois en mémoire et sur disque. Ceci est souvent appelé un moteur de stockage. Plus souvent, lors de l'évaluation de l'architecture des bases de données opérationnelles, les développeurs prennent en compte des facteurs de première main tels que la modélisation des données, la latence réduite, les opérations de débit améliorées, la cohérence des données, la facilité d'évolutivité et la tolérance minimale aux pannes. Malgré cela, il faut avoir une connaissance détaillée et avancée du moteur de stockage sous-jacent pour un meilleur réglage afin qu'il réponde efficacement aux facteurs mis en évidence.

Un cycle simple d'une application au système de base de données est illustré ci-dessous...

Exemple d'architecture d'application courante

Moteur de stockage WiredTiger

MongoDB prend principalement en charge 3 moteurs de stockage dont les performances diffèrent en fonction de certaines charges de travail spécifiques. Les moteurs de stockage sont :

  1. Moteur de stockage WiredTiger
  2. Moteur de stockage en mémoire
  3. Moteur de stockage MMAPv1

Le moteur de stockage WiredTiger a à la fois des configurations d'un moteur basé sur B-Tree et d'un moteur basé sur un arbre de fusion structuré de journaux.

Moteur basé sur B-Tree

C'est l'un des anciens moteurs de stockage dont dérivent d'autres configurations sophistiquées. C'est une structure de données arborescente auto-équilibrée qui assure le tri des données et permet les recherches, les accès séquentiels, les insertions et les suppressions de manière logarithmique. Il s'agit d'un stockage basé sur les lignes, de sorte que chaque ligne est considérée comme un seul enregistrement dans la base de données

Avantages d'un moteur de stockage B-Tree

  • Lectures à haut débit et à faible latence. Les arbres B ont tendance à devenir larges et peu profonds, de sorte que très peu de nœuds sont traversés.
  • Conserve les clés dans un ordre trié pour un parcours séquentiel et les index sont équilibrés avec un algorithme récursif.
  • Les nœuds de stockage intérieurs sont toujours maintenus au moins à moitié pleins, ce qui réduit généralement le gaspillage.
  • Gestion facile d'un grand nombre d'insertions et de suppressions en peu de temps.
  • L'indexation hiérarchique est utilisée dans le but de réduire les lectures de disque.
  • Accélère les insertions et les suppressions grâce à l'utilisation de blocs partiellement pleins.

Limitations d'un moteur de stockage B-Tree

  • Performances d'écriture médiocres en raison de la nécessité de garantir une structure de données bien ordonnée avec des écritures aléatoires. Les écritures aléatoires sont plus coûteuses que les écritures séquentielles sur le stockage.
  • Pénalité de prêt-modification-écriture d'un bloc entier même pour une mise à jour mineure d'une ligne dans un bloc.

Moteur basé sur un arbre de fusion structuré de journaux

En raison des faibles performances d'écriture du moteur basé sur B-Tree, les développeurs ont dû trouver un moyen de gérer des ensembles de données plus volumineux vers le SGBD. Le Log Structured Merge Tree Based Engine (LSM Tree) a donc été créé pour améliorer les performances de l'accès indexé aux fichiers avec un volume d'écriture élevé sur une période prolongée. Dans ce cas, les écritures aléatoires au premier étage de la mémoire en cascade sont transformées en écritures séquentielles au niveau du premier composant basé sur disque.

Les mérites d'un moteur de stockage arborescent LSM

  • La possibilité d'effectuer des écritures séquentielles rapides améliore la gestion rapide des données volumineuses à croissance rapide.
  • Bien adapté au stockage hiérarchisé, offrant ainsi aux organisations une meilleure sélection en termes de coût et de performances. Les SSD basés sur Flash offrent d'excellentes performances dans ce cas.
  • Meilleure efficacité de compression et de stockage, ce qui permet d'économiser de l'espace de stockage et d'améliorer le stockage presque complet
  • Les données sont toujours disponibles pour une requête immédiate.
  • Les insertions sont très rapides.

Limites d'un moteur de stockage B-Tree

Consomme plus de mémoire que B-Tree lors des opérations de lecture en raison de l'amplification de la lecture et de l'espace. Cependant, certaines approches telles que les filtres bloom ont atténué cet effet dans la pratique, de sorte que le nombre de fichiers à vérifier lors d'une requête ponctuelle est réduit.

La technologie WiredTiger a été conçue de manière à utiliser à la fois les avantages de B-Tree et de LSM, ce qui en fait un moteur de stockage sophistiqué et le meilleur pour MongoDB. L'informatique est en fait le moteur de stockage par défaut de MongoDB.

Plusieursnines Devenez un administrateur de base de données MongoDB – Amener MongoDB en productionDécouvrez ce que vous devez savoir pour déployer, surveiller, gérer et faire évoluer MongoDBDélécharger gratuitement

Architecture du moteur de stockage WiredTiger

Comme mentionné ci-dessus, il implique le concept de deux moteurs de stockage de base, à savoir les moteurs B-Tree et LSM Tree, il s'agit donc d'un moteur de stockage de contrôle de concurrence multiversion (MVCC). Les mérites des deux combinés permettent au système de voir un instantané de la base de données au moment où il accède à une collection. Les points de contrôle sont établis de manière à ce qu'une vue cohérente des données soit enregistrée sur le disque entre les points de contrôle. En cas de crash entre les points de contrôle, il est facile de récupérer avec ces points de contrôle ou plutôt, même s'il n'y a pas de points de contrôle pour les données, on peut les récupérer à partir des fichiers journaux du disque.

Utilisation intensive du cache plutôt que du disque pour améliorer la faible latence. Le moteur de stockage WiredTiger s'appuie fortement sur le cache de page du système d'exploitation, de sorte que les données compressées sont récupérées sans impliquer le disque. De plus, les données les moins récemment utilisées sont effacées de la RAM, préservant ainsi plus d'espace pour le cache.

Le concept de stockage B-Tree offre des lectures très efficaces et de bonnes performances d'écriture avec une faible utilisation du processeur. Il dispose également d'une implémentation de verrouillage au niveau du document qui permet des charges de travail hautement simultanées et cette simultanéité permet par conséquent au serveur de tirer parti de nombreux processeurs principaux. En général, toutes ces thèses améliorent la grande évolutivité de la base de données.

L'édition entreprise prend en charge le chiffrement sur disque pour le moteur de stockage WiredTiger, une fonctionnalité qui améliore considérablement la sécurité des données.

Le moteur de stockage WiredTiger permet une journalisation en écriture anticipée qui assure une récupération automatique en cas de crash et rend les écritures durables.

Avantages du moteur de stockage WiredTiger

  • Stockage efficace grâce à plusieurs technologies de compression telles que les compressions Snapp, gzip et préfixe.
  • Il est hautement évolutif avec des lectures et des écritures simultanées. Cela améliore en fin de compte le débit et les performances générales de la base de données.
  • Assurez la durabilité des données grâce à un journal à écriture anticipée et à l'utilisation de points de contrôle
  • Utilisation optimale de la mémoire. Le WiredTiger utilise à la fois le cache interne et le cache du système de fichiers.
  • Avec le cache du système de fichiers, MongoDB peut facilement utiliser la mémoire libre qui n'est pas utilisée par le cache WiredTiger.

Revers du moteur de stockage WiredTiger

Difficultés à mettre à jour les données. Le schéma de concurrence empêche les mises à jour sur place, de sorte que la mise à jour d'une valeur de champ dans un document réécrit l'intégralité du document.

Conclusion

Le moteur de stockage WiredTiger intègre les concepts de deux principaux moteurs de stockage, le moteur de stockage arborescent B-Tree et LSM pour obtenir des performances maximales et optimales. Peser les avantages des deux cas et les utiliser collectivement fait de WiredTiger un moteur de stockage à usage général. Pour cette raison, dans les versions actuelles de MongoDB, il s'agit du moteur de stockage par défaut. Cela signifie que si vous n'avez vraiment pas de bonnes raisons de le détester, alors c'est le meilleur pour vos données. Cependant, le choix du moteur de stockage dépend fortement de votre cas d'utilisation des données ou plutôt là où le WiredTiger ne peut pas répondre à vos attentes. En général, il s'agit du meilleur moteur de stockage par défaut.