web-dev-qa-db-fra.com

Avantages et inconvénients de MongoDB?

Quelqu'un pourrait-il me dire quels sont les avantages et les inconvénients de mongodb, en particulier en comparaison avec la base de données relationnelle? y compris ACID, évolutivité, débit, utilisation de la mémoire principale, performances d'insertion/requête et taille d'index, etc.

68
zbdiablo

Quelques points généraux sur MongoDB

Avantages:

  • sans schéma. Si vous avez un schéma flexible, cela est idéal pour un magasin de documents comme MongoDB. Ceci est difficile à implémenter de manière performante dans le SGBDR
  • facilité de mise à l'échelle. Mettre à l'échelle les lectures à l'aide de jeux de réplicas. Mettre à l'échelle les écritures à l'aide du partage (équilibrage automatique). Allumez simplement une autre machine et c'est parti. Ajouter plus de machines = ajouter plus RAM sur lequel distribuer votre jeu de travail.
  • coût. Cela dépend du SGBDR bien sûr, mais MongoDB est gratuit et peut fonctionner sous Linux, idéal pour fonctionner avec un kit de produits moins cher.
  • vous pouvez choisir le niveau de cohérence que vous souhaitez en fonction de la valeur des données (par exemple, des performances plus rapides = déclencher et oublier les insertions dans MongoDB, des performances plus lentes = attendre que l'insertion ait été répliquée sur plusieurs nœuds avant de revenir)

Les inconvénients:

  • La taille des données dans MongoDB est généralement plus élevée en raison, par exemple, chaque document a des noms de champs stockés
  • moins de flexibilité avec les requêtes (par exemple, pas de JOIN)
  • pas de prise en charge des transactions - certaines opérations atomiques sont prises en charge, au niveau d'un seul document
  • pour le moment Map/Reduce (par exemple pour faire des agrégations/analyse de données) est OK, mais pas extrêmement rapide. Donc, si cela est nécessaire, quelque chose comme Hadoop devra peut-être être ajouté au mélange
  • moins d'informations à jour disponibles/produit évoluant rapidement

J'ai récemment blogué mes pensées sur MongoDB en tant que personne venant de l'arrière-plan de SQL Server, donc cela pourrait vous intéresser (ci-dessus ne sont que quelques-uns des principaux points).

Si vous cherchez une réponse "Est-ce que MongoDB est meilleur que RDBMS" - alors à mon humble avis, il n'y a pas de réponse. Les technologies NoSQL comme MongoDB offrent une alternative, qui complète les technologies RDBMS. L'un peut être mieux adapté à un objectif particulier que l'autre, il s'agit donc de faire un appel à ce qui vous convient le mieux pour une exigence donnée.

117
AdaTheDev