🏠 » Lexikon » A » Apache Cassandra

Apache Cassandra

Apache Cassandra

ist ein Open-Source Datenbankmanagementsystem, das zur Verarbeitung riesiger Datenmengen im Big Data Bereich eingesetzt wird.

Cassandra wurde ursprünglich von Facebook entwickelt und 2008 veröffentlicht. Seit 2010 ist es ein Projekt der Apache Foundation. Das verteilte Datenbankverwaltungssystem zählt zu den spaltenorientierten NoSQL Datenbanken. Es basiert auf Java.

Seit 2011 gibt es die Abfragesprache Cassandra Query Language (CQL). Der Aufbau der Syntax und die enthaltenen Keywords erinnern stark an SQL. Die Abfrage von Daten erfolgt in gleicher Weise wie bei SQL. CQL besitzt einen Abstraction-Layer der die Implementierungsdetails verbirgt.

Datenorganisation in Nodes

Cassandra organisiert Daten auf sogenannten Nodes, die, wie in der Abbildung zu sehen, in einem Ring ohne einen zentralen Master angeordnet sind. Die kleinste Anzahl an Nodes kann eins betragen. Kommen neuen Nodes hinzu, werden die Daten auf alle Knoten verteilt, inklusive Repliken, die eine Ausfallsicherheit gewährleisten sollen.
Apache Cassandra Definition & Erklärung | Datenbank Lexikon
Der Ring verfügt über eine sogenannte Tokenrange. Jedem Node im Ring wird ein Teil der Tokenrange zugeteilt. Neuen Nodes wird ein Teil der Tokenrange vom benachbarten Node inklusive der bereits vorhandenen Daten übertragen. Die Nodes übernehmen die Datensätze, deren Wert in die ihm zugeteilte Tokenrange fällt. Die Verteilung von Daten erfolgt über den mit einem Hash-Algorithmus berechneten Primärschlüssel jedes einzelnen Datensatzes.

Clustering mit Datacenter

Zur besseren Lastverteilung und Ausfallsicherheit gibt es sogenannte virtuelle Nodes auf denen die Daten stärker gestreut werden. Dadurch können Nodes ohne Downtime ausgetauscht werden. Die Organisation der Nodes findet in Clustern statt. Diese können, wie in Abbildung zu sehen, über zwei Ebenen strukturiert werden.

Auf der obersten Ebene steht das Datacenter (Abb. die Ringstruktur). Dieses kann dazu verwendet werden die Cluster auf unterschiedliche Server an unterschiedlichen Standorten aufzuteilen.
Apache Cassandra Definition & Erklärung | Datenbank Lexikon
Innerhalb eines Datacenters können Racks definiert werden, diese sind in der Abb. 2 farblich markiert. Nodes im gleichen Rack liegen nahe beieinander. Innerhalb des Datacenters können zusätzlich sogenannte Snitches konfiguriert werden. Durch diese werden Anfragen an nahe gelegene Nodes weitergeleitet, da die Annahme besteht, dass diese die Ergebnisse am schnellsten zurückliefern können.

Eigenschaften von Cassandra

Apache Cassandra verfügt aufgrund der Datenverteilung über eine hohe Skalierbarkeit (Hinzufügen zusätzlicher Nodes bei hoher Auslastung) und Ausfallsicherheit (hohe Verfügbarkeit durch Repliken).

Das Datenbanksystem unterstützt unter anderem die Integration von Hadoop MapReduce und speichert die Daten in einem Key-Value Store. Das Datenbankschema ist sehr einfach, da es keine relationale Beschreibung der Daten aufweist.