Sehr alte Frage, aber sie steht über Google und ich mag die Antworten, die ich sehe, nicht ganz. Hier ist meine eigene.
Couchdb bietet viel mehr als die Möglichkeit, CouchApps zu entwickeln. Die meisten Leute verwenden CouchDb in einer klassischen 3-Ebenen-Webarchitektur.
In der Praxis ist der entscheidende Faktor für die meisten Benutzer die Tatsache, dass MongoDb Ad-hoc-Abfragen mit einer SQL-ähnlichen Syntax ermöglicht, CouchDb jedoch nicht (Sie müssen Karten erstellen / Ansichten reduzieren, wodurch einige Benutzer ausgeschaltet werden, obwohl diese Ansichten erstellt werden ist Rapid Application Development freundlich - sie haben nichts mit gespeicherten Prozeduren zu tun).
Um die in der akzeptierten Antwort angesprochenen Punkte anzusprechen: CouchDb verfügt über ein hervorragendes Versionsverwaltungssystem, dies bedeutet jedoch nicht, dass es nur für Orte geeignet ist (oder besser geeignet ist), an denen die Versionsverwaltung wichtig ist. Außerdem ist couchdb dank seiner Nur-Anhängen-Funktion sehr schreibgeschützt (Schreibvorgänge kehren in kürzester Zeit zurück und garantieren, dass niemals Daten verloren gehen).
Eine sehr wichtige Sache, die von niemandem erwähnt wird, ist die Tatsache, dass CouchDb auf B-Tree-Indizes basiert. Dies bedeutet, dass unabhängig davon, ob Sie 1 "Zeile" oder 20 Milliarden haben, die Abfragezeit immer unter 10 ms bleibt. Dies ist ein Game Changer, der CouchDb zu einer Datenbank mit geringer Latenz und Lesefreundlichkeit macht, und dies sollte wirklich nicht übersehen werden.
Um fair und umfassend zu sein, ist der Vorteil, den MongoDb gegenüber CouchDb hat, Werkzeug und Marketing. Sie verfügen über erstklassige Citizen-Tools für alle wichtigen Sprachen und Plattformen, die das Onboarding vereinfachen. Dies ergänzt die Ad-hoc-Abfrage und erleichtert den Übergang von SQL.
CouchDb verfügt nicht über diese Tooling-Ebene - obwohl derzeit viele Bibliotheken verfügbar sind -, aber CouchDb wird als HTTP-API verfügbar gemacht, und es ist daher recht einfach, einen Wrapper in Ihrer Lieblingssprache zu erstellen, um mit ihm zu sprechen. Ich persönlich mag diesen Ansatz, da er das Aufblähen vermeidet und es Ihnen ermöglicht, nur das zu nehmen, was Sie wollen (Prinzip der Schnittstellentrennung).
Daher würde ich sagen, dass die Verwendung des einen oder anderen bei ihren Paradigmen weitgehend eine Frage des Komforts und der Präferenz ist. Der CouchDb-Ansatz "passt einfach" für bestimmte Personen, aber wenn Sie nach dem Erlernen der Datenbankfunktionen (im ausführlichen offiziellen Handbuch ) keinen "Höllen-Ja" -Moment haben, sollten Sie wahrscheinlich weitermachen.
Ich würde davon abraten, CouchDb zu verwenden, wenn Sie nur "das richtige Werkzeug für den richtigen Job" verwenden möchten. weil Sie herausfinden werden, dass Sie es nicht einfach so verwenden können und am Ende sauer sind und Blog-Beiträge wie "Wo sind Joins in CouchDb?" schreiben. und "Wo ist Transaktionsmanagement?". In der Tat ist Couchdb - paradoxerweise - sehr transparent, erfordert aber gleichzeitig einen Paradigmenwechsel und eine Änderung in der Art und Weise, wie Sie Probleme angehen, um wirklich zu glänzen (und wirklich zu arbeiten).
Aber wenn Sie das getan haben, zahlt es sich wirklich aus. Ich persönlich brauche sehr starke Gründe oder einen großen Deal Breaker für ein Projekt, um eine andere Datenbank auszuwählen, aber bisher habe ich noch keine getroffen.