Geht es darum, sehr große Da­ten­men­gen im Bereich von mehreren Terabyte oder gar Petabyte zu verwalten, sind klas­si­sche Da­ten­bank­sys­te­me über­for­dert. Hier sind spezielle Big-Data-Ap­pli­ka­tio­nen gefragt, bei denen ein Augenmerk auf Ska­lier­bar­keit gelegt wird, da sich das tat­säch­li­che Da­ten­vo­lu­men anfangs oft gar nicht ab­schät­zen lässt. Einer der be­lieb­tes­ten, modernen Vertreter ist die Open-Source-Lösung Cassandra, die ur­sprüng­lich für Facebook ent­wi­ckelt wurde.

Was ist Apache Cassandra?

Apache Cassandra ist ein Open-Source-Datenbank-Ma­nage­ment-System (DBMS) für sehr große, aber dennoch struk­tu­rier­te Da­ten­ban­ken. Durch die gute Ska­lier­bar­keit können sich diese Da­ten­ban­ken auf ver­schie­de­ne Cluster verteilen, weshalb Cassandra nicht an einen einzelnen Server gebunden ist.

Cassandra zählt zur Kategorie der spal­ten­ori­en­tier­ten NoSQL-Da­ten­ban­ken, wobei NoSQL hier in seiner Bedeutung „Not only SQL“ zu verstehen ist und nicht als „kein SQL“. Im Gegensatz zu typischen SQL-Da­ten­ban­ken bieten NoSQL-Struk­tu­ren deutliche Vorteile bei der Ver­ar­bei­tung großer Da­ten­men­gen, da sie nicht an die Be­schrän­kun­gen der Ab­fra­ge­spra­che SQL (Struc­tu­red Query Language) gebunden sind. Apache Cassandra verfügt über eine eigene Ab­fra­ge­spra­che mit dem Namen Cassandra Query Language (CQL), die SQL ähnelt, aber von Ent­wick­lern wegen ihrer Anpassung an die Ei­gen­hei­ten von Cassandra eindeutig bevorzugt wird.

Als NoSQL-Datenbank hat Cassandra einen red­un­dan­ten Ansatz, der zu hoher Aus­fall­si­cher­heit beiträgt. Im Gegensatz dazu bereitet die Re­pli­ka­ti­on von Daten in re­la­tio­na­len Da­ten­bank­sys­te­men immer wieder Probleme.

Fakt

Cassandra wurde ur­sprüng­lich von Avinash Lakshman und Prashant Malik bei Facebook ent­wi­ckelt und 2008 erstmals ver­öf­fent­licht. 2009 wurde das Projekt von der Apache Software Foun­da­ti­on, einer der wich­tigs­ten Open-Source-Ent­wick­ler­ge­mein­schaf­ten, zunächst als Un­ter­pro­jekt in den Apache Incubator auf­ge­nom­men. Seit Februar 2011 ist Apache Cassandra ein eigenes Top-Level-Projekt innerhalb der Apache Software Foun­da­ti­on, ebenso wie der weit ver­brei­te­te Apache Webserver, der Such­ser­ver Solr, die Messaging-Plattform Kafka oder auch das be­kann­tes­te Apache-Projekt Open­Of­fice.

Neben den ur­sprüng­li­chen Ent­wick­lern tragen auch andere große Firmen wie IBM, Twitter und Rackspace, einer der größten IT-Ser­vice­pro­vi­der in den USA, zu Cassandra bei. Einen wichtigen Beitrag zum Projekt leistet außerdem das Un­ter­neh­men DataStax, dessen Ge­schäfts­mo­dell im We­sent­li­chen auf kos­ten­pflich­ti­gem Support, In­stal­la­ti­ons­un­ter­stüt­zung und Schu­lun­gen zur Datenbank Cassandra beruht. DataStax trägt heute zu etwa 80 Prozent zur Open-Source-Ent­wick­lung von Cassandra bei und liefert mit DataStax En­ter­pri­se auch eine kom­mer­zi­el­le Da­ten­bank­lö­sung, die auf dem frei zu­gäng­li­chen Cassandra beruht.

