Les bases de données telles que MongoDB sont très utiles lorsque vous savez généralement où se trouvent vos données (par opposition à la nécessité d'écrire plusieurs requêtes complexes). Avec Mongo, les données "liées" sont soit imbriquées dans les données parent, soit elles ont des clés primaires / étrangères. C'est très bien si, par exemple, vous avez des publications et des commentaires. En règle générale, vous n'allez pas afficher de commentaires en dehors du contexte d'un article. Il est donc logique que les commentaires soient contenus dans un article (de cette manière, vous obtenez tous les commentaires de l'article sans avoir à interroger une table distincte).
MongoDB est sans schéma. Cela signifie que, pour l’essentiel, il faudra utiliser la structure de données que vous lui envoyez.
D'un autre côté, si vous devez utiliser des fonctions d'agrégat et si vous avez besoin d'interroger des données de manière complexe, ce qui ne peut être réalisé à l'aide d'incorporation ou de relations simples en mongo, vous devez savoir qu'il est temps d'utiliser un SGBDR comme MySQL ou PostgreSQL.
MongoDB n'est pas destiné à remplacer SQL. Il répond simplement à des besoins différents, et MongoDB et un SGBDR peuvent être utilisés conjointement. À mon avis, MongoDB n'est pas tout à fait nécessaire si vous n'avez pas besoin que vos données soient flexibles ou intégrées dans un document parent. Le développement avec MongoDB est très amusant car il y a beaucoup moins d'étapes à franchir pour mettre en place un projet (disons dans Rails). Besoin de changer? Aucun problème. Ajoutez simplement un attribut à votre modèle. Terminé.
Je ne peux pas parler pour beaucoup d'autres bases de données NoSQL, même si je sais qu'elles sont généralement conçues de la même manière pour répondre à un besoin spécifique auquel un SGBDR ne peut pas répondre. Certains résident entièrement en mémoire ou peuvent être partagés ou redimensionnés très facilement. Je suis à peu près sûr que Cassandra est conçue pour continuer à fonctionner sans perte de données si un nœud tombe en panne. Redis est fondamentalement un magasin de valeurs de clé qui réside en mémoire (avec des écritures de disque périodiques pour la persistance), mais a également la possibilité de stocker des types de données comme des ensembles et de les trier.