wake-up-neo.net

NoSQL - MongoDB vs CouchDB

Ich bin ein absoluter Noob, 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. Welchen empfehlen Sie als ersten Schritt in die NoSQL-Welt zu lernen?

148
mpenrow

Siehe folgende Links

Update : Ich fand großartig Vergleich von NoSQL Datenbanken.

MongoDB (3.2)

  • Geschrieben in: C++
  • Hauptpunkt: JSON-Dokumentenspeicher
  • Lizenz: AGPL (Treiber: Apache)
  • Protokoll: Benutzerdefiniert, binär (BSON)
  • Master/Slave-Replikation (automatisches Failover mit Replikatsätzen)
  • Sharding eingebaut
  • Abfragen sind Javascript-Ausdrücke
  • Führen Sie serverseitig beliebige Javascript-Funktionen aus
  • Hat geospatial Indizierung und Abfragen
  • Mehrere Speicher-Engines mit unterschiedlichen Leistungsmerkmalen
  • Leistung über Funktionen
  • Dokumentenvalidierung
  • Journaling
  • Leistungsfähiges Aggregationsframework
  • Auf 32-Bit-Systemen auf ~ 2,5 GB beschränkt
  • Textsuche integriert
  • GridFS zum Speichern von Big Data + Metadaten (eigentlich kein FS)
  • Rechenzentrum bewusst

Am besten verwendet : Wenn Sie dynamische Abfragen benötigen. Wenn Sie lieber Indizes definieren, werden Funktionen nicht zugeordnet/reduziert. Wenn Sie eine gute Leistung auf einer großen DB benötigen. Wenn Sie CouchDB wollen, aber Ihre Daten sich zu sehr ä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
  • Nur-Crash-Design (zuverlässig)
  • Muss von Zeit zu Zeit verdichtet werden
  • Ansichten: eingebettete Karte/verkleinern
  • Formatieren von Ansichten: Listen und Shows
  • Serverseitige Dokumentenvalidierung möglich
  • Authentifizierung möglich
  • Echtzeit-Updates über '_changes' (!)
  • Umgang mit Anhängen

Am besten verwendet : Zum Sammeln und gelegentlichen Ändern von 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.

146
amra

Wenn Sie aus der MySQL-Welt kommen, "fühlt" sich MongoDB aufgrund seiner abfrageähnlichen Sprachunterstützung viel natürlicher an.

Ich denke, das ist es, was es für viele Menschen so freundlich macht.

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 eine Master-Slave-Slave- * -Einrichtung. Sie können nur in einem Replikatsatz auf den Master schreiben und von jedem 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 einen CDN zu erstellen, bei dem alle globalen Knoten synchronisiert bleiben müssen, auch wenn Lese-/Schreibzugriff auf alle Knoten besteht, ist die Replikation in CouchDB für Sie ein großer Segen.

Während MongoDB eine abfrageähnliche Sprache hat, die Sie verwenden können und die sich sehr intuitiv anfühlt, verwendet 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-Tree
  • Sie können es nicht dynamisch mit so 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 bald.
  • Diese Ansichten werden mithilfe des Map-Reduction-Ansatzes definiert und als JavaScript-Funktionen definiert.
  • Wenn Sie eine Ansicht definieren, beginnt die Datenbank damit, alle Dokumente der Datenbank, der Sie die Ansicht zugewiesen haben, durchzuziehen und die Ergebnisse Ihrer Funktionen als "Index" für diese Daten aufzuzeichnen.
  • Es gibt einige grundlegende Abfragen, die Sie für die Ansichten durchführen können, z. B. die Abfrage eines bestimmten Schlüssels (ID) oder eines ID-Bereichs, unabhängig davon, was Ihre Karten-/Reduzierungsfunktion bewirkt.
  • Lesen Sie durch diese Folien , es ist die beste Klarstellung der Karte/Verkleinerung in Couch, die ich gesehen habe.

