Introduction
Apache Cassandra est une base de données NoSQL haute performance, scalable et tolérante aux pannes, conçue pour traiter d'énormes volumes de données avec une latence minimale. Elle est utilisée par des entreprises comme Netflix, Apple, eBay et Instagram pour gérer des pétaoctets de données en temps réel.
Pour Python, le pilote officiel cassandra-driver offre un accès complet aux fonctionnalités de Cassandra depuis vos programmes Python. Il prend en charge les requêtes synchrones et asynchrones, les expressions préparées, la gestion des UUID, TTL, et bien plus encore.
Qu'est-ce que cassandra-driver ?
Cassandra-driver est le client Python officiel pour Apache Cassandra, développé par l'équipe DataStax. Ce pilote haute performance assure une intégration complète entre vos applications Python et un cluster Cassandra.
Fonctionnalités principales du pilote
- Opérations synchrones et asynchrones
- Requêtes préparées pour des performances optimales
- Routage automatique des requêtes vers les nœuds les plus adaptés
- Prise en charge de tous les types de données Cassandra
- Gestion intégrée des erreurs et des tentatives
- Authentification et chiffrement SSL
- Répartition de charge entre les nœuds du cluster
Installation et configuration
Installation du pilote
pip install cassandra-driver
Certaines fonctionnalités peuvent nécessiter des dépendances supplémentaires :
pip install cassandra-driver[cqlengine] # pour l'ORM
pip install cassandra-driver[graph] # pour les graphes
Connexion à un cluster
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
# Connexion simple
cluster = Cluster(['127.0.0.1'])
session = cluster.connect()
# Connexion avec authentification
auth_provider = PlainTextAuthProvider(username='cassandra', password='cassandra')
cluster = Cluster(['127.0.0.1'], auth_provider=auth_provider)
session = cluster.connect()
# Connexion avec 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': '/chemin/vers/ca.pem'
})
session = cluster.connect()
Connexion à un keyspace spécifique
session.set_keyspace('mon_keyspace')
# ou
session = cluster.connect('mon_keyspace')
Concepts clés de Cassandra
Architecture des données
- Keyspace — équivalent d'une base de données SQL, contient les paramètres de réplication
- Table — contient des lignes et des colonnes, mais avec une structure interne différente
- Partition key — détermine sur quel nœud la donnée est stockée
- Clustering key — influence l'ordre de stockage au sein d'une partition
- Primary key — composée de la partition key et de la clustering key
Particularités du modèle de données
Cassandra ne prend pas en charge les JOIN ni les agrégations comme en SQL, mais elle se scale horizontalement et garantit une haute disponibilité des données. La conception du schéma doit reposer sur les patterns d'accès aux données.
Création d'un Keyspace et de tables
Création d'un Keyspace
session.execute("""
CREATE KEYSPACE IF NOT EXISTS mon_keyspace
WITH replication = {
'class': 'SimpleStrategy',
'replication_factor': '3'
}
""")
# Pour la production, privilégiez NetworkTopologyStrategy
session.execute("""
CREATE KEYSPACE IF NOT EXISTS mon_keyspace
WITH replication = { Aussi dans la bibliothèque
Symfony/Security pour PHP : guide complet avec exemples
Travailler avec CSV en Kotlin : bibliothèques, analyse et écriture de données
Event Bus et le pattern Observer en Java : implémentation d'une architecture faiblement couplée