64 votes

MongoDB et MySQL

J'avais l'habitude de construire des applications Ruby on Rails avec MySQL.

MongoDB devient actuellement de plus en plus célèbre et je commence à l'essayer.

Le problème est que je ne connais pas la théorie sous-jacente du fonctionnement de MongoDB (j'utilise la gemme mongoid si cela a de l'importance).

Je voudrais donc comparer les performances entre l'utilisation de MySQL+ActiveRecord et le modèle généré par la gemme mongoid, quelqu'un pourrait-il m'aider à le faire ?

57voto

Octopus-Paul Points 4290

L'article intitulé : Pourquoi utilisez-vous réellement NoSQL ? présente très bien les avantages et les inconvénients de l'utilisation de NoSQL.

Edit : Lire aussi http://blog.fatalmind.com/2011/05/13/choosing-nosql-for-the-right-reason/ article de blog aussi

Réédition : j'ai trouvé des documents récents (publiés en 2014) sur ce sujet que je considère comme pertinents : Que reste-t-il de NoSQL ?

8voto

Henrik Points 145

Je ne sais pas grand-chose de la théorie sous-jacente. Mais voici le conseil que j'ai reçu : n'utilisez MongoDB que si vous l'exécutez sur plusieurs serveurs ; c'est là qu'il brille. D'après ce que j'ai compris, le mouvement NoSQL est apparu en grande partie à cause de la difficulté d'équilibrer la charge des bases de données relationnelles sur plusieurs serveurs. Donc, si vous hébergez votre application sur un seul serveur, MySQL est le meilleur choix.

Les bonnes personnes de l'association Projet de doctrine a récemment écrit un article très utile article de blog sur le sujet.

4voto

Imran Points 11

D'après ce que j'ai lu jusqu'à présent... voici ce que j'en pense.

Le SQL standard échange des performances inférieures contre une richesse de fonctionnalités... c'est-à-dire qu'il vous permet, entre autres, d'effectuer des jointures et des transactions sur des ensembles de données (tables/collections, si vous préférez).

Cela permet à un développeur d'applications de pousser une partie de la complexité de l'application dans la couche de base de données. Cela présente l'avantage de ne pas avoir à se soucier de l'intégrité des données et du reste des propriétés ACID de l'application en dépendant d'une technologie éprouvée. L'absence d'extensibilité extrême convient à pratiquement tous les projets, tant que l'on parvient à faire fonctionner l'application dans les délais prévus, ce qui peut parfois conduire à l'achat de systèmes de bases de données relationnelles très performants et coûteux.

D'autre part, Mongo DB exclut délibérément une grande partie de la complexité inhérente aux bases de données relationnelles, ce qui permet d'obtenir de meilleures performances évolutives.

Cette approche oblige le développeur d'applications à ré-architecturer l'application pour contourner le manque de fonctionnalités relationnelles... ce qui en soi est une bonne chose, mais l'effort impliqué n'en vaut généralement la peine que si vous avez des exigences d'évolutivité. Veuillez noter qu'avec MongoDB, selon les exigences des données en matière de propriétés ACID, l'application devra s'adapter et gérer le cas échéant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X