Ich bin ein absoluter Neuling, wenn es um die NoSQL-Bewegung geht. Ich habe viel über MongoDB und CouchDB gehört. Ich weiß, dass es Unterschiede zwischen den beiden gibt. Was empfehlen Sie als ersten Schritt in die NoSQL-Welt?
Als ersten Schritt ist mongoDB besser, weil es einfacher zu lernen ist, aber einige Probleme hat. Es gibt keine beste Wahl für die Verwendung einer bestimmten noSQL-Datenbank. Dies hängt davon ab, was Sie tun müssen. Überprüfen Sie dokumentenorientiert, Schlüsselwert, grafisch orientiert, spaltenorientiert.
Master / Slave-Replikation (Auto-Failover mit Replikatsätzen)
Sharding eingebaut
Abfragen sind Javascript-Ausdrücke
Führen Sie beliebige Javascript-Funktionen serverseitig aus
Hat geografische Indizierung und Abfragen
Mehrere Speicher-Engines mit unterschiedlichen Leistungsmerkmalen
Leistung über Funktionen
Dokumentenvalidierung
Tagebuch schreiben
Leistungsstarkes Aggregationsframework
Auf 32-Bit-Systemen auf ~ 2,5 GB begrenzt
Textsuche integriert
GridFS zum Speichern von Big Data + Metadaten (eigentlich kein FS)
Rechenzentrum bewusst
Am besten geeignet : Wenn Sie dynamische Abfragen benötigen. Wenn Sie lieber Indizes definieren möchten, nicht Funktionen zuordnen / reduzieren. Wenn Sie eine gute Leistung in einer großen Datenbank benötigen. Wenn Sie CouchDB wollten, sich Ihre Daten jedoch zu stark ändern, füllen Sie die Festplatten.
Zum Beispiel : Für die meisten Dinge, die Sie mit MySQL oder PostgreSQL tun würden, aber vordefinierte Spalten halten Sie wirklich zurück.
CouchDB (1.2)
Geschrieben in: Erlang
Hauptpunkt: DB-Konsistenz, Benutzerfreundlichkeit
Lizenz: Apache
Protokoll: HTTP / REST
Bidirektionale (!) Replikation,
kontinuierlich oder ad-hoc,
mit Konflikterkennung,
also Master-Master-Replikation. (!)
MVCC - Schreibvorgänge blockieren keine Lesevorgänge
Frühere Versionen von Dokumenten sind verfügbar
Crash-only (zuverlässiges) Design
Muss von Zeit zu Zeit verdichtet werden
Ansichten: eingebettete Karte / reduzieren
Formatierungsansichten: Listen & Shows
Serverseitige Dokumentenüberprüfung möglich
Authentifizierung möglich
Echtzeit-Updates über '_changes' (!)
Anhangshandhabung
Am besten geeignet : Zum Sammeln von gelegentlich wechselnden Daten, für die vordefinierte Abfragen ausgeführt werden sollen. Orte, an denen die Versionierung wichtig ist.
Zum Beispiel : CRM, CMS-Systeme. Die Master-Master-Replikation ist eine besonders interessante Funktion, die eine einfache Bereitstellung an mehreren Standorten ermöglicht.
Wenn Sie aus der MySQL-Welt kommen, wird sich MongoDB aufgrund seiner abfrageähnlichen Sprachunterstützung für Sie viel natürlicher "anfühlen".
Ich denke, das macht es für viele Menschen so freundlich.
CouchDB ist fantastisch, wenn Sie die wirklich großartige Master-Master-Replikationsunterstützung mit einem Multi-Node-Setup nutzen möchten, möglicherweise in verschiedenen Rechenzentren oder ähnlichem.
Die Replikation von MongoDB (Replikatsätze) ist ein Master-Slave-Slave-Slave- * Setup. Sie können nur in einem Replikatsatz auf den Master schreiben und von einem dieser Sätze lesen.
Für eine Standard-Site-Konfiguration ist das in Ordnung. Es ist sehr gut auf die MySQL-Nutzung abgestimmt.
Wenn Sie jedoch versuchen, einen globalen Dienst wie ein CDN zu erstellen, der alle globalen Knoten synchronisieren muss, obwohl sie alle lesen / schreiben, ist die Replikation in CouchDB ein großer Segen für Sie.
Während MongoDB eine abfrageartige Sprache hat, die Sie verwenden können und die sich sehr intuitiv anfühlt, verfolgt CouchDB einen "Kartenreduzierungs" -Ansatz und diese Konzepte von Ansichten. Es fühlt sich anfangs seltsam an, aber wenn man den Dreh raus hat, fühlt es sich wirklich intuitiv an.
Hier ist eine kurze Übersicht, damit es Sinn macht:
CouchDB speichert alle Ihre Daten in einem B-Baum
Sie können es nicht dynamisch mit etwas wie "SELECT * FROM user WHERE ..." "abfragen".
Stattdessen definieren Sie diskrete "Ansichten" Ihrer Daten ... "hier ist eine Ansicht aller meiner Benutzer", "hier ist eine Ansicht aller Benutzer älter als 10" "hier ist eine Ansicht aller Benutzer älter als 30" und demnächst.
Diese Ansichten werden mithilfe des Map-Reduce-Ansatzes definiert und als JavaScript-Funktionen definiert.
Wenn Sie eine Ansicht definieren, beginnt die Datenbank, alle Dokumente der Datenbank, der Sie die Ansicht zugewiesen haben, durch sie zu führen und die Ergebnisse Ihrer Funktionen als "Index" für diese Daten aufzuzeichnen.
Es gibt einige grundlegende Abfragen, die Sie in den Ansichten ausführen können, z. B. das Abfragen eines bestimmten Schlüssels (ID) oder eines ID-Bereichs, unabhängig davon, was Ihre Map / Reduce-Funktion tut.
Lesen Sie diese Folien durch , es ist die beste Klarstellung der Karte / Verkleinerung in Couch, die ich gesehen habe.
Beide Quellen verwenden also JSON-Dokumente, aber CouchDB folgt diesem Ansatz: "Jeder Server ist ein Master und kann mit der Welt synchronisieren". Dieser Ansatz ist fantastisch, wenn Sie ihn benötigen, während MongoDB wirklich das MySQL der NoSQL-Welt ist.
Also, wenn das eher nach dem klingt, was Sie brauchen / wollen, dann machen Sie das.
Kleine Unterschiede wie das Binärprotokoll von Mongo gegenüber der RESTful-Schnittstelle von CouchDB sind nur geringfügige Details.
Wenn Sie rohe Geschwindigkeit und Hölle mit Datensicherheit wollen, können Sie Mongo schneller als CouchDB laufen lassen , da Sie ihm sagen können, dass er nicht über genügend Arbeitsspeicher verfügt und keine Daten auf die Festplatte überträgt, außer in spärlichen Intervallen.
Sie können dasselbe mit Couch tun, aber das HTTP-basierte Kommunikationsprotokoll wird in dieser "Geschwindigkeit über alles" 2-4x langsamer sein als die rohe binäre Kommunikation mit Mongo! Szenario.
Denken Sie daran, dass verrückte verrückte Geschwindigkeit nutzlos ist, wenn ein Serverabsturz oder ein Festplattenfehler Ihre Datenbank beschädigt und in Vergessenheit gerät, sodass der Datenpunkt nicht so erstaunlich ist, wie es scheint (es sei denn, Sie betreiben Echtzeit-Handelssysteme an der Wand) Straße, in diesem Fall schauen Sie sich Redis an).
Obwohl ich denke, dass der Kommentar immer noch funktioniert, haben Sie Recht, VIEL hat sich im letzten halben Jahrzehnt geändert und mein Kommentar sollte leicht verworfen werden können.
Es gibt jetzt viel mehr NoSQL-Datenbanken auf dem Markt als jemals zuvor. Ich empfehle sogar einen Blick auf den Gartner Magic Quadrant, wenn Sie nach einer Datenbank suchen, die sich auch für Unternehmensanwendungen eignet, basierend auf Support, Erweiterbarkeit, Verwaltung und Kosten.
Ich möchte Couchbase jedem empfehlen, der es noch nicht ausprobiert hat, aber nicht auf der im Bericht (2.5.1) gezeigten Version basiert, da es fast zwei Revisionen hinter dem heutigen CB Server liegt und sich der Veröffentlichung von 4.0 in 2H15 nähert .
Der andere Teil von Couchbase als Anbieter / Produkt ist, dass es sich um einen Mehrzweck-DB-Typ handelt. Es kann als reiner K / V-Speicher, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, Memcached, Cache-beiseite mit Persistenz fungieren und unterstützt ANSI 92-kompatibles SQL mit automatischen Verknüpfungen, Replikation auf DR-Cluster per Knopfdruck und Es ist sogar eine mobile Komponente in das Ökosystem integriert.
Wenn nichts anderes, lohnt es sich, die neuesten Benchmarks zu überprüfen:
Antworten:
Siehe folgende Links
Update : Ich habe einen großartigen Vergleich von NoSQL- Datenbanken gefunden.
MongoDB (3.2)
Am besten geeignet : Wenn Sie dynamische Abfragen benötigen. Wenn Sie lieber Indizes definieren möchten, nicht Funktionen zuordnen / reduzieren. Wenn Sie eine gute Leistung in einer großen Datenbank benötigen. Wenn Sie CouchDB wollten, sich Ihre Daten jedoch zu stark ändern, füllen Sie die Festplatten.
Zum Beispiel : Für die meisten Dinge, die Sie mit MySQL oder PostgreSQL tun würden, aber vordefinierte Spalten halten Sie wirklich zurück.
CouchDB (1.2)
Am besten geeignet : Zum Sammeln von gelegentlich wechselnden Daten, für die vordefinierte Abfragen ausgeführt werden sollen. Orte, an denen die Versionierung wichtig ist.
Zum Beispiel : CRM, CMS-Systeme. Die Master-Master-Replikation ist eine besonders interessante Funktion, die eine einfache Bereitstellung an mehreren Standorten ermöglicht.
quelle
Wenn Sie aus der MySQL-Welt kommen, wird sich MongoDB aufgrund seiner abfrageähnlichen Sprachunterstützung für Sie viel natürlicher "anfühlen".
Ich denke, das macht es für viele Menschen so freundlich.
CouchDB ist fantastisch, wenn Sie die wirklich großartige Master-Master-Replikationsunterstützung mit einem Multi-Node-Setup nutzen möchten, möglicherweise in verschiedenen Rechenzentren oder ähnlichem.
Die Replikation von MongoDB (Replikatsätze) ist ein Master-Slave-Slave-Slave- * Setup. Sie können nur in einem Replikatsatz auf den Master schreiben und von einem dieser Sätze lesen.
Für eine Standard-Site-Konfiguration ist das in Ordnung. Es ist sehr gut auf die MySQL-Nutzung abgestimmt.
Wenn Sie jedoch versuchen, einen globalen Dienst wie ein CDN zu erstellen, der alle globalen Knoten synchronisieren muss, obwohl sie alle lesen / schreiben, ist die Replikation in CouchDB ein großer Segen für Sie.
Während MongoDB eine abfrageartige Sprache hat, die Sie verwenden können und die sich sehr intuitiv anfühlt, verfolgt CouchDB einen "Kartenreduzierungs" -Ansatz und diese Konzepte von Ansichten. Es fühlt sich anfangs seltsam an, aber wenn man den Dreh raus hat, fühlt es sich wirklich intuitiv an.
Hier ist eine kurze Übersicht, damit es Sinn macht:
Beide Quellen verwenden also JSON-Dokumente, aber CouchDB folgt diesem Ansatz: "Jeder Server ist ein Master und kann mit der Welt synchronisieren". Dieser Ansatz ist fantastisch, wenn Sie ihn benötigen, während MongoDB wirklich das MySQL der NoSQL-Welt ist.
Also, wenn das eher nach dem klingt, was Sie brauchen / wollen, dann machen Sie das.
Kleine Unterschiede wie das Binärprotokoll von Mongo gegenüber der RESTful-Schnittstelle von CouchDB sind nur geringfügige Details.
Wenn Sie rohe Geschwindigkeit und Hölle mit Datensicherheit wollen, können Sie Mongo schneller als CouchDB laufen lassen , da Sie ihm sagen können, dass er nicht über genügend Arbeitsspeicher verfügt und keine Daten auf die Festplatte überträgt, außer in spärlichen Intervallen.
Sie können dasselbe mit Couch tun, aber das HTTP-basierte Kommunikationsprotokoll wird in dieser "Geschwindigkeit über alles" 2-4x langsamer sein als die rohe binäre Kommunikation mit Mongo! Szenario.
Denken Sie daran, dass verrückte verrückte Geschwindigkeit nutzlos ist, wenn ein Serverabsturz oder ein Festplattenfehler Ihre Datenbank beschädigt und in Vergessenheit gerät, sodass der Datenpunkt nicht so erstaunlich ist, wie es scheint (es sei denn, Sie betreiben Echtzeit-Handelssysteme an der Wand) Straße, in diesem Fall schauen Sie sich Redis an).
Hoffe das alles hilft!
quelle
Schauen Sie sich diese Links an:
MongoDB vs CouchDB (von MongoDB Seite)
CouchDB vs MongoDB: Ein Versuch für einen fundierteren Vergleich
CouchDB vs. MongoDB Benchmark (Leistungsvergleich)
quelle
Es gibt jetzt viel mehr NoSQL-Datenbanken auf dem Markt als jemals zuvor. Ich empfehle sogar einen Blick auf den Gartner Magic Quadrant, wenn Sie nach einer Datenbank suchen, die sich auch für Unternehmensanwendungen eignet, basierend auf Support, Erweiterbarkeit, Verwaltung und Kosten.
http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb
Ich möchte Couchbase jedem empfehlen, der es noch nicht ausprobiert hat, aber nicht auf der im Bericht (2.5.1) gezeigten Version basiert, da es fast zwei Revisionen hinter dem heutigen CB Server liegt und sich der Veröffentlichung von 4.0 in 2H15 nähert .
http://www.couchbase.com/coming-in-couchbase-server-4-0
Der andere Teil von Couchbase als Anbieter / Produkt ist, dass es sich um einen Mehrzweck-DB-Typ handelt. Es kann als reiner K / V-Speicher, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, Memcached, Cache-beiseite mit Persistenz fungieren und unterstützt ANSI 92-kompatibles SQL mit automatischen Verknüpfungen, Replikation auf DR-Cluster per Knopfdruck und Es ist sogar eine mobile Komponente in das Ökosystem integriert.
Wenn nichts anderes, lohnt es sich, die neuesten Benchmarks zu überprüfen:
http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.html http://info.couchbase.com/NoSQL-Technical-Comparison-Report.html
quelle