Je construisais des applications Ruby on Rails avec MySQL.
MongoDB est devenu de plus en plus célèbre et je commence à essayer.
Le problème est que je ne connais pas la théorie sous-jacente du fonctionnement de MongoDB
J’aimerais donc avoir une comparaison des 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é: Qu’est-ce que vous utilisez réellement NoSQL pour? fait un très bon travail en présentant 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/
Re-edit: J’ai trouvé des documents récents (publiés en 2014) sur ce sujet que je considère pertinents: Que rest-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 quand ça va briller. Pour autant que je sache, le mouvement NoSQL est apparu en grande partie à cause de la difficulté des bases de données relationnelles à équilibrage de charge sur plusieurs serveurs. Donc, si vous hébergez votre application sur un seul serveur, MySQL serait le choix préféré.
Les bonnes personnes du projet Docsortingne ont récemment écrit un article de blog très utile sur le sujet.
D’après ce que j’ai lu jusqu’ici … voici ce que je pense.
Les transactions SQL standard réduisent les performances pour la richesse des fonctionnalités … c’est-à-dire qu’elles vous permettent entre autres d’effectuer des jointures et des transactions entre des ensembles de données (tables / collections si vous voulez).
Cela permet à un développeur d’appliquer une partie de la complexité de l’application dans la couche de firebase database. Cela présente les avantages de ne pas avoir à se soucier de l’intégrité des données et du rest des propriétés ACID par l’application en fonction de la technologie éprouvée. L’absence d’évolutivité extrême fonctionne pour pratiquement tous les projets, à condition de pouvoir continuer à faire fonctionner l’application dans les délais prévus, ce qui peut parfois nécessiter 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 associée aux bases de données relationnelles, en permettant une meilleure performance évolutive.
Cette approche oblige le développeur d’applications à ré-architecturer l’application pour pallier le manque de fonctionnalités relationnelles… ce qui est une bonne chose en soi, mais les efforts requirejs ne sont généralement utiles que si vous avez les exigences d’évolutivité. Veuillez noter que, avec MongoDB en fonction des exigences en matière de données par rapport aux propriétés ACID, l’application devra s’intensifier et s’adapter au besoin.