Ich stecke zwischen diesen beiden NoSQL-Datenbanken fest.
In meinem Projekt werde ich eine Datenbank innerhalb einer Datenbank erstellen. Zum Beispiel brauche ich eine Lösung, um dynamische Tabellen zu erstellen.
So können Benutzer Tabellen mit Spalten und Zeilen erstellen. Ich denke, entweder MongoDB oder CouchDB werden dafür gut sein, aber ich bin mir nicht sicher, welche. Ich werde auch effizientes Paging brauchen.
mongodb
performance
comparison
couchdb
nosql
Luke101
quelle
quelle
Antworten:
Welche 2 von C, A & P (Konsistenz, Verfügbarkeit und Partitionstoleranz) sind für Sie wichtiger? Kurzreferenz, die visuelle Anleitung zu NoSQL-Systemen
In einem Blogbeitrag, Cassandra gegen MongoDB gegen CouchDB gegen Redis gegen Riak gegen HBase gegen Membase gegen Neo4j , werden für jede NoSQL-Datenbank die am besten verwendeten Szenarien verglichen. Den Link zitieren,
Ein aktueller (Februar 2012) und umfassenderer Vergleich von Riyad Kalla,
In einem Blog-Beitrag (Oktober 2011) von jemandem, der beides ausprobiert hat, kommentierte A MongoDB Guy Learns CouchDB , dass das Paging der CouchDB nicht so nützlich sei.
Ein datierter (Jun 2009) Benchmark von Kristina Chodorow ( Teil des Teams hinter MongoDB ),
Ich würde mich für MongoDB entscheiden.
Ich hoffe es hilft.
quelle
Die Antworten erschweren vor allem die Geschichte.
Das ist es. Sofern Sie nicht die (großartige) Fähigkeit von CouchDB benötigen, auf Mobil- und Desktopgeräten zu replizieren, bietet MongoDB derzeit den Vorteil in Bezug auf Leistung, Community und Tools.
quelle
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.
quelle
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.
Gilt das nicht für fast alle Datenbanken? Auf diese Weise impliziert dies etwas anderes.Diese Fragen selbst stellen? Und Sie entscheiden über Ihre DB-Auswahl.
quelle
Ich fasse die Antworten in diesem Artikel zusammen:
http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-Was- sind- die- Nachteile-und-Nachteile-von-jedem
MongoDB: Bessere Abfrage, Datenspeicherung in BSON (schnellerer Zugriff), bessere Datenkonsistenz, mehrere Sammlungen
CouchDB: Bessere Replikation mit Master-to-Master-Replikation und Konfliktlösung, Datenspeicherung in JSON (lesbar, besserer Zugriff über REST-Services), Abfrage durch Map-Reduce.
Zusammenfassend ist MongoDB schneller und CouchDB sicherer.
Außerdem: http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
quelle
Beachten Sie ein Problem mit spärlichen eindeutigen Indizes in MongoDB. Ich habe es getroffen und es ist extrem umständlich, es zu umgehen.
Das Problem ist folgendes: Sie haben ein Feld, das eindeutig ist, wenn es vorhanden ist, und Sie möchten alle Objekte finden, bei denen das Feld fehlt. Die Art und Weise, wie spärliche eindeutige Indizes in Mongo implementiert werden, besteht darin, dass Objekte, bei denen dieses Feld fehlt, überhaupt nicht im Index enthalten sind - sie können nicht durch eine Abfrage in diesem Feld abgerufen werden -,
{$exists: false}
funktionieren einfach nicht.Die einzige Problemumgehung, die ich mir ausgedacht habe, ist eine spezielle Null-Wertefamilie, bei der ein leerer Wert in ein spezielles Präfix (wie null :) übersetzt wird, das mit einer UUID verkettet ist. Dies ist ein echtes Problem, da man beim Schreiben / Abfragen / Lesen darauf achten muss, dass die leeren Werte geändert werden. Ein großes Ärgernis.
Ich habe noch nie die serverseitige Javascript-Ausführung in MongoDB verwendet (es wird sowieso nicht empfohlen) und ihre Zuordnung / Reduzierung hat eine schreckliche Leistung, wenn es nur einen Mongo-Knoten gibt. Aus all diesen Gründen denke ich jetzt darüber nach, CouchDB auszuprobieren. Vielleicht passt es mehr zu meinem speziellen Szenario.
Übrigens, wenn jemand den Link zum jeweiligen Mongo-Problem kennt, der das Problem des spärlichen eindeutigen Index beschreibt, teilen Sie ihn bitte mit.
quelle
Ich bin mir sicher, dass Sie es mit Mongo können (besser vertraut damit), und ziemlich sicher, dass Sie es auch mit Couch können.
Beide sind dokumentationsorientiert (JSON-basiert), sodass keine "Spalten", sondern Felder in Dokumenten vorhanden sind - sie können jedoch vollständig dynamisch sein.
Beide tun es, wenn Sie sich andere Faktoren ansehen möchten, die Sie verwenden sollten: andere Funktionen, die Ihnen wichtig sind, Beliebtheit usw. Google Insights, in der Tat.com-Stellenanzeigen sind Möglichkeiten, die Beliebtheit zu überprüfen.
Sie könnten es einfach versuchen, ich denke, Sie sollten in der Lage sein, Mongo in 5 Minuten laufen zu lassen.
quelle