2013-02-19 15 views

Antwort

75

Das glaube ich auch nicht besser ist als die anderen, ist es nicht nur das eine oder das andere. Das sind sehr unterschiedliche Systeme, jede mit ihren Stärken und Schwächen, also kommt es wirklich auf Ihre Anwendungsfälle an. Sie können definitiv in der gleichen Infrastruktur in Ergänzung verwendet werden.

Um den Unterschied besser zu erklären, ich ein Bild von Cassandra: the Definitive Guide ausleihen möchte, wo sie über das CAP-Theorem gehen. Was sie sagen, ist grundsätzlich für jede verteilte System, müssen Sie, ein ausgewogenes Verhältnis zwischen Konsistenz finden Verfügbarkeit und Partitionstoleranz, und Sie können nur zwei dieser Eigenschaften realistisch erfüllen. Daraus kann man sehen, dass:

  • Cassandra erfüllt die Verfügbarkeit und Partition Tolerance Eigenschaften.
  • HBase erfüllt die Konsistenz und Partition Toleranz Eigenschaften.

CAP

Wenn es um Hadoop wird HBase oben auf HDFS gebaut, die es ziemlich bequem macht, um zu verwenden, wenn Sie bereits eine Hadoop-Stack haben. Es wird auch von Cloudera unterstützt, einer Standard-Unternehmensverteilung für Hadoop.

Aber Cassandra hat auch mehr Integration mit Hadoop, nämlich DataStax Brisk das an Popularität gewinnt. Sie können Daten auch von der Ausgabe eines Hadoop-Jobs in einen Cassandra-Cluster unter Verwendung eines von Cassandra bereitgestellten Ausgabeformats (z. B. BulkOutputFormat) nativ streamen. Wir sind nicht mehr so ​​weit, dass Cassandra nur ein eigenständiges Projekt war.

Nach meiner Erfahrung, die ich gefunden habe, dass Cassandra für für Scans

zufällig liest, und nicht so sehr genial ist ein wenig Farbe ins Bild zu setzen, habe ich in meinem Job sowohl in der Verwendung gewesen gleiche Infrastruktur, und HBase hat einen ganz anderen Zweck als Cassandra. Ich habe Cassandra hauptsächlich für schnelle Suchvorgänge in Echtzeit verwendet, während ich HBase eher für schwere ETL-Batch-Jobs mit geringeren Latenzanforderungen verwendet habe.

Dies ist eine Frage, die wirklich eines Blogbeitrags würdig wäre. Anstatt also weiter und weiter zu gehen, möchte ich Sie auf an article hinweisen, die viele der Hauptunterschiede zwischen den beiden Systemen zusammenfasst. Das Endergebnis ist, es gibt keine überlegene Lösung IMHO, und Sie sollten wirklich über Ihre Anwendungsfälle nachdenken, welches System besser geeignet ist.

+0

Wie kann MySql Verfügbarkeit in Ihrem Diagramm haben? Wie ist die Verfügbarkeit definiert? Es hat keinen Sinn für mich, ich denke, dass Sie zwischen C oder A wählen müssen, keine 2. http://codahale.com/you-cant-sacrifice-partition-tolerance/ – user1944408

+1

@ user1944408 Natürlich in jedem System gibt es ein Gefühl des Kompromisses, dies ist nur um die Gleitabhängigkeiten zu veranschaulichen. Sie können nicht 100% einer Eigenschaft erhalten, während Sie 100% einer anderen Eigenschaft beibehalten, Sie müssen einige Kompromisse eingehen. In Ihrem Artikel wird von der Partitionstoleranz ausgegangen, daher können Sie mit dieser Annahme natürlich nicht Konsistenz und Verfügbarkeit haben. Wie aus demselben Buch entnommen, können die Systeme in der CA-Leitung beispielsweise zweiphasige Commits für verteilte Transaktionen sein, so dass das System blockieren würde, wenn eine Netzwerkpartition auftritt. –

+1

Das bedeutet, dass sie nicht verfügbar sind, wenn die Partition auftritt, oder? Aber das ist auch bei HBase dasselbe, also würde HBase CA sein. Ich denke, dass Datenbanken CP oder AP aber nicht CA sein können. Welche Eigenschaft der CA-Datenbank ist nicht in der CP-Datenbank enthalten? Kannst du mir ein Beispiel geben? Wenn eine Partition passiert, was ist der Unterschied zwischen HBase und sharked MySql? – user1944408

14

Wir müssen Profis vergleichen & beide Datenbanken und eine gehütete Entscheidung je nach Geschäftsanforderungen treffen.

Cassandra

Vorteile:

  1. Genügt Verfügbarkeit & Partitioning von CAP Theorie & schließlich konsequent.
  2. Scalable mit großen Clustern ohne Single Point of Failures
  3. SQL wie die Sprache für die Entwicklung ermöglicht es Entwicklern leicht von RDBMS zum Übergang Hintergrund
  4. Cassandra hat ausgezeichnete einreihige Leseleistung so lange als Eventual Konsistenz Semantik sind ausreichend für die Use-Fälle
  5. Unterstützung von Datastax ist eine große Vorteil
  6. Optimiert für schreibt

Nachteile:

  1. Hat Bereich basierend auf Zeilenscans nicht
  2. Unterstützt nicht Atomic vergleichen und Set
  3. Cassandra jedoch zwingend nötig nicht unterstützt Coprozessor Funktionalit y`
  4. Cassandra unterstützt sekundäre Indizes für Spaltenfamilien, in denen der Spaltenname bekannt ist. (Nicht in dynamischen Spalten).
  5. Aggregationen in Cassandra nicht durch die Cassandra unterstützten Knoten

HBase

Pro:

  1. Starke Konsistenz und trifft C onssistency & Partitionierung von CAP Theorie.
  2. RDBMS Äquivalent löst & Stored Procedures
  3. Hadoop Unterstützung
  4. Reichweite basiert Row Scans
  5. Unterstützung Atomic Vergleichen und Set
  6. Optimiert für liest, unterstützt durch single-write maste r
  7. Unterstützung für Aggregation
  8. Hohe Skalierbarkeit & Datenauto sharding

Nachteile:

  1. Lacks freundliche Sprache für die Entwicklung
  2. Nicht s upport Read Load Balancing gegen eine einzelne Zeile
  3. Inter-Zeilenoperationen sind nicht atomar
  4. Single Point of Failure wenn nur ein HBase Meister verwendet worden

Werfen Sie einen Blick auf article 1, article 2 und dieses presentation für weitere Details.

Verwandte Themen