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 = { Auch in der Bibliothek
tsup für TypeScript: Komplettguide mit Beispielen
unbuild für TypeScript: Komplettguide mit Beispielen
Redis (ioredis) für JavaScript (Node.js): Komplettguide mit Beispielen
Quartz.NET für C# (.NET): Komplettguide mit Beispielen