2010-09-06 13 views
16

Ich wollte nur wissen, ob es einen grundlegenden Unterschied zwischen Hbase, Cassandra, Couchdb und Monogodb gibt? Mit anderen Worten, konkurrieren sie alle auf dem gleichen Markt und versuchen, genau die gleichen Probleme zu lösen. Oder passen sie am besten in verschiedene Szenarien?HBase cassandra couchdb mongodb ... ein grundlegender Unterschied?

All dies kommt auf die Frage, was soll ich wann wählen. Geschmackssache?

Danke,

Federico

+0

Dieser aktuelle Artikel ist hilfreich: http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis – coderz

Antwort

12

Das sind einige lange Antworten von @Bohzo. (aber sie sind gute Links)

Die Wahrheit ist, sie sind "Art" im Wettbewerb. Aber sie haben definitiv unterschiedliche Stärken und Schwächen und lösen nicht alle die gleichen Probleme.

Zum Beispiel bieten Couch und Mongo Map-Reduce-Engines als Teil des Hauptpakets. HBase ist (im Prinzip) eine Ebene über Hadoop, also erhalten Sie auch M-R über Hadoop. Cassandra konzentriert sich stark darauf, ein Key-Value-Shop zu sein und verfügt über Plug-Ins, um Hadoop über die oberste Ebene zu "schichten" (so dass Sie Karten reduzieren können).

Einige der DBs bieten MVCC (Multi-Version Concurrency Control). Mongo nicht.

Alle diese DBs sind horizontal skalierbar, aber auf unterschiedliche Weise. Alle diese DBs versuchen auch auf verschiedene Arten Flexibilität bereitzustellen. Flexible Dokumentgrößen oder REST-APIs oder hohe Redundanz oder Benutzerfreundlichkeit - alle machen unterschiedliche Kompromisse.

Also zu Ihrer Frage: Mit anderen Worten, konkurrieren sie alle auf dem gleichen Markt und versuchen, genau die gleichen Probleme zu lösen?

  1. Ja: sie alle versuchen, das Problem der Datenbank-Skalierbarkeit und Leistung zu lösen.
  2. Nein: Sie machen auf jeden Fall verschiedene Arten von Kompromissen.

Mit was sollten Sie anfangen?

Mann, das ist eine schwierige Frage. Ich arbeite für ein großes Unternehmen, das Tonnen von Daten pusht und wir haben einige Jahre durchgemacht. Wir haben Cassandra schon vor ein paar Jahren ausprobiert und es konnte die Ladung nicht bewältigen. Wir verwenden Hadoop überall, aber es hat definitiv eine steile Lernkurve und es hat in einigen unserer Umgebungen nicht funktioniert. In letzter Zeit haben wir versucht, Cassandra + Hadoop zu machen, aber es stellte sich heraus, dass es viel Konfigurationsarbeit war.

Persönlich bewegt meine Abteilung mehrere Dinge zu MongoDB. Unsere Gründe dafür sind ehrlich gesagt Einfachheit.

Das Einrichten von Mongo auf einer Linux-Box dauert Minuten und erfordert keinen Root-Zugriff oder eine Änderung am Dateisystem oder irgendetwas Besonderes. Es sind keine verrückten Konfigurationsdateien oder Java-Rekompilierungen erforderlich. Aus dieser Perspektive war Mongo die einfachste "Einstiegsdroge", um Leute in KV-/Dokumentenläden zu bringen.

+0

was ist mit Couch, haben Sie das versucht? –

+0

Welcher Teil? Ich kenne einige Leute, die Membase verwenden (Memcache mit Persistenz). Es ist einfach zu verwalten und hat eine nette Benutzeroberfläche dafür. Aber es versucht auch nicht sehr viel. CouchDB hat sich selbst als sehr gut für die Einrichtung mit Multi-Master verkauft, aber ich musste es nie benutzen. CouchDB hat Sekundärindizes und einige ähnliche Funktionen wie MongoDB. Es geht also darum, wie komfortabel Sie alles nutzen. –

