Quel client pour MongoDB ?

mongodb-nosql-logo

Débutant sur MongoDB, la première question qui se pose suite à la prise en main en ligne de commande est sur le choix du client.

Nous ne verrons pas ici ce qu’est MongoDB ou comment cette base de données NoSQL fonctionne. Mais nous nous pencherons sur les différents clients disponibles pour faciliter son utilisation.

J’ai sur une base de données locale différentes collections de documents créées via la console. La ligne de commande c’est bien, mais il faut l’avouer pas idéal pour se représenter le contenu d’une base de données. J’ai donc cherché un client pour utiliser MongoDB, et il y a du choix.

Je vais vous présenter ceux que j’ai testés (tous en version gratuite).

Quel que soit le client, se connecter à ma base locale s’est fait très simplement et j’ai tout de suite retrouvé mes collections et documents existants.

COMPASS

Je vais commencer par le client fourni sur le site de MongoDB, Compass : Compass

Premier bémol, il est disponible pour Windows ou MacOS mais pas pour Linux. Pour pouvoir le télécharger, il faudra lui donner vos informations personnelles (mail, nom, prénom, entreprise).

Lors du premier lancement, un petit tutoriel rapide explique l’IHM, c’est simple et assez clair, à l’image du client.

Compass a un design récent et donc plus “beau” que les autres clients testés. Il est intuitif, simple d’utilisation mais propose peu de fonctionnalités.

Il permet de visualiser simplement et rapidement ses documents. Il propose une IHM pour ajouter 1 document à la collection, sans avoir à écrire de JSON : pas de problème de syntaxe donc. Il permet aussi bien sûr d’éditer les documents mais un par un.

Seules des requêtes de recherche peuvent être exécutées, il ne dispose pas de shell où écrire des scripts ou même une ligne de commande avec count ou update. Il est donc assez limité de ce côté. Il permet cependant d’analyser vos requêtes de recherche grâce à un outil d’analyse de performance, son utilité à mon avis.

Compass est un outil simple et beau mais avec peu de fonctionnalités, ce n’est pas l’outil idéal pour gérer ses collections mais “juste” pour analyser les performances de ses requêtes.

compass (2) compass (1)

 

Les 3 clients suivants (MongoBooster, MongoChef et Robomongo) sont plus complets et présentent certaines caractéristiques communes :

  • un shell disponible pour exécuter des scripts
  • pas de tutoriel au lancement
  • 3 modes de visualisation des collections : arbre, table ou json

MONGOBOOSTER

MongoBooster est disponible ici : Mongobooster

Il est disponible pour Windows, MacOS et Linux. Aucune information personnelle n’est demandée au téléchargement mais la version gratuite est limitée en fonctionnalités.

En mode de visualisation table, le contenu des objets complexes est affiché (l’objet est éclaté pour afficher ses champs dans des colonnes à part entière) : cela est pratique pour de “petits” documents mais peut vite augmenter la taille de la table à l’écran. C’est une question de goût, personnellement je préfère la solution choisie par MongoChef que je vous présenterai plus loin.

MongoBooster permet d’exporter ou d’importer une collection au format json, csv ou sql.

Tout se fait par script dans le shell (edition, insertion…). Seule la vue arbre permet d’éditer simplement un champ spécifique.

Pour la gestion des utilisateurs, MongoBooster ne fait que nous préparer une requête pré-remplie mais ne propose pas d’IHM.

Un plus que propose le shell de MongoBooster : la complétion automatique des noms de champs de vos documents. Il intègre aussi MongoTop et MongoStat entre autre, que je n’ai pas trouvé avec les autres clients.

Au final, de bonnes choses mais je ne suis pas emballé par MongoBooster, en partie parce qu’il n’est pas possible d’avoir une vue complète du client avec la version gratuite.

mongobooster

 

MONGOCHEF

J’ai ensuite testé MongoChef qui est disponible ici : Mongochef

L’achat d’une license est nécessaire pour un usage commercial. Seul votre mail sera demandé pour le téléchargement. Il est disponible pour Windows, MacOS et Linux.

En mode de visualisation table, le contenu des objets complexes n’est pas affiché mais un double-clic sur le champ permet d’ouvrir une nouvelle table avec les données de ce champ.

MongoChef propose une interface de création de requête par glisser-déposer. Un formulaire est également disponible pour effectuer les recherches, ce qui évite d’avoir à écrire les lignes de commande brutes. C’est le principal avantage de MongoChef par rapport aux autres clients testés.

Un plus que propose aussi le shell de MongoChef : la complétion automatique des noms de champs de vos documents.

L’interface de création d’une collection est bien plus complète qu’avec MongoBooster qui ne demande que le nom de la collection. Ici, on peut préciser si on veut une collection “capped”, quel validateur utiliser ou indiquer la configuration du “storage engine”.

