J'ai l'habitude de construire Ruby sur Rails apps avec MySQL.
MongoDB devient actuellement de plus en plus célèbre et je commence maintenant à l'essayer.
Le problème est que je ne connais pas la théorie sous-jacente du fonctionnement de MongoDB (j'utilise une gemme mongoïde si c'est important)
Je voudrais donc avoir une comparaison sur les performances entre l'utilisation de MySQL + ActiveRecord et le modèle généré par mongoid gem, quelqu'un pourrait-il m'aider à le comprendre?
L'article intitulé: Pourquoi diable utilisez-vous réellement NoSQL? fait un très bon travail pour présenter les avantages et les inconvénients de l'utilisation de NoSQL.
Edit: Lisez également http://blog.fatalmind.com/2011/05/13/choosing-nosql-for-the-right-reason/ article de blog aussi
Rééditer: J'ai trouvé du matériel récent (publié en 2014) sur ce sujet que je considère comme pertinent: Que reste-t-il de NoSQL?
Je ne connais pas beaucoup 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à que ça va briller. Pour autant que je sache, le mouvement NoSQL est apparu en grande partie à cause de la douleur de l'équilibrage de la charge des bases de données relationnelles sur plusieurs serveurs. Donc, si vous hébergez votre application sur pas plus d'un serveur, MySQL serait le choix préféré.
Les braves gens du projet Doctrine ont récemment écrit un article très utile blog sur le sujet.
D'après ce que j'ai lu jusqu'à présent ... voici mon point de vue à ce sujet.
SQL standard échange des performances inférieures pour la richesse des fonctionnalités ... c'est-à-dire qu'il vous permet de faire des jointures et des transactions à travers des ensembles de données (tables/collections si vous voulez) entre autres.
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 les avantages 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 fonction de la technologie éprouvée. Le manque d'évolutivité extrême fonctionne pour à peu près tous les projets tant que l'on peut réussir à faire fonctionner l'application dans les délais prévus, ce qui peut parfois entraîner l'achat de systèmes de bases de données relationnelles hautes performances/coûteux.
D'un autre côté, Mongo DB, exclut délibérément une grande partie de la complexité inhérente associée aux bases de données relationnelles, en permettant de meilleures performances évolutives.
Cette approche oblige le développeur de l'application à ré-architecturer l'application pour contourner le manque de fonctionnalités relationnelles ... ce qui en soi est une bonne chose, mais l'effort impliqué ne vaut généralement la peine que si vous avez les exigences d'évolutivité. Veuillez noter qu'avec MongoDB en fonction des besoins en données avec les propriétés ACID, l'application devra intensifier et gérer si nécessaire.