Je suis coincé entre ces deux bases de données NoSQL.
Dans mon projet, je créerai une base de données dans une base de données. Par exemple, j'ai besoin d'une solution pour créer des tables dynamiques.
Ainsi, les utilisateurs peuvent créer des tableaux avec des colonnes et des lignes. Je pense que MongoDB ou CouchDB seront bons pour cela, mais je ne sais pas lequel. J'aurai aussi besoin d'une pagination efficace.
De C, A & P (cohérence, disponibilité et tolérance de partition) lesquels 2 sont les plus importants pour vous? Référence rapide, le Guide visuel sur les systèmes NoSQL
Un article de blog, Comparaison Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j a ' Meilleurs scénarios 'comparés pour chaque base de données NoSQL. Citer le lien,
Un récent (février 2012) et plus comparaison complète par Riyad Kalla,
Un article de blog (octobre 2011) de quelqu'un qui a essayé les deux, n gars de MongoDB apprend CouchDB a commenté que la pagination de CouchDB n'était pas comme utile.
A daté (juin 2009) repère par Kristina Chodorow ( fait partie de l'équipe derrière MongoDB ),
J'irais pour MongoDB.
J'espère que ça aide.
Les réponses surtout compliquent l’histoire.
C'est tout. À moins que vous n'ayez besoin de la capacité (géniale) de CouchDB pour se répliquer sur des appareils mobiles et de bureau, MongoDB présente l'avantage de la performance, de la communauté et des outils.
Très vieille question mais elle est au-dessus de Google et je n'aime pas trop les réponses que je vois, alors voici la mienne.
Couchdb ne se limite pas à la capacité de développer CouchApps. La plupart des gens utilisent CouchDb dans une architecture Web classique à trois niveaux.
Dans la pratique, pour la plupart des gens, le facteur décisif sera le fait que MongoDb autorise les requêtes ad-hoc avec une syntaxe similaire à celle du code SQL, contrairement à CouchDb (vous devez créer des vues de carte/réduction qui détourne certaines personnes même en créant ces vues. Rapid Application Development convivial - ils n’ont rien à voir avec les procédures stockées).
Pour répondre aux points soulevés dans la réponse acceptée: CouchDb dispose d’un excellent système de routage, mais cela ne signifie pas pour autant qu’il convient uniquement (ou davantage) aux endroits où le routage est important. De plus, couchdb est compatible avec les écritures lourdes grâce à sa nature qui ne comprend que des ajouts (les opérations d'écriture retournent en un rien de temps tout en garantissant qu'aucune donnée ne sera jamais perdue).
Une chose très importante que personne n’a mentionnée est le fait que CouchDb repose sur des index b-tree. Cela signifie que, que vous ayez 1 "ligne" ou 20 milliards, le temps d'interrogation restera toujours inférieur à 10 ms. C'est un changeur de jeu qui fait de CouchDb une base de données à faible temps de latence et facile à lire, et cela ne devrait vraiment pas être négligé.
Pour être juste et exhaustif, l'avantage de MongoDb sur CouchDb est l'outillage et le marketing. Ils disposent d'outils citoyens de premier ordre pour les principales langues et plates-formes facilitant l'intégration, ce qui, ajouté à leur interrogation ad hoc, facilite encore la transition depuis SQL.
CouchDb ne dispose pas de ce niveau d’outillage (bien qu’il existe de nombreuses bibliothèques disponibles à ce jour), mais CouchDb est présenté en tant qu’API HTTP et il est donc assez facile de créer un wrapper dans votre langue préférée pour parler avec elle. Personnellement, j’aime cette approche car elle évite les ballonnements et vous permet de ne prendre que ce que vous voulez (principe de ségrégation d’interface).
Je dirais donc que l’utilisation de l’un ou de l’autre est en grande partie une question de confort et de préférence avec leurs paradigmes. L'approche CouchDb "convient", pour certaines personnes, mais si après avoir appris les fonctionnalités de la base de données (dans l'exhaustif guide officiel ) vous n'avez pas votre moment "enfer ouais", vous devriez probablement passer à autre chose .
Je déconseillerais d'utiliser CouchDb si vous voulez simplement utiliser "le bon outil pour le bon travail". parce que vous découvrirez que vous ne pouvez pas simplement l'utiliser de cette façon et que vous finirez par être énervé et à écrire des articles de blog tels que "Où se trouvent les jointures dans CouchDb?" et "Où est la gestion des transactions?". En effet, Couchdb est - paradoxalement - très transparent, mais requiert en même temps un changement de paradigme et un changement dans la manière dont vous abordez les problèmes pour vraiment briller (et vraiment travailler).
Mais une fois que vous avez fait cela, cela en vaut vraiment la peine. Personnellement, j’aurais besoin de raisons très fortes ou d’un facteur déterminant pour un projet afin de choisir une autre base de données, mais jusqu’à présent, je n’en ai rencontré aucune.
Poser cette question vous-même? Et vous déciderez de votre choix de base de données.
Je résume les réponses trouvées dans cet article:
MongoDB: Meilleure interrogation, stockage des données dans BSON (accès plus rapide), meilleure cohérence des données, collectes multiples
CouchDB: Meilleure réplication, avec réplication de maître à maître et résolution de conflit, stockage de données au format JSON (lisible par l'homme, meilleur accès via les services REST), interrogation via map-reduction.
En conclusion, MongoDB est plus rapide, CouchDB est plus sûr.
Aussi: http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
Tenez compte d'un problème lié aux index uniques rares dans MongoDB. Je l'ai frappé et la solution de contournement est extrêmement lourde.
Le problème est le suivant: vous avez un champ unique, le cas échéant, et vous souhaitez rechercher tous les objets où le champ est absent. La manière dont les index uniques fragmentés sont implémentés dans Mongo est que les objets pour lesquels ce champ est manquant ne sont pas du tout dans l'index - ils ne peuvent pas être récupérés par une requête sur ce champ - {$exists: false}
ne fonctionne tout simplement pas.
La seule solution que j'ai trouvée est d'avoir une famille de valeurs null spéciale, où une valeur vide est traduite en un préfixe spécial (comme null:) concaténé en uuid. C'est un vrai casse-tête, car il faut prendre soin de transformer en/à partir des valeurs vides lors de l'écriture/interrogation/lecture. Une nuisance majeure.
Je n'ai jamais utilisé l'exécution javascript côté serveur dans MongoDB (ce n'est pas conseillé de toute façon) et leur carte/réduction offre des performances épouvantables lorsqu'il n'y a qu'un seul nœud Mongo. Pour toutes ces raisons, j’envisage maintenant de consulter CouchDB. Cela convient peut-être davantage à mon scénario particulier.
BTW, si quelqu'un connaît le lien vers le numéro respectif de Mongo décrivant le problème d'index unique rare - veuillez le partager.
Je suis sûr que vous pouvez avec Mongo (plus familier avec cela), et à peu près sûr que vous pouvez avec canapé aussi.
Les deux étant orientés documentés (basés sur JSON), il n'y aurait pas de "colonnes" mais plutôt de champs dans les documents - mais ils peuvent être entièrement dynamiques.
Ils le font tous les deux. Vous voudrez peut-être examiner d'autres facteurs à utiliser: autres caractéristiques qui vous tiennent à cœur, la popularité, etc. D'après Google, les offres d'emploi en ligne.com seraient un moyen de considérer la popularité.
Vous pouvez juste l'essayer, je pense que vous devriez pouvoir faire fonctionner Mongo en 5 minutes.