+0

IS Mongo besser als Cassandra für schreibt? Cassandra schreibt in der Erinnerung und jeder sagt Cassandra funktioniert einfach sehr gut mit Schreiben. Ist Mongo noch besser? – Peter

5

Kurze Antwort: Test bevor Sie in der Produktion verwenden.

Ich kann meine Erfahrung mit sowohl HBase (extensiven) und MongoDB (nur ab) anbieten.

Auch wenn sie nicht die gleiche Art von Geschäften sind, lösen sie die gleichen Probleme:

  • skalierbare Speicherung von Daten
  • zufälliger Zugriff auf die Daten
  • geringe Latenz

Wir waren zuerst sehr begeistert von HBase. Es ist auf Hadoop (das ist felsenfest) gebaut, es ist unter Apache, es ist aktiv ... was willst du mehr? Unsere Erfahrung:

  • HBase ist zerbrechlich
  • Administrator Alptraum (voller Konfigurationseinstellungen, wo es auch keine andere als ideal sind, nicht transparente Konfiguration, Änderungen von Version zu Version, ...)
  • Daten verlieren (es sei denn, Sie haben die X-Konfiguration eingestellt und Y auf ... geändert. Sie haben das herausgefunden, als HBase abgestürzt ist und wir 2 Stunden (!!!) Daten verloren haben, weil WAL nicht richtig eingerichtet wurde.
  • fehlt sekundär Indizes
  • fehlt jede Möglichkeit, eine Sicherung der Datenbank ohne durchzuführen t schließ es runter

Alles in allem war HBase ein Albtraum. Ich würde es niemandem empfehlen, außer unseren direkten Konkurrenten. :)

MongoDB löst alle diese Probleme und viele mehr. Es ist eine Freude, das Setup einzurichten, es macht es zu einem einfachen und transparenten Job und die Standardkonfigurationseinstellungen machen Sinn. Sie können (Hot-) Backups durchführen, Sie können sekundäre Indizes haben. Von dem, was ich gelesen habe, würde ich MapReduce auf MongoDB nicht empfehlen (JavaScript, 1 Thread pro Knoten), aber Sie können Hadoop dafür verwenden.

Und es ist auch sehr aktiv im Vergleich zu HBase.

auch: http://www.google.com/trends?q=HBase%2CMongoDB

Need I say more? :)

UPDATE: viele Monate später muss ich sagen MongoDB auf allen Konten und mehr geliefert. Der einzige wirkliche Nachteil ist, dass Hosting-Unternehmen nicht so anbieten, wie sie MySQL anbieten. ;) Es sieht auch so aus, als ob MapReduce in 2.2 zu multi-threaded wird. Trotzdem würde ich MR auf diese Weise nicht benutzen. YMMV.

1

Cassandra ist gut zum Schreiben der Daten. Es hat den Vorteil, dass "Schreiben niemals fehlschlägt". Es hat keinen Single-Point-Fehler.

HBase ist sehr gut für die Datenverarbeitung. HBase basiert auf dem Hadoop File System (HDFS), sodass HBase sich keine Sorgen um Datenreplikation und Datenkonsistenz machen muss. HBase hat den Single Point of Failure. Ich bin mir nicht wirklich sicher, was es bedeutet, wenn es einen Single Point of Failure gibt, dann ist es ähnlich wie RDBMS, wo wir Single Point of Failure haben. Ich könnte falsch im Sinne sein, da ich ziemlich neu bin.

Wie abou RIAK? Hat jemand Erfahrung mit RIAK? Ich weiß, wo du das bezahlen musst, ich bin mir nicht sicher. Brauchen Sie Erklärung.

Eine weitere Sache, die Sie bevorzugen, wenn Sie nur eine Menge Daten zu lesen sind. Sie haben keine Bedenken mit dem Schreiben. Stellen Sie sich vor, Sie haben eine Datenbank mit Pitabyte und Sie möchten schnell suchen, welche NOSQL-Datenbank Sie bevorzugen würden?