Suchen

Cassandra- und NoSQL-Bascis, Teil 1 Grundlagen der NoSQL-Datenbank Apache Cassandra

| Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Nico Litzel

Cassandra zählt, neben MongoDB, zu den derzeit populärsten NoSQL-Datenbanken. Cassandra ist als skalierbares, ausfallsicheres System für den Umgang mit großen Datenmengen auf verteilten Systemen (Clustern) konzipiert. In drei Teilen erläutert BigData-Insider die architektonischen Merkmale von Cassandra, erklärt die Inbetriebnahme sowie grundlegende Prinzipien und illustriert erste Schritte mit der Abfragesprache Cassandra Query Language (CQL).

Das Logo der NoSQL-Datenbank Cassandra
Das Logo der NoSQL-Datenbank Cassandra
(Bild: The Apache Software Foundation)

Cassandra ist die beliebteste spaltenorientierte NoSQL-Datenbank und im Gegensatz zu MongoDB (C++) wie auch HBase in Java geschrieben. Aufgrund ihrer architektonischen Eigenschaften wird Cassandra häufig in Big-Data-Projekten eingesetzt, kann in Zusammenarbeit mit einem Applikations-Server/Framework aber auch gut für komplexe Webanwendungen verwendet werden.

Merkmale

Cassandra ist ein verteiltes Datenbankmanagementsystem, das zum Verwalten sehr großer Mengen strukturiert vorliegender Daten konzipiert und der Klasse der NoSQL-Datenbanksysteme zuzurechnen ist, auch wenn die Cassandra-Entwickler im Sommer 2011 mit der Version 0.8 die Cassandra Query Language (CQL) eingeführt haben, eine SQL-ähnliche Abfragesprache.

Cassandra ist für eine hohe Skalierbarkeit und Ausfallsicherheit bei verteilten Systemen optimiert und legt Daten in sogenannten Key-Value Stores ab. Cassandra wird unter dem Dach der Apache Software Foundation (AFS) quelloffen entwickelt steht unter der Apache-Lizenz Version 2.

Von den Wurzeln bis heute

Ursprünglich wurde Cassandra von Avinash Lakshman (einem der Entwickler der verteilten Hashtabelle Amazon Dynamo) und Prashant Malik bei Facebook zur Lösung des sogenannten Inbox-Search-Problems entwickelt. Cassandra wurde im Sommer 2008 erstmals veröffentlicht und im Frühjahr 2009 dann von Facebook als Open-Source-Projekt in den Incubator der Apache Software Foundation entlassen. Im Februar 2010 stieg Cassandra schließlich zum Top-Level-Projekt der ASF auf.

Neben Facebook haben seit dem Wechsel zu Apache auch andere namenhafte Unternehmen Code beigesteuert, darunter Twitter, IBM oder Rackspace. Bei Facebook selbst kam Cassandra bis Sommer 2011 zum Einsatz, wurde aber später durch eine Lösung aus der In-Memory-Datenbank Apache HBase, HDFS und Haystack ersetzt. Die neuste Version 2.2.1 wurde am 1. September freigegeben, die momentane stabile Version ist die 2.1.9.Version 3.0 ist als Beta verfügbar.

Cassandra Enterprise

Außer als verteilte Datenbank in sozialen Netzen – die Datenbank wird zum Beispiel auch vom Social-News-Aggregator Reddit sowie vom Social-Bookmarks-Anbieter Digg verwendet – lässt sich Cassandra aber auch sehr gut in der Finanz- und Telekommunikationsbranche, im Gesundheitswesen und im Sicherheitsbereich einsetzen.

Das im kalifornischem Santa Clara ansässige, 2010 von den beiden Ex-Rackspace-Mitarbeitern Jonathan Ellis und Matt Pfeil gegründete Unternehmen DataStax beispielsweise begründet sein gesamtes Geschäftsmodell auf kostenpflichtigen Support für das Casandra-Apache-Open-Source-Projekt und Cassandra-Trainings. Zudem bietet DataStax eine eigene kommerzielle Enterprise-Cassandra-Distribution an.

Grenzen relationaler Datenbanken

Auch wenn relationale Datenbankmanagementsysteme (RDBMS) für klassische Geschäftsanwendungen mit ihren stringenten Konsistenzanforderungen dank ihrem bewährten Datenmodell, der standardisierten Abfragesprache und den über Jahrzehnte eingeflossenen Optimierungen für viele Probleme immer noch die beste Lösung darstellen, stellen Anwendungen im Web 2.0 seit etwa zehn Jahren deutlich veränderte Anforderungen an Datenbanken, die klassische Systeme nicht erfüllen können. Diese sind im Wesentlichen:

  • Verarbeitung von großen bis sehr großen Datenmengen im Terra- und Petabyte-Bereich,
  • geringere Anforderung an die Konsistenz,
  • horizontale Skalierung wesentlich wichtiger als vertikale Skalierung und eine
  • extrem kurze Laufzeit von Abfragen.

