687 Stimmen

Wann ist CouchDB besser als MongoDB und wann ist es umgekehrt?

Ich stecke zwischen diesen beiden NoSQL-Datenbanken fest.

In meinem Projekt werde ich eine Datenbank innerhalb einer Datenbank erstellen. Ich brauche zum Beispiel eine Lösung, um dynamische Tabellen zu erstellen.

So können Benutzer Tabellen mit Spalten und Zeilen erstellen. Ich denke, dass entweder MongoDB oder CouchDB dafür gut geeignet sind, aber ich bin mir nicht sicher, welches davon. Ich brauche auch ein effizientes Paging.

24voto

mark Punkte 53152

Achten Sie auf ein Problem mit spärlichen eindeutigen Indizes in MongoDB. Ich habe es getroffen und es ist extrem mühsam, es zu umgehen.

Das Problem ist folgendes: Sie haben ein Feld, das nur dann eindeutig ist, wenn es vorhanden ist, und Sie möchten alle Objekte finden, bei denen das Feld nicht vorhanden ist. Die Art und Weise, wie spärliche eindeutige Indizes in Mongo implementiert werden, ist, dass Objekte, bei denen das Feld fehlt, überhaupt nicht im Index enthalten sind - sie können nicht durch eine Abfrage zu diesem Feld abgerufen werden. {$exists: false} funktioniert einfach nicht.

Die einzige Abhilfe, die mir eingefallen ist, ist eine spezielle Null-Wertefamilie, bei der ein leerer Wert in ein spezielles Präfix übersetzt wird (wie Null: ), die mit einer uuid verkettet sind. Das ist ein echtes Problem, denn man muss beim Schreiben/Queren/Lesen auf die Umwandlung in/aus den leeren Werten achten. Ein großes Ärgernis.

Ich habe nie verwendet Server-Seite Javascript-Ausführung in MongoDB (es ist nicht sowieso empfohlen) und ihre Karte / reduzieren hat schreckliche Leistung, wenn es nur ein Mongo-Knoten. Aus all diesen Gründen überlege ich nun, CouchDB auszuprobieren, vielleicht passt es besser zu meinem speziellen Szenario.

BTW, wenn jemand den Link zu der entsprechenden Mongo Ausgabe kennt, die das spärliche eindeutige Indexproblem beschreibt - bitte teilen.

7voto

dm. Punkte 1950

Ich bin sicher, dass man das mit Mongo kann (ich kenne mich damit besser aus), und ich bin ziemlich sicher, dass man das auch mit Couch kann.

Beide sind dokumentenorientiert (JSON-basiert), so dass es keine "Spalten", sondern eher Felder in Dokumenten gibt, die jedoch vollständig dynamisch sein können.

Sie tun es beide, aber Sie sollten auch andere Faktoren in Betracht ziehen: andere Funktionen, die Ihnen wichtig sind, Popularität, usw. Google Insights und indeed.com-Stellenanzeigen wären Möglichkeiten, um die Popularität zu prüfen.

Probieren Sie es einfach aus, ich denke, Sie sollten in der Lage sein, Mongo in 5 Minuten zum Laufen zu bringen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X