Étant donné que MongoDB est la base de données préférée de nombreux développeurs, il n'est pas surprenant que le support de la communauté soit excellent. Vous pouvez trouver rapidement des réponses à la plupart de vos problèmes sur des sites de connaissances comme Stack Overflow, mais la communauté crée également de nombreux outils, scripts et frameworks autour de MongoDB.
ClusterControl fait partie des outils communautaires qui vous permettent de déployer, surveiller, gérer et faire évoluer n'importe quelle topologie MongoDB. ClusterControl est conçu autour du cycle de vie de la base de données, mais il ne peut naturellement pas couvrir tous les aspects d'un cycle de développement. Ce billet de blog couvrira une sélection d'outils communautaires qui peuvent être utilisés pour compléter ClusterControl dans la gestion d'un cycle de développement.
Gestion des schémas
La douleur des changements de schéma dans les RDBMS conventionnels a été l'un des moteurs de la création de MongoDB :nous avons tous souffert de migrations de schéma douloureusement lentes ou échouées. Par conséquent, MongoDB a été développé avec une conception de document sans schéma. Cela vous permet de modifier votre schéma quand vous le souhaitez, sans que la base de données ne vous retienne.
Les modifications de schéma sont généralement apportées chaque fois qu'il y a un développement d'application. L'ajout de nouvelles fonctionnalités à des modules existants ou la création de nouveaux modules peut impliquer la création d'une autre version de votre schéma. De plus, les optimisations de schéma et de performances peuvent créer de nouvelles versions de vos schémas.
Même si beaucoup de gens diront que c'est génial de ne pas être retenu par la base de données, cela pose également quelques problèmes :puisque les anciennes données ne sont pas migrées vers la nouvelle conception de schéma, votre application devrait être capable de gérer chaque version de schéma que vous avoir dans votre base de données. Vous pouvez également mettre à jour toutes les (anciennes) données avec le nouveau schéma juste après avoir déployé l'application.
Les outils abordés dans cette section seront tous très utiles pour résoudre ces problèmes de schéma.
Collection Meteor2
Le module de collecte Meteor2 garantira que du côté client et du côté serveur, le schéma sera validé. Cela garantira que toutes les données sont écrites conformément au schéma défini. Le module ne sera que réactif, donc chaque fois que les données ne sont pas écrites selon le schéma, un avertissement sera renvoyé.
Mangouste
Mongoose est un middleware Node.js pour la modélisation et la validation de schémas. La définition de schéma est placée dans votre application Node.js, ce qui permettra à Mongoose d'agir comme un ORM. Mongoose ne migrera pas les données existantes dans la nouvelle définition de schéma.
Schéma MongoDB
Jusqu'à présent, nous n'avons parlé que des changements de schéma, il est donc temps d'introduire MongoDB Schema. MongoDB Schema est un analyseur de schéma qui prendra un échantillon (aléatoire) de vos données et produira le schéma pour les données échantillonnées. Cela ne signifie pas nécessairement qu'il sera précis à 100 % sur son estimation de schéma.
Avec cet outil, vous pouvez vérifier régulièrement vos données par rapport à votre schéma et détecter des changements importants ou involontaires dans votre schéma.
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 gratuitementSauvegardes
ClusterControl prend en charge deux implémentations pour la sauvegarde de MongoDB :mongodump et Percona Consistent Backup. Néanmoins, certaines fonctionnalités utilisées moins régulièrement, telles que les sauvegardes partielles/incrémentielles et les sauvegardes en continu vers d'autres clusters, ne seront pas disponibles immédiatement.
Sauvegarde MongoDB
MongoDB Backup est une solution de sauvegarde logique NodeJS qui offre des fonctionnalités similaires à mongodump. En plus de cela, il peut également diffuser des sauvegardes sur le réseau, ce qui le rend utile pour transporter une collection d'une instance MongoDB à une autre.
Une autre fonctionnalité utile est qu'il a été écrit en NodeJS. Cela signifie qu'il sera très facile à intégrer dans un chatbot Hubot, et à automatiser les transferts de collecte. N'ayez pas peur si votre entreprise n'utilise pas Hubot comme chatbot :il peut également fonctionner comme un webhook ou être contrôlé via la CLI.
Mongob
Mongob est une autre solution de sauvegarde logique, mais dans ce cas, elle a été écrite en Python et n'est disponible qu'en tant qu'outil CLI. Tout comme MongoDB Backup, il est capable de transférer des bases de données et des collections entre les instances MongoDB, mais en plus de cela, il peut également limiter le taux de transfert.
Une autre fonctionnalité utile de Mongob est qu'il pourra créer des sauvegardes incrémentielles. C'est bien si vous souhaitez avoir des sauvegardes plus compactes, mais aussi si vous avez besoin d'effectuer une restauration ponctuelle.
Strates de MongoRocks
MongoRocks Strata est l'outil de sauvegarde du moteur de stockage MongoRocks. Percona Server pour MongoDB inclut le moteur de stockage MongoRocks, mais il lui manque l'outil de sauvegarde Strata pour effectuer des sauvegardes au niveau des fichiers. En principe, mongodump et Percona Consistent Backup sont capables de faire des sauvegardes fiables, mais comme ce sont des vidages logiques, le temps de récupération sera long.
MongoRocks est un moteur de stockage qui s'appuie sur une architecture arborescente LSM. Cela signifie essentiellement qu'il s'agit d'un stockage d'ajout uniquement. Pour ce faire, il fonctionne avec des compartiments de données :les données plus anciennes seront stockées dans des compartiments plus grands (archives), les données récentes seront stockées dans des compartiments plus petits (récents) et toutes les nouvelles données entrantes seront écrites dans un compartiment mémoire spécial. . Chaque fois qu'un compactage est effectué, les données sont transmises du bucket de mémoire aux buckets récents, et les données récemment modifiées sont renvoyées au bucket d'archives.
Pour effectuer une sauvegarde de tous les compartiments, Strata demande à MongoDB de vider le compartiment de mémoire sur le disque, puis il copie tous les compartiments de données au niveau du fichier. Cela créera une sauvegarde cohérente de toutes les données disponibles. Il sera également possible de demander à Strata de ne copier que les buckets récents et d'effectuer effectivement une sauvegarde incrémentielle.
Un autre bon point de Strata est qu'il fournit le binaire mongoq, qui permet d'interroger directement les sauvegardes. Cela signifie qu'il n'est pas nécessaire de restaurer la sauvegarde sur une instance MongoDB, avant de pouvoir l'interroger. Vous seriez en mesure de tirer parti de cette fonctionnalité pour envoyer vos données de production hors ligne vers votre système d'analyse !
Interfaces graphiques MongoDB
Dans ClusterControl, nous permettons d'interroger les bases de données et les collections MongoDB via des conseillers. Ces conseillers peuvent être développés dans l'interface ClusterControl Developer Studio. Nous ne proposons pas d'interface directe avec les bases de données, donc pour apporter des modifications à vos données, vous devrez soit vous connecter au shell MongoDB, soit disposer d'un outil qui vous permet d'effectuer ces modifications.
Administrateur PHPMo
PHPMoAdmin est l'équivalent MongoDB de PHPMyAdmin. Il présente des fonctionnalités similaires à PHPMyAdmin :gestion des données et de l'administration. L'outil vous permettra d'effectuer des opérations CRUD dans la syntaxe JSON et PHP sur toutes les bases de données et collections. En plus de tout cela, il dispose également d'une fonctionnalité d'importation/exportation de votre sélection de données actuelle.
Mongo Express
Si vous recherchez un navigateur de données polyvalent, Mongo-Express est un outil que vous devez absolument découvrir. Non seulement il permet des opérations similaires à PHPMoAdmin, mais il est également capable d'afficher des images et des vidéos en ligne. Il prend même en charge la récupération d'objets volumineux à partir de compartiments GridFS.
Robomongo
L'outil qui va encore plus loin est Robomongo. Étant un outil financé par la foule, la liste des fonctionnalités est énorme. Il est capable d'effectuer toutes les mêmes opérations que Mongo-Express, mais en plus de cela, il permet également la gestion des utilisateurs, des rôles et des collections. Pour les connexions, il prend en charge les connexions MongoDB directes, mais prend également en charge les topologies replicaSet et les instances MongoDB Atlas.
Conclusion
Avec cette sélection d'outils communautaires gratuits, nous espérons vous avoir donné un bon aperçu de la gestion des données MongoDB à côté de ClusterControl.
Bon regroupement !