NoSQL-Datenbanken erfüllen diese Anforderungen und haben als eher puristische Datenspeicher in einigen Anwendungsgebieten klare Vorteile gegenüber relationalen Datenbanksystemen. Der wichtigste Einsatzzweck und damit der wesentliche Grund, dass NoSQL-Systeme überhaupt entstanden sind, liegt im rasanten Anwachsen der Menge zu speichernder Daten, etwa im Kontext von komplexen Web-2.0-Anwendungen, an erste Stelle sind hier soziale Netzwerke wie Facebook und Twitter zu nennen.

Gegenüber SQL-Datenbanken, bei denen das verbindende gemeinsame Element in der Abfragesprache SQL ist, gibt es ein solches bei den zahlreichen NoSQL-Varianten nicht.

Was ist NoSQL?

Da es keine verbindlich Definition für NoSQL-Systeme gibt, werden diese für gewöhnlich anhand einer Reihe relativ typischer Eigenschaften kategorisiert wie z. B.

  • kein relationales Datenmodell,
  • einfaches Schema mit schwachen Schemarestriktionen (oder schemafrei),
  • Unterstützung für verteilte und horizontale Skalierung,
  • einfache automatische Replikationen, die eine verteilte Architektur ermöglichen und
  • einfache API (BASE als Konsistenzmodell anstelle von ACID).

Die heute verfügbaren Produkte lassen sich grob in die vier Kategorien

  • Key-Value Stores,
  • Document-Stores,
  • Wide-Column Stores und
  • Graphen-Datenbanken

einteilen. Cassandra gehört im Prinzip zur Klasse der Wide-Column Stores. Die wichtigsten Konzepte und Algorithmen von NoSQL-Datenbanken wie z. B. Map/Reduce, CAP-Theorem/Eventually Consistent, Consistent Hashing, Vector Clocks oder die Unterstützung der Protokolle MVCC, Paxos oder ein REST-API sind aber den meisten Vertretern gemein.

Ergänzendes zum Thema
Typen von NoSQL-Datenbanken

Key-Value Stores speichern grundsätzlich jeden einzelnen Wert mit einem Schlüssel ab. Insofern eigenen sich Key-Value Stores gut für strukturierte Daten. Aufbauend auf den ältesten Vertreter der Gattung – Amazons Dynamo – haben sich eine Reihe von Lösungen entwickelt.

Wide-Column Stores sind eine spezielle Variante der Key-Value Stores. Der Typ wurde im Prinzip von Google mit Big Table ersonnen und von Facebook mit Cassandra, das ebenfalls ein Google Big Table ähnliches Datenmodell verwendet, weiterentwickelt. Cassandra speichert die Daten dabei genau so ab, wie sie beim Datenabruf, bzw. zur Anzeige benötigt werden. Umfangreiche Abfragen über mehrere Tabellen hinweg, wie sie bei SQL-Datenbanken erforderlich wären, entfallen damit. Das ist auch der Hauptgrund für die beachtliche Performance bei großen Datenmengen.

Document Stores eignen sich dagegen zum unstrukturierten Speichern kompletter Dokumente, wie es z. B. Lotus Notes macht. Als Dokumentformat wird meist XML oder JSON benutzt. Populärsten Vertreter sind Apache CouchDB oder MongoDB.

Graphdatenbanken sind eigentlich eher eine erweiterte Form von SQL-Datenbanken, weil es Relationen und eine SQL-ähnlich Abfragesprache GQL gibt. Allerdings nutzen Graphdatenbanken keine Tabellen, sondern arbeiten mit freien Datenstrukturen, die sich ebenfalls über mehrerer Nodes erstrecken können. Die Besonderheit dabei ist, dass Graphdatenbanken Verbindungen zwischen Einträgen über mehrere Knoten halten können. Insofern sind sie im Prinzip so etwas Ähnliches wie horizontal skalierte MySQL-Datenbanken. Ältester und bekanntester Vertreter dieses Typs ist Neo4j.

Artikelfiles und Artikellinks

(ID:43734526)

Über den Autor

Dipl. -Ing. Thomas Drilling

Dipl. -Ing. Thomas Drilling

IT-Consultant, Trainer, Freier Journalist