Cassandra-Treiber: Apache Cassandra mit Python nutzen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung

Apache Cassandra ist eine hochperformante, skalierbare und ausfallsichere NoSQL-Datenbank, die für die Verarbeitung riesiger Datenmengen mit minimalen Latenzzeiten konzipiert wurde. Unternehmen wie Netflix, Apple, eBay und Instagram setzen sie ein, um Petabytes an Daten in Echtzeit zu verarbeiten.

Für Python gibt es den offiziellen Treiber cassandra-driver, der vollen Zugriff auf die Funktionen von Cassandra über Python-Programme bietet. Er unterstützt synchrone und asynchrone Abfragen, vorbereitete Anweisungen (Prepared Statements), die Arbeit mit UUIDs, TTL und vieles mehr.

Was ist der cassandra-driver?

Der cassandra-driver ist der offizielle Python-Client für Apache Cassandra, entwickelt vom DataStax-Team. Es handelt sich um einen leistungsstarken Treiber, der eine vollständige Integration zwischen Python-Anwendungen und einem Cassandra-Cluster ermöglicht.

Hauptfunktionen des Treibers

  • Synchrone und asynchrone Operationen
  • Vorbereitete Abfragen (Prepared Statements) für mehr Leistung
  • Automatische Anfragen-Routing zu optimalen Knoten
  • Unterstützung aller Cassandra-Datentypen
  • Integrierte Fehlerbehandlung und Wiederholungsversuche
  • Unterstützung für Authentifizierung und SSL-Verschlüsselung
  • Lastverteilung zwischen den Cluster-Knoten

Installation und Konfiguration

Treiber installieren

pip install cassandra-driver

Für einige Funktionen können zusätzliche Abhängigkeiten erforderlich sein:

pip install cassandra-driver[cqlengine]  # für ORM
pip install cassandra-driver[graph]      # für Graph-Arbeit

Verbindung zum Cluster herstellen

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider

# Einfache Verbindung
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()

# Verbindung mit Authentifizierung
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()

# Verbindung mit SSL
from cassandra.cluster import Cluster
from ssl import PROTOCOL_TLSv1_2, CERT_REQUIRED

cluster = Cluster(['127.0.0.1'], 
                  ssl_context={
                      'ssl_version': PROTOCOL_TLSv1_2,
                      'cert_reqs': CERT_REQUIRED,
                      'ca_certs': '/path/to/ca.pem'
                  })
session = cluster.connect()

Verbindung zu einem bestimmten Keyspace

session.set_keyspace('my_keyspace')
# oder
session = cluster.connect('my_keyspace')

Wichtige Cassandra-Konzepte

Datenarchitektur

  • Keyspace — das Äquivalent zu einer SQL-Datenbank, enthält Replikationseinstellungen
  • Tabelle — enthält Zeilen und Spalten, jedoch mit anderer interner Struktur
  • Partition Key — bestimmt, auf welchem Knoten ein Datensatz gespeichert wird
  • Clustering Key — beeinflusst die Sortierreihenfolge innerhalb einer Partition
  • Primary Key — besteht aus Partition Key und Clustering Key

Besonderheiten des Datenmodells

Cassandra unterstützt keine JOINs oder Aggregate wie SQL, skaliert dafür aber horizontal und bietet hohe Datenverfügbarkeit. Das Schema-Design sollte auf den Datenzugriffsmustern basieren.

Keyspace und Tabellen erstellen

Keyspace erstellen

session.execute("""
    CREATE KEYSPACE IF NOT EXISTS my_keyspace
    WITH replication = {
        'class': 'SimpleStrategy',
        'replication_factor': '3'
    }
""")

# Für die Produktion wird NetworkTopologyStrategy empfohlen
session.execute("""
    CREATE KEYSPACE IF NOT EXISTS my_keyspace
    WITH replication = {                    

Empfehlungen