© svetabelaya/Shutterstock.com
Cloud-native Anwendungen und Daten mit Kubernetes und Apache Cassandra

Datenflut


Die Verwaltung von Daten in großem Umfang ist eine große Herausforderung. Abgesehen davon, dass wir einfach viele Daten haben, müssen wir in der Lage sein, sie effektiv zu nutzen. Die Art und Weise, wie wir unsere Daten indizieren, kann die Nutzung erleichtern. Aber dieser Indizierungsansatz kann sich im Laufe der Zeit weiterentwickeln, je nachdem, was wir erreichen wollen und wie sich unsere Anwendungsfälle ändern.

Apache Cassandra wurde entwickelt, um Aspekte der Ansätze von Dynamo [1] und Big Table [2] zu kombinieren und eine Möglichkeit zu schaffen, die Art und Weise zu vereinfachen, wie Daten gelesen und aufgenommen werden. Ziel dabei ist es, die entstehenden Datenmengen möglichst gut verwalten zu können. Indem man die Dinge einfach hält, reduziert Cassandra die Komplexität des Lese- und Schreiboverheads und erleichtert die Skalierung und Verteilung von Daten.

Storage Attached Indexing (SAI) ist ein neues Projekt, das eine sekundäre Indizierung für Cassandra bereitstellt und gleichzeitig einige der Probleme beseitigt, die durch frühere Ansätze bestanden. Dies soll die Abfrage von Daten, die in Cassandra gehalten werden, im großen Maßstab erleichtern und gleichzeitig die Anforderungen an den Plattenspeicher pro Cluster reduzieren.

Der aktuelle Ansatz für sekundäre Indizes in Cassandra

Als verteilte Datenbank kann Cassandra eine unglaubliche Skalierung bieten, aber es erfordert auch eine gewisse Erfahrung, die Daten zu Beginn eines Projekts korrekt zu modellieren. Datenbankindizes bauen nämlich auf diesem anfänglichen Datenmodell auf, um die Abfragen zu erweitern und effizienter zu machen. Dieser Ansatz muss jedoch mittlerweile angepasst werden. Um mit neuen Anwendungsfällen und Bereitstellungsmodellen Schritt halten zu können, müssen wir uns ansehen, wie Cassandra an die Datenindizierung herangeht, und dann neue Wege in Betracht ziehen, um diesen Kompromiss zwischen Benutzerfreundlichkeit und Stabilität zu verringern.

Das Ziel der Indizierung ist es, das Lesen von Daten zu verbessern. Die Entscheidungen, die zu Beginn eines Projekts stehen und bestimmen, wie man Daten schreibt, wirken sich jedoch auch auf die Indizierung aus. Wenn man – wie bei Cassandra – auf schnelle Schreibvorgänge hin optimiert aufgestellt ist, kann sich zusätzliche Komplexität negativ auf die Verwaltung der Indizierung und damit auf die Leistung auswirken. Es lohnt sich daher, zunächst einmal zu betrachten, wie Daten auf einen Knoten innerhalb eines Cassandra-Datenbankclusters geschrieben werden (Abb. 1).

mcfadin_cassandra_1.tif_fmt1.jpgAbb. 1: Datenverarbeitung in einem Cassandra-Datenbankcluster

Cassandra basiert auf einem Log-Structured-Merge-(LSM-)Ansatz [3], bei dem der Eingang hoher Datenvolumen zu erwarten ist. Es handelt sich um einen gängigen Ansatz, der auch von anderen Datenbanken wie HBase, InfluxDB und RocksDB verwendet wird. Indem Schreibvorgänge gesammelt und dann in vorsortierten Datenläufen bereitgestellt werden, kann eine hohe Schreibgeschwindigkeit beibehalten und die Daten können für die Verteilung organisiert werden. Eine Transaktion funktioniert folgendermaßen:

  1. Für jede Transaktion wird überprüft, ob die Daten im richtigen Format vorliegen, und mit dem vorhandenen Schema abgeglichen.

  2. Die Transaktionsdaten...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang