Bei der Konzeption von modernen Softwaresystemen müssen sich Architekten und Entwickler Herausforderungen stellen, die wachsende Datenmengen und Real-World Anwendungsfälle mit sich bringen. Im Speziellen sollen drei Anforderungen betrachtet werden:
- Sehr große Anzahl von Nutzern die gleichzeitig mit dem System interagieren (Online-Händler, Suchmaschinen, Social Media, etc.)
- Geschäftskritische Anwendungsfälle bei denen Systemausfälle nicht tolerierbar sind.
- Softwaresysteme müssen in der Lage sein über mehrere Datencenter hinweg zu arbeiten. Vor Allem der Schritt von vertikaler zu horizontaler Skalierung ist unabdingbar.
Relationale Datenbanken stoßen an ihre Grenzen, sobald eine der genannten Anforderungen eine Rolle spielt. Kernkonzepte von relationalen Datenbanken wie die Normalisierung der Daten, Joins und 2-Phasen-Sperrprotokoll sind nicht auf große Cluster ausgelegt.
Apache Cassandra, als Vertreter einer Reihe von Open-Source NoSQL (Not only SQL) Systemen wurde entwickelt um mit den oben genannten Herausforderungen umzugehen.
Ziel der Präsentation ist es, durch konkrete Anwendungsfälle die Problemstellungen, die sich aus dem Wandel der Anforderungen an moderne Softwaresysteme ergeben aufzuzeigen und eine Möglichkeit vorzustellen wie diese mit Apache Cassandra gelöst werden können. Neben der Erläuterung von Kernkonzepten im Bereich BigData (Verteilte Systeme, Datenkonsistenz, Datenschema, De-Normalisierung) und Cassandra soll hauptsächlich die Entwicklung von Java Applikationen mit dem Cassandra Java-Driver im Vordergrund stehen.
Dies schließt folgende Punkte ein:
- Toolunterstützte Installation eines lokalen Cassandra Test Clusters
- Definition eines Datenschemas
- Erstellung von Datenbank und Tabellen
- Schreiboperationen auf den Tabellen mit dem Java-Driver
- Leseoperationen auf Beispieldaten mit dem Java Driver