Weiterbildung ist ein zentraler Punkt bei isento. Es ist wichtig auf dem neuesten Stand der technologischen Entwicklung zu sein.
Umso besser, wenn man dies sogar im Rahmen eines Kundenprojekts realisieren kann.
Unser Kollege Thorsten arbeitet derzeit an einem Benachrichtigungssystem.
Wir haben euch bereits über den Einsatz von Apache Kafka in diesem Projekt berichtet.
Ein weiter Baustein zur Umsetzung ist die NoSQL Datenbank Apache Cassandra. Diese möchten wir euch heute vorstellen:

Die Grundlagen

Apache Cassandra ist ein verteiltes NoSQL-Datenbanksystem. Es ist auf hohe Ausfallsicherheit und Skalierbarkeit ausgelegt und ist derzeit die beliebteste spaltenorientierte NoSQL-Datenbank am Markt. Im Gegensatz zu CouchDB und MongoDB(C++) ist diese wie Apache HBase in Java geschrieben. Seit der Version 0.8 wurde die Cassandra Query Language eingeführt, eine SQL-angelehnte Abfragesprache, die als einfache Schnittstelle dienen kann.

Ursprünglich wurde Cassandra bei Facebook entwickelt, um das Problem der Inbox Search zu lösen. Nach der Bereitstellung als OpenSource Projekt 2008 haben auch weitere Unternehmen wie Twitter und IBM zum Code beigetragen.

Die Architektur von Apache Cassandra

Im Gegensatz zu SQL-Datenbanken, werden die Daten bei der NoSQL-Datenbank Cassandra nicht relational, sondern spaltenorientiert gespeichert (bekannt als Wide-Column Stores). Der Betrieb wird in einem Cluster realisiert, der in Knoten unterteilt ist. Es gibt dabei keine zentrale Steuerung. Man spricht von einer Masterless-Architektur. Jeder Knoten ist gleichgestellt und kann prinzipiell alle Anfragen verarbeiten.

Die Daten werden im Cluster verteilt auf Knoten, ein Knoten kann dabei eine oder mehrere Partitionen enthalten. Der sogenannte Partition Key eines Datensatzes gibt vor, wo die Daten im Cluster zu finden sind. Je nach Replikations-Faktor werden Daten auf verschiedene Knoten dupliziert, um den Zugriff auf das Cluster auch beim Ausfall einzelner Knoten sicherzustellen, Stichwort Hochverfügbarkeit.

Bei dieser Art von Datenbank stehen schnelle Lesezugriffe, also hoher Durchsatz, im Vordergrund. In Cassandra werden dafür Daten query-orientiert modelliert und Datenduplizierungen explizit in Kauf genommen, im Vergleich zu relationalen Datenbanken mit normalisierten Tabellen.

Vorteile von Cassandra

1. Problemlose horizontale Skalierung
2. Hochverfügbarkeit dank Masterless-Architektur
3. Hohe Fehlertoleranz durch Datenreplikation
4. Hohe Performance
5. Multi-Data-Center-Implementierung

Use Cases Apache Cassandra

Durch seine architektonischen Eigenschaften kommt Apache Cassandra sehr oft in Big Data-Projekten zum Einsatz. In Zusammenarbeit mit einem Applikationsserver/Framework kann es aber auch sehr gut bei komplexen Webanwendungen genutzt werden.

Unternehmen wie Apple, Twitter, Spotify oder Reddit setzen auf Cassandra. In Spotify zum Beispiel lassen sich über 1,5 Milliarden Playlists in „Echtzeit“ erstellen und verwalten.
Auch bei der Nutzung von Nachrichtensystemen wie Chats oder Instant Messaging eignet sich die Datenbank. Neue Nachrichten lassen sich schnell erstellen und lesen und werden nach einer vorgegebenen Zeit wieder gelöscht, um das System nicht zu überlasten. Ein weiterer Einsatzbereich lässt sich im eCommerce finden. So können unter Anderem persönliche Kaufempfehlungen an die Kunden mit Unterstützung von Cassandra erstellt werden.

Es wird also deutlich, dass das Datenbanksystem sehr viele Vorteile mit sich bringt und sich mit seinen Funktionen für ein sehr breit gefächertes Einsatzspektrum anbietet. Nicht zu Unrecht ist Apache Cassandra darum derzeit so populär.