Je sais que c'est une grande question et que ce n'est pas une réponse positive ou négative, mais nous développons des applications Web et étudions la possibilité d'utiliser MongoDB pour notre solution de persistance. Combinaison de MongoDB avec NoRM pour le stockage d'objets.
Ce que je veux demander, c'est quels pièges avez-vous rencontrés avec le passage de SQL à mongo? Quand est-ce que mongo n'est tout simplement pas la bonne solution et que les avantages de mongodb sont suffisants pour faire évoluer le développement de SQL?
À mon avis, le format de vos données devrait être la principale préoccupation lors du choix d’un back-end de stockage. Avez-vous des données de nature relationnelle? Si oui, est-ce possible et est-ce une bonne idée de modéliser les données dans des documents? La modélisation des données est aussi importante dans une base de données de documents que dans une base de données relationnelle, cela se fait simplement différemment. Combien de types d'objets avez-vous et comment sont-ils liés? Est-ce que DBrefs à Mongodb peut faire l'affaire ou allez-vous manquer des clés étrangères tellement que ce sera douloureux? Quels sont vos modèles d'accès pour les données? Récupérez-vous simplement les données d'un type filtré par une valeur de champ ou disposez-vous de modes de récupération complexes?
Avez-vous besoin de l'intégrité transactionnelle d'ACID? Le domaine impose-t-il beaucoup de contraintes sur les données? Avez-vous besoin du facteur d'évolutivité d'une base de données de documents ou s'agit-il simplement d'une chose "géniale"?
Quelles sont vos exigences en matière de cohérence et d’intégrité des données? Certaines solutions NoSQL et MongoDB en particulier sont assez lâches sur la cohérence d'écriture pour obtenir des performances. NoSQL n'est pas un paysage uniforme et d'autres produits, par exemple. CouchDB a d'autres caractéristiques dans ce département. Certains sont accordables aussi.
Ce sont toutes des questions qui devraient entrer dans le choix du stockage.
Quelques expériences
les inconvénients
avantages
Cela fait quelques jours que je fouille avec ça. Voici ce que je peux en dire:
POUR:
CONTRE:
Une chose que j’ai remarquée qui manque dans les tutoriels: Initialisez vos listes à l’intérieur de votre objet, sinon une erreur sera générée lors de la tentative de sauvegarde (yourobj). La chose la plus sûre à faire est d’écrire dans votre classe un constructeur qui vous assure de ne pas avoir d’objets NULL dans votre objet. De cette façon, vous ne recevrez pas d'erreur si vous oubliez quelque chose.
Votre kilométrage peut varier, mais c’est un graphique rapide que j’ai rassemblé pour comparer la vitesse de mise à jour de plusieurs "lignes de tableau" (document non hiérarchique à plat dans MongoDB) avec et sans index pour nous donner une idée de la façon dont il évoluerait notre application.
Vous pourriez trouver quelques avantages et inconvénients d'utiliser une base de données NoSQL (MongoDB incluse) dans ce Mise en route avec NoSQL . Voici un résumé rapide: un modèle de données différent (si un mappage du modèle objet à "ce nouveau modèle" est nécessaire, cela fonctionnera-t-il correctement), un modèle de requête différent (les requêtes MongoDB sont assez performantes par rapport aux autres) , pas de transaction (vous avez cependant quelques opérations atomiques).
Quoi qu'il en soit, de mon point de vue, le changement le plus important concerne le modèle de données et la façon dont vous concevez votre application avec cette nouvelle approche.
J'utilise MongoDB sur AWS sous Atlas Cloud depuis plusieurs mois et deux avantages majeurs se dégagent: