Je construis une nouvelle application et je conçois maintenant sa structure, voici quelques réflexions sur les raisons d'utiliser ou de ne pas utiliser la mangouste:
- La mangouste sera plus lente (pour les grosses applications)
- La mangouste est plus difficile avec des requêtes plus compliquées
- Il y aura des situations où vous voudrez plus de vitesse et vous choisirez de vous passer de mangouste, alors vous aurez la moitié des requêtes avec la mangouste et la moitié sans mangouste. C'est une situation folle, une fois ...
- Mongoose vous fera coder plus rapidement avec des applications simples avec une structure de base de données simple
- Mongoose vous fera lire des documents mongodb ET des documents mangouste
- Avec mangouste, votre pile aura une autre chose sur laquelle compter et c'est une possibilité de plus de s'écraser et de se réduire en cendres.
Le pilote mongodb est un pilote brut, vous communiquez directement avec mongodb. la mangouste est une couche d'abstraction. Vous obtenez des E / S plus faciles vers db tandis que votre structure de db est assez simple.
L'abstraction apporte ses exigences et vous devez les suivre. Votre application sera plus lente, consommera plus de RAM et sera plus compliquée, mais si vous savez comment l'utiliser, vous pouvez écrire plus rapidement des objets simples, les enregistrer dans la base de données.
Sans mangouste, vous aurez une application plus rapide avec une connexion directe à mongodb. Personne ne dit que vous ne pouvez pas écrire vos propres modèles pour enregistrer des éléments dans db. Vous pouvez. Et je pense que c'est plus facile. Vous écrivez du code, que vous utiliserez, vous savez ce dont vous avez besoin. Votre couche d'abstraction sera bien plus petite que celle de la mangouste.
Je viens du monde PHP, là nous avons eu sql brut avec des fonctions mysql_ dépréciées, puis nous avons obtenu PDO - couche d'abstraction orientée objet pour communiquer avec sql. Ou vous pouvez choisir un ORM lourd comme Doctrine pour avoir des choses similaires à la mangouste sur mongoDB. Objets avec la méthode setter / getters / save et ainsi de suite. C'est bien, mais en ajoutant plus d'abstraction, vous ajoutez plus de fichiers, plus de logique, plus de documentation, plus de dépendances. J'aime garder les choses simples et avoir moins de dépendances dans ma pile. BTW, c'est pourquoi je suis passé de PHP à Javascript serveur-client en premier lieu.
Avec mongoose, je pense que c'est génial d'écrire des applications simples, qui ont une structure de base de données simple similaire à SQL . Lorsque vous commencez à avoir des sous-documents et que vous voulez faire toutes ces requêtes folles, j'ai trouvé cela très difficile avec la mangouste. Vous devez consulter les documents de mongodb, puis consulter les documents de mangouste pour savoir comment faire une requête que vous voulez. Parfois, vous constaterez que X future de mongodb n'est pas en mangouste, alors vous passez au pilote brut de mongodb et écrivez des requêtes brutes de mongodb à un endroit ou à un autre. Sans mangouste, vous regardez les documents de mongodb et faites votre requête.