Apache Cassandra ist eine verteilte NoSQL-Datenbank mit linearer Skalierbarkeit. Die wichtigsten Kommandozeilen-Werkzeuge sind cqlsh für CQL-Abfragen, nodetool für die Cluster-Verwaltung und sstableloader für den Massenimport von SSTable-Dateien.

Abfragen mit cqlsh

cqlsh 10.0.0.5
cqlsh -u cassandra -p passwort 10.0.0.5
CREATE KEYSPACE app WITH replication = {'class':'SimpleStrategy','replication_factor':3};
USE app;
CREATE TABLE nutzer (id UUID PRIMARY KEY, name text);
INSERT INTO nutzer (id, name) VALUES (uuid(), 'Ada');
SELECT * FROM nutzer WHERE name = 'Ada' ALLOW FILTERING;

cqlsh spricht CQL (Cassandra Query Language), eine SQL-ähnliche Sprache. DESCRIBE KEYSPACES, DESCRIBE TABLES und EXIT sind die wichtigsten Meta-Befehle. ALLOW FILTERING ist nur für kleine Tabellen sinnvoll — normalerweise filtert Cassandra über den Primärschlüssel.

Cluster-Verwaltung mit nodetool

nodetool status
nodetool info
nodetool repair
nodetool cleanup
nodetool snapshot -t vor_umstellung
nodetool flush
  • status zeigt jeden Knoten mit Status (UN = Up/Normal), Datenmenge und Besitzanteil.
  • info zeigt Heap-Nutzung, Load und Uptime des lokalen Knotens.
  • repair gleicht Repliken ab (Anti-Entropy) — wichtig, weil Cassandra gelöschte Daten nur per Tombstones und Repairs endgültig entfernt.
  • cleanup entfernt Daten, die nach einer Topologie-Änderung nicht mehr zu diesem Knoten gehören.
  • snapshot erzeugt einen hart-link-basierten Backup-Punkt pro Table, flush schreibt die Memtables auf die Platte.

Massenimport und Lasttests

sstableloader -d 10.0.0.5 /pfad/zu/sstables
cassandra-stress write -n 100000 -rate threads=8
cassandra-stress read -n 100000
  • sstableloader lädt existierende SSTable-Dateien in einen laufenden Cluster — der Standardweg, um Daten aus Backups oder anderen Clustern zu übernehmen.
  • cassandra-stress erzeugt Lastprofile für Write- und Read-Tests und liefert Durchsatz- und Latenz-Metriken.

Einordnung im NoSQL-Umfeld: NoSQL-Datenbank, die verwandten CLI-Referenzen MongoDB-Befehle und Redis-Befehle — sowie für relationale Systeme die PostgreSQL-Befehle.