Question

J'ai lu la documentation et regarder au cours des derniers jours à Mongo DB spécifique de screencasts et je suis à une perte quand une telle solution serait mieux qu'un pg typique ou l'environnement MySQL.

Plus précisément, ma question est dans quelles circonstances (cas w / utilisation serait bien) voudriez-vous aller sur la route NoSQL?

Merci!

Pas de solution correcte

Autres conseils

  1. De nombreux écrivains disparates. Surtout quand les écrivains peuvent se segmentée en raison de déconnexions du réseau, et devront plus tard resynchroniser les données qui ont été écrites des deux côtés de la bifurcation. Cela brise ACID, et pendant que vous pouvez résoudre le problème avec la logique métier explicite, vous êtes maintenant sur le territoire NoSQL. Ceci est très fréquent dans les situations militaires, mais tout système dans lequel tout le monde est un écrivain prolifique va avoir un verrou écriture contention sur un système ACID.

  2. schémas fluides. Modification d'un schéma dans un DB traditionnel est une opération coûteuse qui nécessite souvent une sorte de temps d'arrêt du serveur ou d'autres processus complexes. Avec la plupart des systèmes NoSQL il est trivial. Donc, si vous avez des données à partir d'un grand nombre de sources disparates pour fusion et / ou avoir des situations où vous voulez commencer des informations de suivi à une date ultérieure, les systèmes NoSQL sera beaucoup plus facile à traiter. La fusion de deux sources de données afin qu'ils puissent être cartographiés entre eux est un bon exemple, je peux penser.

  3. réplication à faible bande passante. Une fois que vous avez cassé ACID, vous pouvez avoir des lecteurs et des écrivains sur les nœuds de feuilles d'un graphe de réseau avec des données partielles qui ne nécessitent pas d'répliques de la base de données. Mon propre produit de l'entreprise, le poste de commandement de l'armée de l'avenir utilise.

  4. interopérabilité des données. La plupart des bases de données NoSQL vous permettent de introspecter les données sans connaître le schéma à l'avance, ce qui permet des connexions entre des systèmes disparates pour arriver plus facile.

  5. échelle massive. C'est celui qui est le plus souvent-débat, et le plus souvent abusé par les promoteurs NoSQL. Si cela est la seule raison pour laquelle vous choisissez NoSQL, commencez par MySQL au lieu et à l'échelle plus tard.

Cas d'utilisation Nous utilisons MongoDB pour une grande échelle la structure de données extrêmement transitoires. Il en vigueur fonctionne comme un outil de suivi de l'emploi / gestionnaire avec de nombreuses unités de travail en cours de traitement à chaque seconde. L'unité de travail n'a pas de schéma défini (unités différentes sont inventées assez souvent) mais nous devons avoir la possibilité d'interroger des champs spécifiques ou propriétés sans itérer sur toute la DB. Donc, pour résumer: très transitoire, hautement disponible (ne peut pas se permettre de bloquer pour une requête) avec une charge de travail d'environ 600QPS pour une seule machine « produit » en cours d'exécution dans le nuage.

Le fait de la question est qu'il est extrêmement difficile de faire la même chose sur une machine SQL, tout en conservant les mêmes coûts.

D'autres populaires cas d'utilisation pour MongoDB (pour nous aussi) sont la collecte statistique, il est extrêmement efficace à incrémenter propriétés spécifiques à l'intérieur des documents, beaucoup plus alors la plupart des systèmes SGBDR.

Encore une fois, ce n'est pas qu'il est impossible de le faire dans MySQL, il est un peu plus cher et prend plus de temps (plus de compétences) qui, pour une petite entreprise ou un moyen d'environnement de développement rapide, il ne peut pas être fait.

Certaines API REST renvoient des données JSON (par exemple, beaucoup de API de données gouvernementales ouvertes ) . Si vous voulez vider les données REST dans un magasin de données locales (dans le cas où vous devez exécuter l'analyse, etc.), l'ingestion d'un objet JSON avec MongoDB est trivial. Pas besoin de définir un schéma de la table. Mieux encore, si l'objet change JSON au fil du temps (par exemple, les rendements de l'API REST champs supplémentaires) vous pouvez toujours ingèrent les données en une seule étape. Essayez cela avec une base de données relationnelle!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top