Quand sur un écran il est nécessaire d’écrire du json directement, MongoChef met à disposition un bouton de validation avant l’exécution. Cela est très pratique quand il faut éditer ou ajouter un document.

Il permet également l’édition d’un champ via une IHM assez complète qui permet de modifier le champ suivant une requête, dans une collection…

L’historique des requêtes de recherche exécutées est disponible.

Il donne aussi la possibilité d’exporter ou d’importer une collection au format json, csv ou même directement dans une autre collection.

MongoChef propose aussi une interface de gestion des utilisateurs de nos bases.

J’ai trouvé MongoChef plus agréable à utiliser, avec plus d’IHM simples pour travailler sur ses collections et documents.

mongochef

 

ROBOMONGO

Parlons maintenant de Robomongo, disponible ici : Robomongo

La version gratuite est complète, sans limite de fonctionnalités. Il est disponible pour Windows, MacOS ou Linux. Une version portable est proposée ou un installer. Aucune information personnelle n’est demandée au téléchargement.

En mode de visualisation table, il n’est pas possible d’afficher le contenu d’un objet complexe, dommage.

Il n’est pas possible non plus d’éditer un champ via l’interface. L’édition ou l’insertion de champs ou de documents se fait en écrivant tout en json (Robomongo propose aussi un validateur intégré).

Des logs sont disponibles dans l’interface pour suivre l’historique des requêtes exécutées.

Le shell mis à disposition pour exécuter des requêtes ne propose pas la complétion automatique sur les noms des champs de vos documents, dommage encore.

L’IHM de Robomongo est simple d’utilisation, de part le fait qu’elle propose moins de fonctionnalités (pas de gestion des utilisateurs par exemple) que MongoChef et MongoBooster. Ce n’est donc pas celui que je choisirai.

robomongo

 

MONGOCLIENT

Pour changer, voici MongoClient, un client open source récupérable sur Github : Mongoclient

Il existe pour Windows, MacOS ou Linux, mais aussi en version web.

La version Windows téléchargée ne fonctionnant pas, j’ai installé la version web (qui nécessite MeteorJS).

Je me connecte à ma base locale et j’arrive sur une première page de statistiques et de performances de mon réseau (mémoire utilisée, nombre de connexions...) qui se mettent à jour en direct. Rien de très intéressant pour moi sur mon réseau local avec une petite collection, mais c’est graphique et lisible. Cependant il ne faut pas quitter la page sinon les statistiques live sont perdues et la capture reprend au retour sur la page.

L’interface est belle (contrairement à MongoBooster et MongoChef) et responsive, voilà un client nouvelle génération.

La navigation entre bases est moins intuitive qu’avec les autres clients (qui proposaient directement sous forme d’arbre les bases et leurs collections dans une colonne à gauche de l’interface). Ici on ne peut ouvrir qu’une base à la fois, et en changer via une interface spécifique.

Je retrouve donc mes collections, mais leur contenu ne s’affiche pas. Je dois lancer une recherche vide pour récupérer le contenu.

Si je quitte ma collection pour aller voir les options de l’onglet Management, à mon retour, ma recherche précédente n’a pas été sauvée, je dois la refaire : il propose cependant un historique des requêtes effectuées.

Il permet aussi l’import et l’export de données.

L’édition se fait via un formulaire où on choisit le type de requête à effectuer (find, count, update, isCapped, etc). Le formulaire s’adapte à chaque type de requête. C’est assez complet mais le formulaire prend beaucoup de place dans l’interface et laisse moins de place à la visualisation des données.

L’affichage se fait en mode arbre ou json. Il manque une vue table permettant d’avoir une vision plus globale de nos données.

On notera un plus par rapport aux autres : une IHM de gestion des utilisateurs et rôles dans l’onglet management.

Beaucoup de choses sont possibles avec MongoClient et l’interface est design. Il manque une vision plus globale de nos données et propose moins de fonctionnalités que les autres, ce qui dépend donc des besoins de chacun.

 

mongoclient (2) mongoclient (1)

 

Pour conclure, je choisirai donc MongoChef qui est plus complet et qui facilite la gestion de nos bases via des IHM adaptées. Je lui préfère aussi son mode de visualisation table et la facilité d’écriture des requêtes via le formulaire.

Un commentaire

  1. Hello,

    I’m the creator of mongoclient, and just saw your blog post on the net, I would like to improve mongoclient from a good developer’s perspective. But I couldn’t understand most of the text since it’s french (I just translated it via google translate). Would you share your thoughts after trying new version of mongoclient (https://github.com/rsercano/mongoclient/releases/latest) ?

    That would be really appreciated, I really care end user’s thoughts and design mongoclient depend on their feedback.

    Thanks in advance,
    Regards,
    Sercan

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *