Je suis un noob complet en ce qui concerne le mouvement NoSQL. J'ai beaucoup entendu parler de MongoDB et de CouchDB. Je sais qu'il y a des différences entre les deux. Lesquels recommandez-vous d'apprendre comme première étape dans le monde NoSQL?
Je suis un noob complet en ce qui concerne le mouvement NoSQL. J'ai beaucoup entendu parler de MongoDB et de CouchDB. Je sais qu'il y a des différences entre les deux. Lesquels recommandez-vous d'apprendre comme première étape dans le monde NoSQL?
Réponses:
Voir les liens suivants
Mise à jour : J'ai trouvé une excellente comparaison des bases de données NoSQL .
MongoDB (3,2)
Utilisation optimale : si vous avez besoin de requêtes dynamiques. Si vous préférez définir des index, pas des fonctions de mappage / réduction. Si vous avez besoin de bonnes performances sur une grosse base de données. Si vous vouliez CouchDB, mais que vos données changent trop, remplissant les disques.
Par exemple : pour la plupart des choses que vous feriez avec MySQL ou PostgreSQL, mais avoir des colonnes prédéfinies vous retient vraiment.
CouchDB (1,2)
Meilleure utilisation : pour accumuler, modifier occasionnellement des données, sur lesquelles des requêtes prédéfinies doivent être exécutées. Endroits où la gestion des versions est importante.
Par exemple : CRM, systèmes CMS. La réplication maître-maître est une fonctionnalité particulièrement intéressante, permettant des déploiements multi-sites faciles.
Si vous venez du monde MySQL, MongoDB vous "semblera" beaucoup plus naturel à cause de son support de langage de type requête.
Je pense que c'est ce qui le rend si convivial pour beaucoup de gens.
CouchDB est fantastique si vous souhaitez utiliser le très bon support de réplication maître-maître avec une configuration multi-nœuds, éventuellement dans différents centres de données ou quelque chose du genre.
La réplication de MongoDB (jeux de répliques) est une configuration maître-esclave-esclave-esclave- *, vous ne pouvez écrire que sur le maître dans un jeu de répliques et lire à partir de l'un d'entre eux.
Pour une configuration de site standard, c'est très bien. Il correspond très bien à l'utilisation de MySQL.
Mais si vous essayez de créer un service global comme un CDN qui doit garder tous les nœuds globaux synchronisés même en lecture / écriture sur tous, quelque chose comme la réplication dans CouchDB va être un énorme avantage pour vous.
Alors que MongoDB a un langage de type requête que vous pouvez utiliser et que vous vous sentez très intuitif, CouchDB adopte une approche de «réduction de carte» et ce concept de vues. Cela semble étrange au début, mais au fur et à mesure que vous comprenez cela, cela commence vraiment à être intuitif.
Voici un bref aperçu donc cela a du sens:
Donc, ces deux sources utilisent des documents JSON, mais CouchDB suit cette approche davantage «chaque serveur est un maître et peut se synchroniser avec le monde», ce qui est fantastique si vous en avez besoin, tandis que MongoDB est vraiment le MySQL du monde NoSQL.
Donc, si cela ressemble plus à ce dont vous avez besoin / voulez, allez-y.
Les petites différences comme le protocole binaire de Mongo par rapport à l'interface RESTful de CouchDB sont tous des détails mineurs.
Si vous voulez une vitesse brute et au diable la sécurité des données, vous pouvez faire fonctionner Mongo plus rapidement que CouchDB car vous pouvez lui dire de fonctionner à court de mémoire et de ne pas valider les choses sur le disque, sauf pour des intervalles clairsemés.
Vous pouvez faire la même chose avec Couch, mais son protocole de communication basé sur HTTP va être 2 à 4 fois plus lent que la communication binaire brute avec Mongo dans cette "vitesse sur tout!" scénario.
Gardez à l'esprit que la vitesse folle brute est inutile si un crash de serveur ou une panne de disque corrompt et détruit votre base de données dans l'oubli, de sorte que le point de données n'est pas aussi étonnant que cela puisse paraître (à moins que vous ne fassiez des systèmes de trading en temps réel sur le mur. Street, auquel cas regardez Redis).
J'espère que tout aide!
Il y a maintenant beaucoup plus de bases de données NoSQL sur le marché que jamais auparavant. Je suggère même de jeter un œil au Magic Quadrant de Gartner si vous recherchez une base de données qui sera également idéale pour les applications d'entreprise basées sur le support, l'évolutivité, la gestion et le coût.
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
Je voudrais suggérer Couchbase à tous ceux qui ne l'ont pas encore essayé, mais pas sur la base de la version indiquée dans le rapport (2.5.1) car il y a près de 2 révisions derrière CB Server aujourd'hui, proche de la sortie de 4.0 en 2H15 .
http://www.couchbase.com/coming-in-couchbase-server-4-0
L'autre aspect de Couchbase en tant que fournisseur / produit est qu'il s'agit d'un type de base de données multi-usage. Il peut agir comme un pur magasin K / V, une base de données orientée document avec mise à l'échelle multidimensionnelle, Memcached, mise en cache avec persistance, et prend en charge SQL conforme ANSI 92 avec jointures automatiques, réplication vers des clusters DR en appuyant sur un bouton, et a même un composant mobile intégré à l'écosystème.
Si rien d'autre, cela vaut la peine de consulter les derniers benchmarks:
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html