MongoDB, HBase, Redis, Apache Cassandra, Couch DB

Datenflut bereitet NoSQL den Weg

23.04.2013
Von Eberhard Wolff, Kai Spichale, Thomas  Westphal und Andreas Hartmann

HBase

Die Homepage des Apache-HBase-Projekts, auf dem die im Big-Data-Bereich populäre Datenbank Hadoop aufsetzt.
Die Homepage des Apache-HBase-Projekts, auf dem die im Big-Data-Bereich populäre Datenbank Hadoop aufsetzt.

HBase ist die in Java geschriebene Datenbank von Hadoop, einem Open-Source-Projekt der Apache Software Foundation. Das Hadoop-Projekt beinhaltet verschiedene zusammenhängende Technologien zur robusten Verarbeitung großer Datenmengen in Computerclustern. Das Datenmodell von HBase ähnelt Googles BigTable, weswegen HBase auch als BigTable-Klon bezeichnet wird. Wie Googles BigTable arbeitet HBase mit starker Konsistenz, so dass, wie bei einer relationalen Datenbank, zu jedem Zeitpunkt alle Benutzer die gleiche Sicht auf die Daten haben. Das Datenmodell basiert auf Tabellen - ebenfalls wie bei relationalen Datenbanken: Eine HBase-Tabelle ist eine sortierte Liste von Zeilen, die im Gegensatz zum relationalen Modell aus einer variablen Anzahl von Spalten bestehen. Fachlich zusammenhängende Spalten werden aus Performance-Gründen zu Spaltenfamilien gruppiert und in separaten Dateien gespeichert. Dieses Modell ist wesentlich einfacher als das relationale Modell, aber gleichzeitig mächtiger als ein Key-Value-Store, so dass auch komplexe Datenmodelle abgebildet werden können, ohne dabei zu große Kompromisse bezüglich der Performance einzugehen.

HBase speichert seine Daten nicht selbst, sondern bedient sich der Funktionen des verteilten Dateisystems HDFS (Hadoop Distributed File System).
HBase speichert seine Daten nicht selbst, sondern bedient sich der Funktionen des verteilten Dateisystems HDFS (Hadoop Distributed File System).
Foto: Apache.org

Genaugenommen speichert HBase seine Daten nicht selbst, sondern bedient sich der Funktionen des verteilten Dateisystems HDFS (Hadoop Distributed File System). Durch die redundante Speicherung und Verteilung der Daten auf verschiedene Server ist HBase durch HDFS tolerant gegenüber Hardware-Ausfall. HBase speichert eine konfigurierbare Anzahl von Versionen der Datensätze. Bei jedem Schreibvorgang wird eine neue Version hinzugefügt, man spricht von inkrementellen Updates. Zu alte oder zu viele Versionen können automatisch gelöscht werden. HBase ist ein sortierter Datenspeicher: Die Zeilen in den Tabellen sind nach ihrem Zeilenschlüssel sortiert, die Spalten in den Zeilen nach ihrem Namen und die eigentlichen Datensätze in den Spalten nach ihrer Version. Diese Sortierung erlaubt sehr schnelle index-basierte Lese- und Schreiboperationen.

HBase eignet sich gut zum Speichern von Zählern

Der Einsatz von HBase ist sinnvoll, wenn die Spalten relativ klein sind und viele inkrementelle Updates durchzuführen sind. Zur Speicherung großer Binärdaten ist die direkte Nutzung von HDFS besser geeignet. Während HDFS für Anfragen mit geringer Latenz optimiert ist, setzt HDFS auf hohen Datendurchsatz. Aufgrund der Sortierung der Schlüssel sind Scanning und sequenzielles Lesen performanter als wahlfreie Punktanfragen. Am schnellsten sind die Schreiboperationen. Deswegen eignet sich HBase zum Speichern von Zählern. Auf Basis der Zähler können Echtzeitanalysen erstellt werden. Für relationale Datenbanken ist das Hochzählen teuer, denn der Zähler muss gelesen, modifiziert und geschrieben werden. Weil inkrementelle Updates so effizient sind, können auch sehr viele Zähler gleichzeitig verwendet werden. Beispielsweise kann der Aufruf einzelner Artikel in einem Online-Magazin gezählt werden, um in Echtzeit zu erfahren, welche Artikel in der vergangenen Stunde am populärsten waren. Die Spalten einer Tabelle sind nicht festgelegt und können sich zwischen einzelnen Zeilen unterscheiden. Dieses schemalose Datenmodell eignet sich sehr gut für unstrukturierte oder semi-strukturierte Daten. HBase ist besonders gut für Datensätze geeignet, bei denen nicht alle Felder mit Werten belegt sind. Felder ohne Werte benötigen nämlich keinen Speicherplatz.

Hadoop MapReduce und Hive können in Kombination mit HBase verwendet werden, um Analysen und komplexe Anfragen durchzuführen, die dann auf alle Knoten im Cluster verteilt werden. Konfigurationen können kommandozeilenbasiert mit der HBase Shell durchgeführt werden. Wahlweise kann die Thrift RPC-API, die unterschiedliche Programmiersprachen unterstützt, oder die JSON RESTful-API über HTTP verwendet werden, um auf HBase zuzugreifen. HBase ist Teil der aktiven Hadoop Community und wird zügig weiterentwickelt. Unternehmen wie Facebook, eBay und NAVTEQ setzen HBase erfolgreich ein. Eine spezielle Hadoop Distribution sowie Support für Unternehmen, die Hadoop produktiv einsetzen wollen, wird von Cloudera angeboten. Weiterführende Informationen zu HBase bietet die Projektseite http://hbase.apache.org/.

HBase

Vorteile

+ Arbeitet wie RDBMS mit starker Konsistenz

+ Kann sehr effizient inkrementelle Updates durchführen

+ Unterstützt Analysen auf riesigen Datenmengen mit MapReduce und Hive

Nachteile

- Ungeeignet für große binäre Daten

- Zumindest ohne MapReduce und Hive sind keine direkten Datenabfragen ohne Primärschlüssel möglich

Im Video: NoSQL-Datenbanken - CouchDB