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

Apache Cassandra

Cassandra gehört inzwischen zu den Top-Level-Projekten der Apache Software Foundation.
Cassandra gehört inzwischen zu den Top-Level-Projekten der Apache Software Foundation.

2007 begann Facebook mit der Entwicklung einer proprietären Lösung zum Speichern und Suchen von Benutzernachrichten für die Inbox-Suche. Das war die Geburtsstunde von Cassandra, das inzwischen zu den Top-Level-Projekten der Apache Software Foundation gehört. Die neue Datenbank sollte auf kostengünstigen Commodity-Servern laufen und inkrementell skalierbar sein, um dem wachsenden User Generated Content langfristig Herr zu werden.

Cassandra gehört zur Familie der Wide Column Stores und lässt sich als hochskalierbarer, schlussendlich konsistenter, verteilter und strukturierter Schlüssel-Wert-Speicher beschreiben. Hochskalierbar bedeutet, dass ein Cassandra-Cluster durch Hinzufügen weiterer Server horizontal skaliert werden kann. Auf diese Weise sind riesige Datenmengen auch mit Commodity-Hardware verwaltbar. Hochverfügbarkeit wird durch Replikation und Verteilung der Daten auf mehreren Servern garantiert. Dabei kann der Ort für die Replikate so gewählt werden, dass diese sich in verschiedenen Rechenzentren befinden. Schlussendlich konsistent (eventually consistent) bedeutet, dass innerhalb eines begrenzten Zeitfensters nicht immer alle User die gleiche Sicht auf die Daten haben. Dadurch kann eine bessere Performance gewährleistet werden.

Cassandra unterstützt verschiedene Konsistenzstufen für Lese- und Schreiboperationen, um den Spagat zwischen Konsistenz und Performance für den jeweiligen Anwendungsfall zu meistern. Das System wurde in Java entwickelt und kann daher auf praktisch allen Plattformen eingesetzt werden. Client-Bibliotheken auch für andere Programmiersprachen wie Python, PHP und C# sind vorhanden. Die Daten werden in Form von mehrfach ineinandergeschachtelten Schlüssel-Wert-Paaren gespeichert. Das Datenmodell ist strukturiert, aber schemalos und daher sehr flexibel. Durch die Integration der Apache-Hadoop-Technik unterstützt Cassandra ebenfalls Map- Reduce zur nebenläufigen Verarbeitung großer Datenmengen im Computer-Cluster.

Mehrfach praxiserprobt

Cassandra verwendet wie Redis Sharding und Replikate, aber es gibt keine Unterscheidung zwischen Master- und Slave-Servern. Mit diesem Ansatz wird die Schreib-Performance verbessert, starke Konsistenz kann jedoch nicht garantiert werden. Während Redis auf Konfliktvermeidung ausgelegt ist, arbeitet Cassandra mit Mechanismen zur Konfliktauflösung.

Cassandra wird von Unternehmen wie Facebook, Twitter, Cloudkick und Rackspace erfolgreich eingesetzt und stellt damit seine Zuverlässigkeit und Reife unter Beweis. Weitere Informationen zu Cassandra gibt es unter http://cassandra.apache.org.

Apache Cassandra

Vorteile:

+ Gute Performance durch horizontale Skalierbarkeit und Verwendung von kos-tengünstiger Commodity-Hardware;

+ garantierte Hochverfügbarkeit durch Verwaltung von Replikaten auf verschiedenen Servern und Rechenzentren;

+ flexibles schemaloses Datenmodell.

Nachteile:

- Unterstützt verschiedene Konsistenzstufen, aber keine Transaktionen mit ACID-Eigenschaften;

- eingeschränkte Datenabfrage soll erst ab Version 0.8 durch die Cassandra Query Language verbessert werden.