Apache Cassandra
Cassandra ist ein einfaches, verteiltes Datenbankverwaltungssystem für sehr große strukturierte Daten (ein sogenanntes „NoSQL“-Datenbanksystem). Es ist auf hohe Skalierbarkeit und Ausfallsicherheit bei großen, verteilten Systemen ausgelegt. Die Daten werden in Schlüssel-Wert-Relationen abgelegt. Es ist offen dokumentiert und in Java implementiert. Die Implementierung wird als freie Software unter den Bedingungen von Version 2 der Apache-Lizenz verbreitet.

Geschichte 
Cassandra wurde ursprünglich von Avinash Lakshman (einem der Autoren von Amazons Dynamo) und Prashant Malik bei Facebook für das dortige Inbox-Search-Problem entwickelt und im Juli 2008 freigegeben. Danach haben auch andere große Unternehmen wie IBM, Rackspace und Twitter zum Code beigetragen. Das Projekt wurde im März 2009 bei der Apache Software Foundation als Unterprojekt in den Apache Incubator aufgenommen. Am 17. Februar 2010 wurde Cassandra von der Apache Software Foundation zum „Top-Level“-Projekt erklärt und ist somit kein Unterprojekt von Apache Incubator mehr. Die am 2. Juni 2011 erschienene Version 0.8 führt die Cassandra Query Language (CQL) ein, eine Abfragesprache mit SQL-ähnlicher Syntax.

Konzept 
Cassandra ist eine spaltenorientierte NoSQL-Datenbank. Die Partitionierung erfolgt hingegen zeilenbasiert. Sie kann als Mischung aus Amazon Dynamo und Bigtable gesehen werden, da es leicht weiterentwickelt die Replikationsmechanismen von Dynamo nutzt, gleichzeitig aber nach außen die Datenstruktur von Bigtable anbietet.

Verwendung 
Cassandra wird bei Apple, Twitter, Digg, Spotify und Reddit genutzt. Auch bei Facebook bediente es bis Mitte 2011 hunderte Millionen von Mitgliedern (seit Juli 2011 ersetzt durch eine Kombination aus HBase, HDFS und Haystack). Cassandra ist die populärste spaltenorientierte NoSQL-Datenbank.

Haupteigenschaften 

 Verteilt
 Jeder Knoten im Cluster hat die gleiche Rolle. Es gibt nicht den einen Ausfallpunkt. Die Daten werden über das Cluster verteilt (damit enthält jeder Knoten unterschiedliche Daten). Einen Master gibt es nicht, jeder Knoten kann jede Anfrage bedienen.

 Unterstützt Replikation und Multi Data Center-Replikation
 Die Replikations-Strategien sind konfigurierbar. Die Haupteigenschaften von Cassandras verteiler Architektur sind speziell für die Auslieferung durch multiple Daten-Center maßgeschneidert, ebenso für Redundanzen, für Ausfallsicherung und für Notfall-Wiederherstellung.

 Skalierbarkeit
 Entwickelt, damit sowohl der Lese- als auch der Schreib-Durchsatz linear ansteigt, wenn neue Maschinen hinzugefügt werden. Das Ziel ist, dass die Applikationen keine Downtime oder Unterbrechungen erfahren.

 Fehlertoleranz
 Daten werden zur Fehlertoleranz automatisch zu multiplen Knoten repliziert. Die Replikation über multiple Datencenter wird unterstützt. Ausgefallene Knoten können ohne Downtime ersetzt werden.

 Einstellbare Konsistenz
 Cassandra wird typischerweise als AP system eingestuft. Das bedeutet, dass Verfügbarkeit und Partitionstoleranz im Allgemeinen für wichtiger gehalten werden als die Konsistenz in Cassandra. Lesen und Schreiben bieten ein einstellbares Level an Konsistenz an, von “Schreiben fällt niemals aus” bis hin zu “Alle Replikas sind blockiert gelesen zu werden” bei mittlerem Quorum-Level.

 MapReduce Unterstützung
 Cassandra verfügt über Hadoop Integration mit MapReduce Unterstützung. Außerdem unterstützt Cassandra Apache Pig und Apache Hive.

 Query Sprache
 Cassandra hat die Cassandra Query Sprache (CQL) eingeführt. CQL ist eine einfache Schnittstelle, um auf Cassandra zuzugreifen als Alternative zur traditionellen Structured Query Sprache Structured Query Language (SQL).

 Eventual Consistency
 Cassandra steuert die Eventual Consistency von Lese-, Upsert- und Löschvorgängen durch Tombstones.

Weblinks 
 Offizielle Website (englisch)
 Originalpaper, das Cassandra präsentiert (englisch) (PDF; 133 kB)
 Artikel über Cassandra von Jochen Schnelle in "Freies Magazin", Ausgabe 09/2011
 HBase vs Cassandra: why we moved – Dominic Williams (FightMyMonster.com): Blog-Eintrag mit Darstellung einiger Features von Cassandra (insb. gegenüber HBase)

Einzelnachweise 

Freies Datenbankmanagementsystem
NoSQL
Cloud Computing
Cassandra
Facebook