Cassandra- und NoSQL-Bascis, Teil 1 Grundlagen der NoSQL-Datenbank Apache Cassandra
Anbieter zum Thema
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).

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.
Artikelfiles und Artikellinks
(ID:43734526)