Apache Cassandra

Hochskalierbare, verteilte NoSQL Datenbank

Es hat sich gezeigt, dass klassische Datenbanken für Anwendungen wie z.B. interaktive Webseiten mit vielen Millionen an Nutzern nicht gut skalieren. Insbesondere wäre man daran interessiert, durch Einsatz eines Clusters aus relativ preiswerten Standardrechnern das notwendige Skalierungsverhalten zu erreichen. Klassische Datenbanken wie MySQL oder Oracle unterstützen dieses Clustering nur zum Teil, und bieten nicht die nötige Flexibilität beim Clusterausbau und die nötige Ausfallsicherheit. Zusätzlich sind die starren Datenschemata für sich schnell entwickelnde Webanwendungen oftmals hinderlich.

Hinter dem Schlagwort NoSQL verbirgt sich eine ganze Sammlung neuartiger Datenbanksysteme, die versuchen, diesen besonderen Anforderungen gerecht zu werden. Hierbei werden gegenüber klassischen Datenbanken die Zusicherungen z.B. bei der Konsistenz der Daten aufgeweicht, um mit der gewonnenen Flexibilität ein einfacheres Clustering zu erreichen. Für viele Webanwendungen ist es z.B. gar nicht unbedingt nötig, dass die Nutzer immer die alleraktuellesten Daten haben.

Das Ziel dieses Kurses ist es, eine umfassende Einführung in Apache Cassandra zu geben. Es handelt sich um eine NoSQL Datenbank, die ursprünglich bei Facebook entwickelt wurde und dann als Open Source freigegeben wurde und seitdem von der Community weiterentwickelt wird. Cassandra basiert auf einer Storage Engine, welche sich an Google Bigtable orientiert und einer Replikationsarchitektur, welche dem Amazon Dynamo Design entspricht. Damit bietet Cassandra eine vielseitig einsetzbare Datenbanklösung, die mit relativ wenig Aufwand als Servercluster mit hoher Performanz skalierbar und ausfallsicher betrieben werden kann.

Der Kurs wird sowohl die theoretischen Grundlagen und die Architektur von Cassandra im Detail erläutern, eine praktische Einführung in Cassandra bieten und weiterführende Themen im Kontext von Performance-Tuning, Skalierbarkeit und Ausfallsicherheit diskutieren.

Voraussetzungen

  • Linux Grundkenntnisse im Umgang mit Debian/Ubuntu oder CentOS/RHEL sind hilfreich.
  • Kenntnisse in Java und den üblichen Entwicklungstools, wie z.B. Eclipse.
  • Erfahrungen mit Datenbanken, z.B. MySQL, sind hilfreich aber nicht erforderlich.

Inhalt

Grundlagen: Architektur, Datenmodellierung, Installation einer Single-Node-Instanz und Entwicklung einer Beispielapplikation

Am ersten Tag werden grundlegende Konzepte und Technologien, wie die BigTable Storage Engine und die Amazon Dynamo Replikationsarchitektur vorgestellt. Es wird detailliert gezeigt, wie diese Konzepte in die Designentscheidungen von Apache Cassandra eingeflossen sind. Nach der theoretischen Einführung, werden gemeinsam praktische Übungen auf den dafür vorbereiteten Übungs-Laptops durchgeführt. Das Ziel ist es, Techniken der Datenmodellierung und der Entwicklung von Cassandra-basierten Anwendungen zu vermitteln. Dazu werden wir in einer gemeinsamen Übungseinheit eine Twitter-ähnliche Beispielapplikation in Java programmieren und mit der Cassandra Datenbank verbinden.

  • Grundlagen von NoSQL-Datenbanken
  • CAP-Theorem
  • Architektur von Cassandra
  • Datenmodell von Cassandra und CQL3
  • Praktische Einführung
  • Installation von Cassandra
  • Entwicklung einer einfachen Java-Applikation mit Cassandra-Backend
  • Cluster-Deployment in der Cloud (Single-Datacenter Setup)
  • Cluster-Monitoring mit OpsCenter

Fortgeschrittene Themen: Deployment, Monitoring, Performance-Tuning, Hochverfügbarkeit

Am zweiten Tag der Schulung werden weiterführende Themen diskutiert und hands-on ausprobiert. Dazu zählt das Deployment eines replizierten Cassandra Clusters, sowie weitere fortgeschrittene Themen, wie Cluster-Monitoring, Performance-Tuning, etc. Auch Teilnehmer-spezifische Themenwünsche können an diesem Tag detaillierter diskutiert und ausprobiert werden.

Folgende Vertiefungsthemen am 2. Tag sind - je nach Wunsch - möglich:
  • Cluster-Deployment in der Cloud (Multi-Datacenter Setup)
  • Cassandra Performance-Benchmarking und -Tuning
  • Hochverfügbares Cluster-Setup und Replikationsstrategien
  • Backup und Recovery
  • Netzwerkeinstellungen und Sicherheit (Authentifizierung, Autorisaierung, TLS Verschlüsselung Server-Server und Client-Server)
  • Utility Tools
  • Migration von Cassandra Versionen