Beide Quellen verwenden JSON-Dokumente, aber CouchDB folgt diesem Ansatz: "Jeder Server ist ein Master und kann sich mit der Welt synchronisieren". Dies ist fantastisch, wenn Sie es brauchen, während MongoDB wirklich das MySQL der NoSQL-Welt ist.

Also, wenn das eher nach dem klingt, was Sie brauchen/wollen, dann probieren Sie es aus.

Kleine Unterschiede wie Mongos Binärprotokoll gegenüber der RESTful-Schnittstelle von CouchDB sind nur geringfügige Details.

Wenn Sie rohe Geschwindigkeit und zur Hölle mit Datensicherheit wollen, können Sie Mongo schneller als CouchDB laufen lassen , da Sie sagen können, dass es nicht genügend Arbeitsspeicher hat und nicht Festlegen von Dingen auf der Festplatte mit Ausnahme von 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 unbrauchbare, verrückte Geschwindigkeit unbrauchbar ist, wenn ein Serverabsturz oder ein Festplattenausfall Ihre Datenbank in Vergessenheit gerät, sodass der Datenpunkt nicht so erstaunlich ist, wie es scheint (es sei denn, Sie führen Echtzeit-Handelssysteme auf Wall aus Straße, in diesem Fall sehen Sie sich Redis an).

Hoffe, dass alles hilft!

120
Riyad Kalla

Es gibt jetzt viel mehr NoSQL-Datenbanken auf dem Markt als jemals zuvor. Ich schlage vor, dass Sie sich sogar den Gartner Magic Quadrant ansehen, wenn Sie eine Datenbank suchen, die sich aufgrund von Support, Erweiterbarkeit, Verwaltung und Kosten auch hervorragend für Unternehmensanwendungen eignet.

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 Version basiert, die in dem Bericht (2.5.1) gezeigt wird, da es fast 2 Revisionen hinter CB Server ist, der sich der Veröffentlichung von 4.0 in 2H15 nähert .

http://www.couchbase.com/coming-in-couchbase-server-4-

Der andere Teil über Couchbase als Anbieter/Produkt ist, dass es sich um einen Mehrzwecktyp von DB handelt. Es kann als reiner K/V-Speicher fungieren, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, zwischengespeichert, mit Persistenz zwischenspeichern und unterstützt ANSI 92-konformes SQL mit automatischen Verknüpfungen, Replikation zu DR-Clustern per Knopfdruck und Sogar eine mobile Komponente ist in das Ökosystem integriert.

Wenn nicht anders, lohnt es sich, die neuesten Benchmarks zu lesen:

http://info.couchbase.com/Benchmark_MongoDB_VS_CouchbaseServer_HPW_BM.htmlhttp://info.couchbase.com/NoSQL-Technical-Comparison-Report.html

2
Austin Gonyou

Edureka-Videos in YouTube zu NoSQL sind einige der besten Video-Tutorials. Ich habe auf MongoDb & Cassandra nach dem Anschauen dieser Videos begonnen.

https://www.youtube.com/watch?v=gJFG04Sy6NY
https://www.youtube.com/watch?v=KSq6tMMXZ8s
https://www.youtube.com/watch?v=3z1KFA2qcSo

Gute Präsentationen finden Sie auf slideshare.net

http://www.slideshare.net/quipo/nosql-databases-why-what-and-when?qid=3bb9f7f6-a53d-41b1-8403-cd6f181d0ca7&v=qf1&b=&from_search=1

http://www.slideshare.net/EdurekaIN/no-sql-databases-35591065?qid=f1b9c095-6d70-4d0a-91da-1df664c4f389&v=qf1&b=&from_search=3 

Edureka Präsentation in Slideshare ist Erweiterung des Videos in YouTube. Sie können diese Präsentation als Zusammenfassung des YouTube-Videos behandeln.

1
Ravindra babu