Big Data ist hier und genau wie der Big Brother aus Orwells Anti-Utopie ist sie im 21. Jahrhundert überall. Egal, ob es Ihnen gefällt oder nicht, Sie mussen damit umgehen. Die Frage ist, mit welchen Tools.
Glücklicherweise haben die großen Köpfe von Google eine perfekte Datenbanktechnologie unter den Namen BigTable entwickelt, die dann zwei noch bessere Lösungen lieferte: Apache Cassandra und Apache HBase.
Auf den ersten Blick scheinen die gleich zu sein, weil sie von derselben Technologie abstammen. Die Realität sagt aber, dass sie sich stark unterscheiden.
Ja, sowohl Cassandra als auch HBase sind als NoSQL-Breitspaltenspeicher bekannt, die für die Verarbeitung großer Datenmengen ausgelegt sind. Ihre Form von Tabellen und Spaltenfamilien lässt auf eine vollständige strukturelle Identität schließen, aber die Funktionalität und Anwendung dieser Technologien sind nicht identisch.
Schauen wir uns also beide genauer an, um ihre Vor- und Nachteile sowie die spezifischen Merkmale zu klären, die Softwareentwicklungsteams dazu veranlassen, eine dieser Datenbanken für bestimmte Projekte zu empfehlen.
HBase ist eine spaltenorientierte Datenbank und eine klassische Darstellung des BigTable-Speichers von Google. Sie können sich HBase-Speicher als Tabelle mit Zeilen und Spalten vorstellen.
Zeilen werden mit Zeilenschlüsseln und Spalten in Spaltenfamilien organisiert. Es gibt auch Spaltenqualifizierer, die eine bessere Datenorganisation von Zellen innerhalb einer Spaltenfamilie ermöglichen. Zellen, Zeilen und Spalten haben ihren eigenen Wert und Zeitstempel.
Das Datenorganisationssystem von HBase basiert auf dem Alphabet, sodass die lexikografisch engen Zeilen zusammengestellt werden. Da der Domänenname das am häufigsten verwendete Zeilenschlüsselmuster ist, sollten Sie ihn in umgekehrter Benennung (org.apache.www, org.apache.mail usw.) speichern, damit die eng verwandten Daten zusammengehalten werden.
Die Namenskonventionen in Cassandra sind dieselben wie für HBase: Tabelle mit Zeilen und Spalten, Spaltenfamilien und Zeilenschlüsseln. Die Bedeutung dieser Wörter wäre jedoch etwas anders. In Cassandra ist es die Spaltenfamilie, die durch die Zeilenschlüssel organisiert wird. Jede Spalte, die aus einzelnen Zellen besteht, hat ihre eigenen definitiven Elemente: Name / Schlüssel, Wert und einen Zeitstempel.
Der Unterschied zu HBase besteht in Superspalten (mit zwei oder mehr Unterspalten), die in Superspaltenfamilien gruppiert sind.
Cassandra organisiert alle Daten in Partitionen, die aus diesen Spalten und Spaltenfamilien bestehen. Alle Partitionen werden auf einem Knoten gespeichert, von dem eine Kombination einen Cluster bildet.
Dies bedeutet, dass das System bei jedem Einfügen eines Datensatzes in diese Datenbank den Wert des Partitionsschlüssels dieser Daten hascht. Basierend auf diesem Hashwert bestimmt Cassandra dann, welcher Knoten für die Daten verantwortlich ist.
Hier ist ein einfacher Vergleich der beiden:
Dies sind die wichtigsten strukturellen Unterschiede, die die einzigartigen Anwendungen beider Systeme kennzeichnen. Trotz der unterschiedlichen Terminologie und der unterschiedlichen Modelle verbinden beide Systeme themenrelevante Daten. Sie belegen keinen Platz, wenn eine bestimmte Datenzelle leer ist. Für einen reibungslosen Betrieb benötigen beide Speicher Spaltenfamilien, die später nicht mehr geändert werden können.
Die Unterschiede in der Architektur zwischen den beiden Systemen sind umgekehrt: Casandra ist masterlos und HBase ist masterbasiert.
Dies bedeutet, dass Cassandra niemals ausfallen wird, bei HBase ist das jedoch möglich.
Der letzte Kunde kommuniziert direkt mit dem Slave-Server, ohne den Master kontaktieren zu müssen. Dies bedeutet, dass der gesamte Cluster nach dem Ausfall des Masters einige Zeit zum Betrieb hat, aber das wichtige Wort hier ist „einige“.
Mit Cassandra entstehen solche Probleme nicht. Da es keinen Master hat, ist die Spannung des Systems gleichmäßig verteilt, so dass es einwandfrei funktioniert. Wenn Ausfallzeiten und vollständige Systemausfälle nicht für Sie sind, wissen Sie bereits, welches System Ihren Anforderungen besser entspricht – Cassandra.
Es gibt noch einen weiteren wichtigen architektonischen Unterschied zwischen den Systemen: Datenreplikation und Systemkonsistenz.
HBase schreibt immer alle Daten an einem Ort, sodass der Pfad zu jedem Datenelement im gesamten System immer klar und konsistent ist. Cassandra hingegen muss Daten über sich selbst duplizieren, um einen fehlerfreien Betrieb zu gewährleisten. Dies kann zu Datenkonsistenzproblemen aufgrund von Datenverdoppelung und -replikation führen.
Wenn also Konsistenz wichtiger ist als stabiler Betrieb, ist HBase Ihre Wahl.
Die Architektur von HBase hat nur ein Ziel: Datenverwaltung, während Cassandra auch Datenspeicherung als Vorteil für die Datenverwaltung anbieten kann.
Dies wird durch die enge Verbindung und Abhängigkeit von HBase von HDFS für die Speicherung, Apache Zookeeper für die Verwaltung von Metadaten und Serverstatus sowie von Metadaten usw. verursacht. Vergessen Sie nicht, dass HBase zum Ausführen von Abfragen zusätzliche Technologien benötigt, während Cassandra über eine eigene Sprache verfügt.
In Bezug auf das Schreiben entspricht die Leistung von Cassandra fast 385.000 Operationen pro Sendung, während für HBase die Anzahl unter 58.500 Operationen in einem Cluster mit 32 Knoten liegt. Da HBase das Protokoll im Gegensatz zu Casandra nicht gleichzeitig zwischenspeichert oder schreibt, arbeitet diese Datenbank langsamer.
Da HBase beispielsweise eng mit HDFS verbunden ist, muss der Speicher warten, bis das Dateisystem die Daten physisch gespeichert hat. Um die erforderlichen Daten zu erhalten, muss ein Client die Anfrage über Zookeeper über den Server senden, auf dem die erforderlichen Daten gespeichert sind. Dann müssen sie den Server fragen, „wer“ die erforderlichen Daten speichert, und erst danach die Daten an den erforderlichen Ort schreiben.
Laut Statistik hat HBase beim Lesen nur 8.000 Lesevorgänge pro Sekunde, verglichen mit 129.000 Lesevorgängen in Cassandra innerhalb eines 32-Knoten-Clusters. Rein mathematisch sieht Cassandra besser aus. Machen Sie aber keine voreilige Schlussfolgerungen.
Bei der Leseleistung geht es hauptsächlich um Konsistenz, und es ist der Trumpf von HBase. Wann immer Sie schnelle Lesevorgänge benötigen, ist HBase Ihre Wahl.
Die Besonderheiten von Cassandra-Architektur sollten Sie daran erinnern, dass die Lesevorgänge inkonsistent sind, weil die masterlose Struktur beim Abrufen von Daten zu einem Durcheinander führt.
Die Betriebsmerkmale von HBase hingegen sprechen für Konsistenz, weil alle Lesevorgänge innerhalb des mehrschichtigen Systems an denselben Server (wie in HDFS) gerichtet sind. Ja, das Zögern könnte sich auf die Geschwindigkeit des Datenabrufs mit HBase beziehen, aber keine Sorge, blockieren Sie den Cache, der häufig HDFS-Daten adressiert, und die Bloom-Filter mit ungefähren „Adressen“ für alle Daten helfen, den Prozess zu beschleunigen.
Die Entscheidung, was besser ist, 8.000 präzise Lesevorgänge oder 129.000 inkonsistente Lesevorgänge durchzuführen, hängt von Ihnen. Die Antwort ist jedoch ziemlich einfach: Das mehrschichtige Indexsystem von HBase ist tatsächlich effizienter als die Indizes von Cassandra.
NoSQL-Datenbanken sind nicht für ihre exquisite Sicherheit bekannt, ebenso wie die Datenbanken in diesem Artikel. Die Sicherheitsfunktionen von Cassandra basieren auf dem Inter-Note- und Client-to-Node-Schutz in Form der Authentifizierung und Autorisierung aller Aktionen.
Wenn jemand auf Daten in Cassandra zugreifen muss, muss er eine geeignete Benutzerrolle haben. Der Zugriff auf Datenebenen und -teile wird basierend auf Benutzerrollen definiert.
In HBase kann der Zugriff auf Daten tiefer gehen – auf Zellebene. Die Sicherheit basiert hier auf der Zuweisung von Sichtbarkeitsbezeichnungen zu Datensätzen und nicht auf der Identifizierung von Benutzerrollen wie in Cassandra. Da HBase auf Technologien von Drittanbietern basiert, kann gesagt werden, dass das Sicherheitsniveau etwas niedriger ist als das von Cassandra. Dies kann jedoch auch als Vorteil genutzt werden, weil mit HBase sicherere und zuverlässigere externe Technologien für den Datenschutz angesprochen werden können.
Skalierbarkeit und Operationen mit Zeitreihendaten sind die wichtigsten Vorteile und damit die häufigsten Apps für Cassandra und HBase.
Beide Systeme eignen sich hervorragend für Kundenverhalten und Website-Besuche, Sensorablesungen in IoT-Systemen, Börsendaten usw.
Wie oben erläutert, sind das Lesen und Schreiben von Daten ihre Stärken. Wie Sie sich erinnern, ist das Lesen jedoch eher die Aufgabe von HBase. Das Scannen großer Datenmengen auf der Suche nach einem bestimmten Ergebnis oder einer Textanalyse, die in sozialen Netzwerken üblich ist, die Suche nach Webseiten und Wörterbücher sind Aufgaben, die HBase zu erledigen hat.
Wenn Ihr Ziel mit der Analyse grundlegender Daten zusammenhängt, eignet sich dies außerdem am besten zum Summieren und Zählen.
Immer wenn Sie große Datenmengen schreiben (aufnehmen) müssen, wird Cassandra effizienter. Es bietet ein höheres Maß an Stabilität und ermöglicht die Entwicklung synchronisierter Rechenzentren in verschiedenen Ländern auf der ganzen Welt. Wenn das Schreiben von Daten für Ihr Unternehmen wichtiger ist als das Lesen, sollten Sie auch Spark hinzufügen, um die Scanleistung von Cassandra zu verbessern.
Immer wenn Sie Echtzeitanalysen und verfügbare Daten benötigen, kann Cassandra beides anbieten. Wenn Sie jedoch eine genauere Analyse benötigen und die Zeit nicht Ihr Druckpunkt ist, entscheiden Sie sich für HBase.
Obwohl die Informationen im Artikel auf viele Ähnlichkeiten zwischen den Systemen hinweisen, definiert ein genauerer Blick deren Unterschied ganz klar.
Cassandra kann selbstständig arbeiten, während HBase von Technologien von Drittanbietern abhängt und eher als Metadatenspeicher betrachtet werden sollte. Als unabhängiges System ist HBase komplizierter, und daher erfordern Konfiguration, Wartung und Sicherheit plus mehr Personalressourcen insgesamt.
Wenn Sie Konsistenz anstreben und in kleinen Datenbanken nach kleinen Informationen suchen, kann HBase zu einem perfekten und zuverlässigen Desktop-Tool werden. Cassandra ist jedoch gut darin, Daten massiv aufzunehmen und zu speichern.
Auf jeden Fall mögen beide Systeme keine häufigen Löschungen und Aktualisierungen der gespeicherten Daten. Immer wenn Sie hören, dass Cassandra und HBase sich so ähnlich sind, dass es keine Rolle spielt, für welche Sie sich entscheiden, laufen Sie vor einem solchen Experten davon.
Jedes der Systeme hat seine Vor- und Nachteile. Bevor Sie also eines auswählen, sollten Sie Ihre täglichen Aufgaben berücksichtigen, um eine vernünftige Wahl zu treffen.