Apache Cassandra ist nach dem bekannten Ranking von DB-Engines zurzeit die po­pu­lärs­te spal­ten­ori­en­tier­te Datenbank und hat bekannte Namen wie Microsoft Azure Cosmos DB oder Google Cloud Bigtable weit hinter sich gelassen.

Cassandra: Die wich­tigs­ten Funk­tio­nen

Als echtes ver­teil­tes System verwendet Cassandra keinen Master. Alle Cluster sind gleich­be­rech­tigt und können jede Da­ten­bank­an­fra­ge be­ar­bei­ten, was die Leis­tungs­fä­hig­keit deutlich erhöht. Die Daten liegen auf den Knoten verteilt. Durch das einfache Hin­zu­fü­gen weiterer Knoten ist das System zudem leicht ska­lier­bar. Nach der In­stal­la­ti­on gilt es lediglich, die Kon­fi­gu­ra­ti­ons­da­tei­en auf den neuen Knoten zu verteilen. Cassandra liefert dazu geeignete Werkzeuge.

Um die Aus­fall­si­cher­heit und im Notfall auch die Wie­der­her­stel­lung der Daten zu ga­ran­tie­ren, verfügt Apache Cassandra über ein be­darfs­ge­recht kon­fi­gu­rier­ba­res Re­pli­ka­ti­ons­sys­tem. Die Feh­ler­to­le­ranz wird minimiert, indem die Daten au­to­ma­tisch zwischen den Knoten re­pli­ziert werden. Aus­ge­fal­le­ne Knoten lassen sich leicht ersetzen. Das System bleibt für Anfragen jederzeit verfügbar.

Cassandra bietet zudem eine hohe Ver­füg­bar­keit und Par­ti­ti­ons­to­le­ranz. Nach dem CAP-Theorem der In­for­ma­tik ist es niemals möglich, Kon­sis­tenz (Con­sis­ten­cy), Ver­füg­bar­keit (Avai­la­bi­li­ty) und Par­ti­ti­ons­to­le­ranz (Partition tolerance) ga­ran­tiert gleich­zei­tig zu erfüllen. Dabei räumt man der Kon­sis­tenz, was bedeutet, dass alle Knoten zu jeder Zeit dieselben Daten sehen, wie bei vielen Big-Data-Systemen die geringste Priorität ein. Nach einem Ausfall lässt sich die Kon­sis­tenz durch Da­ten­wie­der­her­stel­lung zeitnah wieder ge­währ­leis­ten, wo­hin­ge­gen die beiden anderen Ei­gen­schaf­ten jederzeit si­cher­ge­stellt sein müssen.

Cassandra-Da­ten­ban­ken un­ter­stüt­zen das von Google ent­wi­ckel­te Pro­gram­mier­mo­dell MapReduce für Be­rech­nun­gen mit großen Da­ten­men­gen auf ver­teil­ten Systemen. Die eigene Da­ten­bank­ab­fra­ge­spra­che CQL (Cassandra Query Sprache) ist speziell an die Da­ten­struk­tu­ren von Cassandra angepasst.

Was sind die Vorteile von Apache Cassandra?

Einer der wich­tigs­ten Vorteile von Cassandra ist die gute Ska­lier­bar­keit bei sehr hoher Aus­fall­si­cher­heit – ele­men­ta­re Vor­aus­set­zun­gen für Big-Data-An­wen­dun­gen. Bei Cassandra spricht man von einer ho­ri­zon­ta­len Ska­lier­bar­keit, was bedeutet, dass sich Kapazität und Leis­tungs­fä­hig­keit des Systems durch zu­sätz­li­che Knoten erhöhen lassen. Bei der ge­gen­tei­li­gen ver­ti­ka­len Ska­lie­rung, muss der einzige Da­ten­bank­ser­ver durch stärkere Pro­zes­so­ren und größere Fest­plat­ten auf­ge­rüs­tet werden, falls die Leistung oder Kapazität den An­for­de­run­gen nicht mehr ent­spricht. Da man mit han­dels­üb­li­cher Server-Hardware arbeiten kann, ist die ho­ri­zon­ta­le Ska­lie­rung in den meisten Fällen die preis­güns­ti­ge­re Lösung.

