example - when to use mongodb vs sql




NoSQL-MongoDB vs CouchDB (4)

Ich bin ein komplettes 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. Was empfehlen Sie als Einstieg in die NoSQL-Welt?


Edureka Videos in youtube in Bezug auf NoSQL sind einige der besten Video-Tutorials. Ich habe mit MongoDb & Cassandra angefangen, nachdem ich diese Videos gesehen habe.

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

Gute Präsentationen sind in slideshare.net verfügbar

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 eine Erweiterung des Videos in youtube. Sie können diese Präsentation als Zusammenfassung des Youtube-Videos behandeln.


Es gibt jetzt viel mehr NoSQL-Datenbanken auf dem Markt als je zuvor. Ich schlage vor, dass Sie sich sogar den Gartner Magic Quadrant ansehen, wenn Sie nach einer Datenbank suchen, die sich auch für Unternehmensanwendungen eignet, die auf Unterstützung, Erweiterbarkeit, Verwaltung und Kosten basieren.

http://www.gartner.com/technology/reprints.do?id=1-23A415Q&ct=141020&st=sb

Ich würde Couchbase allen empfehlen, die es noch nicht ausprobiert haben, aber nicht basierend auf der im Bericht (2.5.1) gezeigten Version, da es fast 2 Revisionen hinter CB Server gibt, die Version 4.0 in 2H15 .

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

Der andere Teil über Couchbase als Anbieter / Produkt ist, dass es ein Multi-Use-Typ von DB ist. Es kann als reiner K / V-Speicher, dokumentenorientierte Datenbank mit mehrdimensionaler Skalierung, Memcached, Cache-Speicherung mit Persistenz und unterstützt ANSI 92-konformes SQL mit automatischen Joins, Replikation zu DR-Clustern auf Knopfdruck und sogar hat eine mobile Komponente in das Ökosystem eingebaut.

Wenn nicht anders, lohnt es sich, sich die neuesten Benchmarks anzusehen:

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


Siehe folgende Links

Update : Ich habe einen großartigen Vergleich von NoSQL- Datenbanken gefunden.

MongoDB (3.2)

  • Geschrieben in: C ++
  • Hauptpunkt: JSON-Dokumentenspeicher
  • Lizenz: AGPL (Treiber: Apache)
  • Protokoll: Benutzerdefiniert, binär (BSON)
  • Master / Slave-Replikation (automatisches Failover mit Replikat-Sets)
  • Einpassen integriert
  • Abfragen sind Javascript-Ausdrücke
  • Führen Sie beliebige Javascript-Funktionen serverseitig aus
  • Geospatial Indexierung und Abfragen
  • Mehrere Speichermodule mit unterschiedlichen Leistungsmerkmalen
  • Leistung über Funktionen
  • Dokumentenvalidierung
  • Journaling
  • Leistungsfähiges Aggregations-Framework
  • Auf 32-Bit-Systemen beschränkt auf ~ 2,5 GB
  • Textsuche integriert
  • GridFS zum Speichern von Big Data + Metadaten (nicht eigentlich ein FS)
  • Rechenzentrum bewusst

Am besten verwendet : Wenn Sie dynamische Abfragen benötigen. Wenn Sie es vorziehen, Indizes zu definieren, Funktionen nicht zuordnen / reduzieren. Wenn Sie eine gute Leistung in einer großen DB brauchen. Wenn Sie CouchDB wollten, aber Ihre Daten zu viel ändern, füllen Sie 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 - Schreiboperationen blockieren keine Lesevorgänge
  • Frühere Versionen von Dokumenten sind verfügbar
  • Crash-only (zuverlässiges) Design
  • Verdichtet von Zeit zu Zeit
  • Ansichten: eingebettete Karte / reduzieren
  • Formatieren von Ansichten: Listen und Shows
  • Serverseitige Dokumentenvalidierung möglich
  • Authentifizierung möglich
  • Echtzeit-Updates über '_changes' (!)
  • Handhabung von Anhängen
  • also CouchApps (eigenständige js apps)

Am besten verwendet : Zum Sammeln, gelegentlich ändern von Daten, auf denen vordefinierte Abfragen ausgeführt werden sollen. Orte, an denen die Versionsverwaltung 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 MongoDB Ihnen aufgrund seiner Abfrage-ähnlichen Sprachunterstützung viel "natürlicher" fühlen.

Ich denke, das ist es, was es für viele Leute 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 so ähnlich.

Die MongoDB-Replikation (Replikatsätze) ist ein Master-Slave-Slave-Slave-Setup, Sie können nur in einen Replikatsatz zum Master schreiben und von jedem von ihnen lesen.

Für eine Standard-Site-Konfiguration ist das in Ordnung. Es entspricht sehr gut der MySQL-Nutzung.

Aber wenn Sie versuchen, einen globalen Dienst wie einen CDN zu erstellen, der alle globalen Knoten synchron halten muss, obwohl Sie alle lesen / schreiben, wird Ihnen etwas wie die Replikation in CouchDB ein riesiger Segen sein.

Während MongoDB eine abfrageähnliche Sprache hat, die Sie verwenden können und sich sehr intuitiv anfühlt, verwendet CouchDB einen "Map-Reduce" -Ansatz und diese Konzepte von Ansichten. Es fühlt sich auf den ersten Blick seltsam an, aber sobald Sie den Dreh raus haben, beginnt es sich intuitiv zu fühlen.

Hier ist ein kurzer Überblick, damit es einen Sinn ergibt:

  • 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 bald.
  • Diese Ansichten werden mithilfe des Map-Reduced-Ansatzes definiert und sind als JavaScript-Funktionen definiert.
  • Wenn Sie eine Sicht definieren, beginnt die DB damit, alle Dokumente des DB, dem Sie die Sicht zugewiesen haben, zu füttern und die Ergebnisse Ihrer Funktionen als "Index" für diese Daten zu erfassen.
  • Es gibt einige grundlegende Abfragen, die Sie für die Ansichten ausführen können, z. B. die Frage nach einem bestimmten Schlüssel (ID) oder einem Bereich von IDs, unabhängig davon, was Ihre Map / Reduce-Funktion tut.
  • Lesen Sie diese Folien , es ist die beste Erklärung der Karte / reduzieren in Couch, die ich gesehen habe.

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

Also, wenn das mehr wie das, was Sie brauchen / wollen, klingt, gehen Sie dafür.

Kleine Unterschiede wie das Binärprotokoll von Mongo oder die RESTful-Schnittstelle von CouchDB sind alles andere als kleine Details.

Wenn Sie mit roher Geschwindigkeit und zu hoher Datensicherheit arbeiten möchten, können Sie Mongo schneller als CouchDB ausführen, da Sie feststellen können, dass es nicht genügend Arbeitsspeicher zur Verfügung stellt und keine Dinge auf die Festplatte schreibt, außer für spärliche Intervalle.

Sie können das gleiche mit Couch tun, aber es ist HTTP-basierte Kommunikationsprotokoll wird 2-4 mal langsamer als rohe binäre Kommunikation mit Mongo in dieser "Geschwindigkeit über alles!" Szenario.

Denken Sie daran, dass rohe, verrückte Geschwindigkeit nutzlos ist, wenn ein Server-Crash oder ein Festplattenfehler korrumpiert und Ihre Datenbank in Vergessenheit geraten, so dass der Datenpunkt nicht so erstaunlich ist, wie es scheint (es sei denn, Sie handeln Echtzeit-Handelssysteme auf Wall) Straße, in diesem Fall schaue auf Redis).

Hoffe, dass alles hilft!





nosql