Je suis coincé entre ces deux bases de données NoSQL.
Dans mon projet, je vais créer 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 également besoin d'une pagination efficace.
mongodb
performance
comparison
couchdb
nosql
Luke101
la source
la source
Réponses:
De C, A & P (cohérence, disponibilité et tolérance de partition), lesquels sont les plus importants pour vous? Référence rapide, le guide visuel des systèmes NoSQL
Un article de blog, Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j, propose des scénarios ` ` Best used '' pour chaque base de données NoSQL comparée. Citant le lien,
Une comparaison récente (février 2012) et plus complète de Riyad Kalla,
Un article de blog (octobre 2011) par quelqu'un qui a essayé les deux, A MongoDB Guy Learns CouchDB a commenté que la pagination de CouchDB n'était pas aussi utile.
Un benchmark daté (juin 2009) de Kristina Chodorow ( membre de l'équipe derrière MongoDB ),
J'irais pour MongoDB.
J'espère que cela aide.
la source
Les réponses compliquent surtout l'histoire.
C'est ça. À moins que vous n'ayez besoin de la capacité (impressionnante) de CouchDB pour se répliquer sur des appareils mobiles et de bureau, MongoDB a actuellement l'avantage de performance, de communauté et d'outillage.
la source
Très vieille question, mais elle est au-dessus de Google et je n'aime pas vraiment les réponses que je vois, alors voici les miennes.
Il y a bien plus à Couchdb que la possibilité de développer des CouchApps. La plupart des gens utilisent CouchDb dans une architecture Web classique à 3 niveaux.
Dans la pratique, le facteur décisif pour la plupart des gens sera le fait que MongoDb permet des requêtes ad hoc avec une syntaxe similaire à SQL alors que CouchDb ne le fait pas (vous devez créer des vues de carte / réduction qui désactive certaines personnes même si la création de ces vues est rapide pour le développement d'applications (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 a un excellent système de versionning, mais cela ne signifie pas qu'il est uniquement adapté (ou plus adapté) aux endroits où le versionning est important. De plus, couchdb est très convivial pour l'écriture grâce à sa nature d'ajout uniquement (les opérations d'écriture reviennent en un rien de temps tout en garantissant qu'aucune donnée ne sera jamais perdue).
Une chose très importante qui n'est mentionnée par personne est le fait que CouchDb s'appuie sur des index b-tree. Cela signifie que si vous avez 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 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 ont des outils citoyens de première classe pour toutes les principales langues et plates-formes, ce qui facilite l'intégration et cela, ajouté à leurs requêtes ad hoc, rend la transition de SQL encore plus facile.
CouchDb n'a pas ce niveau d'outils - même s'il existe de nombreuses bibliothèques disponibles aujourd'hui - mais CouchDb est exposé en tant qu'API HTTP et il est donc assez facile de créer un wrapper dans votre langue préférée pour en parler. 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 des interfaces).
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 pris connaissance des fonctionnalités de la base de données (dans le guide officiel exhaustif ), vous n'avez pas votre moment "enfer ouais", vous devriez probablement passer à autre chose.
Je déconseille 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 vous finirez par être énervé et écrire des articles de blog tels que "Où sont les jointures dans CouchDb?" et "Où est la gestion des transactions?". En effet, Couchdb est - paradoxalement - très transparent mais nécessite en même temps un changement de paradigme et un changement dans la façon dont vous abordez les problèmes pour vraiment briller (et vraiment travailler).
Mais une fois que vous avez fait cela, ça rapporte vraiment. J'aurais personnellement besoin de raisons très fortes ou d'un disjoncteur majeur sur un projet pour choisir une autre base de données, mais jusqu'à présent je n'en ai rencontré aucune.
la source
CouchDb relies on b-tree indexes. This means that whether you have 1 "row" or 20 billions, the querying time will always remain below 10ms.
N'est-ce pas vrai pour presque toutes les bases de données? De cette façon, cela est formulé implique le contraire.Posez-vous ces questions vous-même? Et vous déciderez de votre sélection DB.
la source
Je résume les réponses trouvées dans cet article:
http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-What-are-the-advantages-and-disadvantages-of-each
MongoDB: meilleure interrogation, stockage de données en BSON (accès plus rapide), meilleure cohérence des données, plusieurs collections
CouchDB: meilleure réplication, avec réplication maître à maître et résolution des conflits, stockage de données en JSON (lisible par l'homme, meilleur accès via les services REST), interrogation via map-Reduce.
Donc en conclusion, MongoDB est plus rapide, CouchDB est plus sûr.
Aussi: http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
la source
Soyez conscient d'un problème avec des index uniques clairsemés dans MongoDB. Je l'ai frappé et il est extrêmement difficile de contourner ce problème.
Le problème est le suivant: vous avez un champ, qui est unique s'il est présent et vous souhaitez trouver tous les objets où le champ est absent. La façon dont les index uniques épars sont implémentés dans Mongo est que les objets où 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 fonctionnent tout simplement pas.La seule solution de contournement 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 vers / à partir des valeurs vides lors de l'écriture / requête / lecture. Une nuisance majeure.
Je n'ai jamais utilisé d'exécution javascript côté serveur dans MongoDB (ce n'est pas conseillé de toute façon) et leur carte / réduire a des performances terribles quand il n'y a qu'un seul nœud Mongo. Pour toutes ces raisons, j'envisage maintenant de vérifier CouchDB, il convient peut-être plus à mon scénario particulier.
BTW, si quelqu'un connaît le lien vers le problème Mongo correspondant décrivant le problème d'index unique clairsemé - veuillez le partager.
la source
Je suis sûr que vous pouvez avec Mongo (plus familier avec lui), et presque sûr que vous pouvez aussi avec un canapé.
Les deux sont orientés documentés (basés sur JSON), il n'y aurait donc pas de "colonnes" mais plutôt des 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 sur lesquels utiliser: d'autres fonctionnalités qui vous intéressent, la popularité, etc.
Vous pouvez simplement l'essayer, je pense que vous devriez pouvoir faire fonctionner mongo en 5 minutes.
la source