Das Da­ten­mo­dell von Cassandra basiert auf mul­ti­di­men­sio­na­len Hash-Tables (Hashwert-Tabellen), in denen jede Zeile beliebig viele Spalten hat. Im Gegensatz zu einer klas­si­schen Da­ten­bank­ta­bel­le müssen diese Spalten nicht in jeder Zeile gleich sein. In Bench­marks und in realen An­wen­dungs­sze­na­ri­en überzeugt Apache Cassandra außerdem durch einen deut­li­chen Ge­schwin­dig­keits­vor­teil gegenüber anderen NoSQL-Da­ten­ban­ken.

Wo kommt Apache Cassandra zum Einsatz?

Eines der Haupt­zie­le bei der Ent­wick­lung von Cassandra war das kom­for­ta­ble Durch­su­chen der Nach­rich­ten­ein­gän­ge bei Facebook durch die Nutzer. Der Groß­kon­zern nutzte hierfür ein Cluster aus über 150 einzelnen Knoten. Nicht von ungefähr wird Cassandra, das in den Grund­struk­tu­ren Amazon Dynamo und Google Bigtable ähnelt, heute gerne von Anbietern großer sozialer Netzwerke verwendet, bei denen viel­fäl­ti­ge Daten zwischen den Nutzern zu vernetzen sind. Bekannte Kunden sind neben Twitter, Instagram und Spotify auch der Social-Bookmark-Anbieter Digg und der Social-News-Ag­gre­ga­tor Reddit.

Hinweis

Facebook hat mitt­ler­wei­le auf eine Ei­gen­ent­wick­lung aus einer Kom­bi­na­ti­on der Da­ten­bank­sys­te­me HBase und HDFS ge­wech­selt, beides Kom­po­nen­ten des Apache-Hadoop-Frame­works.

Auch viele andere Netzwerke mit großen Da­ten­men­gen nutzen Cassandra als Datenbank – sowohl als Haupt-Datenbank als auch als Ne­ben­kom­po­nen­te für bestimmte Aufgaben. Hier sind u. a. eBay, GitHub, Netflix, The Weather Channel und der Large Hadron Collider am eu­ro­päi­schen Kern­for­schungs­zen­trum CERN (pro Jahr etwa 30.000 Terabyte Daten) als Beispiele zu nennen. Eine der größten Cassandra-In­stal­la­tio­nen läuft bei Apple mit 75.000 Knoten.

Erste Schritte mit Apache Cassandra

Apache Cassandra läuft auf UNIX-ähnlichen Systemen, bevorzugt auf Linux-Servern. Zu­sätz­lich benötigt man die Java-Runtime, da Cassandra in Java pro­gram­miert ist. Die In­stal­la­ti­ons­pa­ke­te liegen als Debian-Pakete oder RPM auf den Apache-Servern. Zur In­stal­la­ti­on fügen Sie das passende Re­po­si­to­ry hinzu. Nach der In­stal­la­ti­on sind die typischen Daten-, Cache- und Pro­to­koll­ver­zeich­nis­se anzulegen und in der Datei cassandra.yaml zu kon­fi­gu­rie­ren.

Die Ad­mi­nis­tra­ti­on von Cassandra läuft über eigene Kom­man­do­zei­len­tools. Das wich­tigs­te ist die Shell, der Cassandra Query Language cqlsh.

Mit folgendem Befehl erhalten Sie eine erste Übersicht aller möglichen Kommandos:

cqlsh --help

Eine an­schau­li­che Ein­füh­rung in Apache Cassandra gibt folgendes YouTube-Video:

Tipp

Mit OpsCenter bietet DataStax ein web­ba­sier­tes gra­fi­sches Werkzeug zur Ver­wal­tung und visuellen Über­wa­chung von Cassandra-Systemen.

Zum Hauptmenü