Aller plus loin avec Apache Cassandra

@joekakone

Joseph Konka @joekakone

03/03/2026 · 15 min

Approfondissez vos compétences sur Apache Cassandra : mécanique interne du moteur de stockage (Memtable, SSTable, CommitLog), maintenance avec nodetool, certifications officielles et grand quiz technique.

Aller plus loin avec Apache Cassandra#

Félicitations pour avoir complété ce cursus consacré à Apache Cassandra ! Vous maîtrisez désormais l'un des moteurs de bases de données distribuées les plus puissants et les plus résilients de l'écosystème Big Data mondial.

Pour parfaire votre profil d'ingénieur ou d'architecte de données, ce chapitre réunit les secrets de la mécanique interne de stockage (LSM-Tree), les commandes indispensables de l'outil d'exploitation nodetool, les ressources d'approfondissement, le panorama des certifications professionnelles, ainsi qu'un grand quiz technique d'évaluation.


1. La mécanique interne du moteur d'écriture (LSM-Tree)#

La réputation d'Apache Cassandra repose sur sa capacité à enregistrer des centaines de milliers d'écritures par seconde là où d'autres moteurs s'effondrent. Ce prodige technique découle de son moteur de stockage basé sur les arbres LSM (Log-Structured Merge-tree).

Le cheminement d'une écriture (Write Path)#

Lorsqu'un nœud reçoit une écriture, il ne modifie jamais directement les données existantes sur le disque :

flowchart TD
    Client[Requête Client : INSERT / UPDATE] --> Coord[Coordinateur]
    Coord -->|Envoi aux répliques| N1[Nœud Cassandra]

    subgraph Noeud_Interne ["Cheminement interne de l'écriture (Write Path)"]
        N1 -->|1. Écriture séquentielle append-only| CL[("CommitLog (Disque)<br/>Garantie de Durabilité")]
        N1 -->|2. Écriture en mémoire vive| MT["Memtable (RAM)<br/>Structure triée"]
        MT -->|3. Flush asynchrone quand plein| SST[("SSTables (Disque)<br/>Fichiers immuables pré-triés")]
        SST -->|4. Fusion en tâche de fond| Comp["Processus de Compaction<br/>Purge des tombstones & déduplication"]
    end

    MT -.->|Acquittement client ACK en < 2 ms| Client
  1. Le CommitLog (Disque) : La donnée est immédiatement ajoutée à la fin d'un journal séquentiel en mode append-only. L'écriture séquentielle étant extrêmement rapide (aucun déplacement de tête de lecture ni recherche d'index), la durabilité est garantie sans pénalité de latence.
  2. La Memtable (RAM) : Simultanément, la donnée est insérée dans une table en mémoire vive, triée selon la clé primaire. Dès que le CommitLog et la Memtable ont enregistré la valeur, Cassandra renvoie l'acquittement au client en moins de deux millisecondes !
  3. Le Flush en SSTables (Disque) : Lorsque la Memtable atteint sa limite de capacité, elle est vidée (flushed) sur le disque sous la forme d'un fichier immuable appelé SSTable (Sorted String Table). Une SSTable n'est jamais modifiée une fois écrite.
  4. La Compaction : Comme de multiples SSTables s'accumulent au fil des écritures et suppressions, un processus d'arrière-plan fusionne régulièrement les SSTables, élimine les cellules obsolètes, purge les tombstones expirés et recrée une nouvelle SSTable consolidée.

Le rôle des Filtres de Bloom (Bloom Filters)#

Comment Cassandra peut-il lire rapidement une ligne sans parcourir des dizaines de fichiers SSTables sur le disque ?
Grâce aux Filtres de Bloom, une structure probabiliste ultra-compacte conservée en mémoire vive (RAM) pour chaque SSTable : - Le filtre de Bloom peut affirmer avec une certitude absolue (100 %) : « Cette clé de partition n'est PAS présente dans cette SSTable ». - Dans ce cas, Cassandra ignore complètement le fichier disque, économisant jusqu'à 99 % des opérations d'E/S (I/O).


2. Exploitation & Administration avec nodetool#

L'utilitaire nodetool est le panneau de contrôle de l'administrateur Cassandra. Il communique avec la JVM via le port JMX (7199).

Commande nodetool Rôle et utilité opérationnelle
nodetool status Affiche l'état de santé de chaque nœud du cluster (UN = Up/Normal, DN = Down/Normal), sa charge disque et son centre de données.
nodetool ring Cartographie l'anneau de hachage complet et la distribution des plages de tokens entre les nœuds.
nodetool info Fournit les métriques du nœud local : uptime, mémoire JVM allouée, pourcentage d'utilisation du cache de clés.
nodetool tablestats Détaille les métriques par table : nombre de SSTables, taille moyenne et maximale des partitions, ratio de tombstones.
nodetool repair Lance le processus anti-entropie : synchronise et réconcilie les données divergentes entre les différentes répliques du cluster.
nodetool cleanup Nettoie les données résiduelles et libère l'espace disque après l'ajout d'un nouveau nœud sur l'anneau.
nodetool drain Vide les Memtables en mémoire vers les SSTables sur disque avant un arrêt propre du serveur.

3. L'écosystème Cloud : DataStax Astra DB#

Pour exploiter la puissance d'Apache Cassandra sans avoir à gérer l'infrastructure physique, les correctifs de JVM et les compactions manuelles, DataStax (le sponsor principal d'Apache Cassandra) propose Astra DB : - Une plateforme de base de données Cassandra entièrement Serverless et managée dans le cloud (AWS, Google Cloud, Azure). - Facturation à la consommation exacte (écritures, lectures, stockage). - API REST, GraphQL et interface native CQL. - Support natif des index vectoriels (Vector Search) pour les applications d'IA générative et de RAG.

Lien officiel : https://astra.datastax.com


4. Documentation officielle & Ouvrages de référence#

  • Documentation officielle Apache Cassandra (cassandra.apache.org/doc/) : La documentation de référence exhaustive avec les guides de configuration de cassandra.yaml et la spécification CQL.
  • DataStax Academy (academy.datastax.com) : Plateforme de cours gratuits dispensés par les créateurs du moteur, avec des laboratoires pratiques interactifs.
  • « Cassandra: The Definitive Guide » (3ᵉ édition, Éditions O'Reilly) par Jeff Carpenter et Eben Hewitt : Le livre incontournable pour maîtriser l'architecture distribuée, la modélisation avancée et le tuning de performance.

5. Tutoriel vidéo recommandé#

Pour approfondir les concepts avec un atelier visuel :

freeCodeCamp.org - Apache Cassandra Full Course
Un cours complet couvrant l'anneau de hachage, la modélisation Query-First, le partitionnement et l'interaction CQL.


6. Certifications professionnelles officielles#

Faire certifier vos compétences sur Apache Cassandra atteste de votre expertise en ingénierie de données distribuées et haute disponibilité :

  1. DataStax Certified Professional on Apache Cassandra (Developer) :
  2. Évalue la modélisation des données Query-First, la conception des clés primaires et composites, la gestion des types collections, et l'intégration des pilotes applicatifs.
  3. DataStax Certified Professional on Apache Cassandra (Administrator) :
  4. Évalue l'administration d'infrastructure, le paramétrage de la JVM, la gestion des nœuds avec nodetool, les procédures de réparation anti-entropie, la sauvegarde et la restauration de données.

7. Grand Quiz d'auto-évaluation technique#

Testez vos connaissances en répondant aux 10 questions suivantes avant de dérouler l'explication détaillée :


Question 1 : Architecture Masterless#

Pourquoi Apache Cassandra ne possède-t-il aucun point de défaillance unique (Single Point of Failure - SPOF) ?

  • A) Parce que toutes les données sont stockées sur un disque dur réseau partagé (SAN).
  • B) Parce que tous les nœuds jouent un rôle strictement symétrique et que n'importe quel nœud peut agir en coordinateur pour n'importe quelle requête.
  • C) Parce qu'il existe un serveur maître de secours caché.
  • D) Parce que les requêtes sont interceptées par un équilibreur de charge matériel externe.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Dans l'architecture pair-à-pair sans maître (*Masterless*) de Cassandra, il n'existe ni serveur maître, ni nœud de contrôle centralisé. Tous les nœuds de l'anneau sont égaux. Si un nœud tombe en panne, le cluster continue de fonctionner normalement sans aucune interruption de service ni élection de bascule.

Question 2 : Règle de cohérence stricte (Strong Consistency)#

Dans un Keyspace configuré avec un facteur de réplication \(N = 3\), quelle combinaison de niveaux de cohérence garantit mathématiquement une lecture strictement à jour (\(R + W > N\)) ?

  • A) Écriture à \(W = \text{ONE}\) et Lecture à \(R = \text{ONE}\)
  • B) Écriture à \(W = \text{QUORUM}\) et Lecture à \(R = \text{QUORUM}\)
  • C) Écriture à \(W = \text{ANY}\) et Lecture à \(R = \text{ONE}\)
  • D) Écriture à \(W = \text{ONE}\) et Lecture à \(R = \text{TWO}\) avec \(N = 4\)
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** (QUORUM + QUORUM) **Explication détaillée :** Avec $N = 3$, le quorum strict représente $\lfloor 3/2 \rfloor + 1 = 2$ nœuds. Si $W = 2$ et $R = 2$, alors $R + W = 4 > 3$. L'intersection des ensembles de nœuds garantit qu'au moins un des deux nœuds interrogés lors de la lecture détient la toute dernière écriture horodatée.

Question 3 : Partition Key vs Clustering Key#

Quel est le rôle respectif de la Partition Key et de la Clustering Key dans une table Cassandra ?

  • A) La Partition Key trie les données, la Clustering Key localise le nœud.
  • B) La Partition Key détermine sur quel nœud physique de l'anneau est stockée la donnée (via le token Murmur3), tandis que la Clustering Key détermine l'ordre physique de tri des lignes au sein de la partition sur le disque.
  • C) Elles sont strictement interchangeables.
  • D) La Clustering Key est une clé étrangère pointant vers une autre table.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** La fonction de hachage `Murmur3Partitioner` calcule un token numérique à partir de la **Partition Key** pour placer la partition sur l'anneau. À l'intérieur de cette partition, les lignes sont physiquement écrites sur le disque ordonnées selon les colonnes de la **Clustering Key**.

Question 4 : Mécanisme d'écriture et rapidité#

Pourquoi les écritures dans Cassandra sont-elles presque instantanées (< 2 ms) ?

  • A) Parce que Cassandra ne sauvegarde les données sur disque qu'une fois par semaine.
  • B) Parce que l'écriture se fait séquentiellement en mode append-only dans le CommitLog (disque) et en mémoire dans la Memtable (RAM), sans aucune recherche préalable d'index.
  • C) Parce que les écritures ne sont jamais vérifiées.
  • D) Parce que Cassandra désactive les verrous du système de fichiers.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Cassandra n'effectue aucune opération de lecture avant écriture et n'altère aucun bloc disque existant. Il écrit séquentiellement dans le `CommitLog` (accès séquentiel ultra-rapide) et peuple la `Memtable` en RAM, puis renvoie immédiatement l'acquittement au client.

Question 5 : Rôle des Filtres de Bloom (Bloom Filters)#

À quoi sert un Filtre de Bloom lors d'une opération de lecture dans Cassandra ?

  • A) À compresser les fichiers SSTables.
  • B) À crypter les données transmises sur le réseau.
  • C) À déterminer avec certitude en mémoire RAM si une clé de partition n'existe PAS dans une SSTable donnée, évitant ainsi un accès disque inutile.
  • D) À trier les résultats par ordre alphabétique.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : C** **Explication détaillée :** Le filtre de Bloom est une structure probabiliste rapide hébergée en RAM. Si le filtre indique que la clé n'est pas dans la SSTable, Cassandra sait à 100 % qu'il n'a pas besoin de lire ce fichier sur le disque.

Question 6 : Suppression et Tombstones#

Que dépose Cassandra sur le disque lors de l'exécution d'une instruction DELETE ?

  • A) Il efface immédiatement les octets correspondants du disque dur.
  • B) Il écrit un marqueur spécial d'effacement horodaté appelé « Tombstone ».
  • C) Il déplace la ligne dans une corbeille système.
  • D) Il réinitialise la partition entière à zéro.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** (Un Tombstone) **Explication détaillée :** Les SSTables étant immuables, Cassandra ne peut pas modifier un fichier existant sur disque. Il enregistre donc un marqueur d'effacement (*Tombstone*). Les données supprimées ne disparaissent physiquement du disque que lors de la phase de *compaction* ultérieure.

Question 7 : L'antipattern ALLOW FILTERING#

Pourquoi l'utilisation de la clause ALLOW FILTERING dans une requête de production est-elle fortement déconseillée ?

  • A) Parce qu'elle modifie la structure des tables de manière irréversible.
  • B) Parce qu'elle force Cassandra à effectuer un balayage complet de tous les nœuds et partitions du cluster (Full Cluster Scan), provoquant des pics de charge et de latence imprévisibles.
  • C) Parce qu'elle nécessite des droits d'administration root.
  • D) Parce qu'elle est incompatible avec Python.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Si une requête exige `ALLOW FILTERING`, cela signifie qu'elle ne cible pas la clé de partition. Le coordinateur doit alors interroger chaque nœud du cluster et lire l'ensemble des données pour filtrer en mémoire, ruinant le principe d'accès en temps constant.

Question 8 : Le protocole Gossip#

Quel est le rôle du protocole Gossip dans Apache Cassandra ?

  • A) Valider les identifiants et mots de passe des utilisateurs.
  • B) Permettre aux nœuds d'échanger de manière pair-à-pair et décentralisée des informations sur l'état de santé, la topologie et la charge du cluster chaque seconde.
  • C) Sauvegarder les données sur le cloud.
  • D) Exécuter les requêtes analytiques lourdes.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Le protocole Gossip est un protocole de communication épidémique décentralisé. Chaque seconde, les nœuds échangent des messages d'état avec 3 voisins aléatoires, ce qui permet à l'ensemble du cluster de converger vers une vision unifiée de la topologie sans serveur maître.

Question 9 : Durée de vie des données (TTL)#

Que permet d'accomplir la clause USING TTL 86400 lors d'une insertion ?

  • A) Limiter le temps d'exécution de la requête à 86 400 millisecondes.
  • B) Définir une date d'expiration automatique : la donnée sera marquée comme expirée et supprimée au bout de 86 400 secondes (24 heures) sans nécessiter de script de purge.
  • C) Forcer la réplication sur 86 400 nœuds.
  • D) Bloquer l'accès à la table pendant 24 heures.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Le paramètre `TTL` (*Time To Live*) associe un compte à rebours en secondes à une ligne ou une cellule. Une fois le délai écoulé, Cassandra traite automatiquement la donnée comme un tombstone expiré, simplifiant la gestion des sessions, des paniers temporaires et des journaux d'événements.

Question 10 : La commande nodetool repair#

Pourquoi est-il indispensable d'exécuter périodiquement nodetool repair en production ?

  • A) Pour formater les disques durs défaillants.
  • B) Pour réconcilier les données entre les répliques et synchroniser les nœuds qui auraient manqué des écritures lors d'une panne réseau temporaire (processus anti-entropie).
  • C) Pour redémarrer le service Cassandra sans coupure.
  • D) Pour supprimer les tables orphelines.
💡 Afficher la bonne réponse et l'explication **Bonne réponse : B** **Explication détaillée :** Dans un système distribué à cohérence ajustable, un nœud peut être temporairement injoignable pendant une écriture. Le processus anti-entropie `nodetool repair` compare les arbres de Merkle entre répliques et synchronise les données divergentes pour restaurer la cohérence globale du cluster.

Conclusion & Perspectives#

Vous possédez désormais un socle d'expertise solide et concret sur Apache Cassandra, le modèle en colonnes larges et les architectures de stockage distribuées sans maître.

Pour continuer d'élargir vos compétences en ingénierie Big Data sur AlgoJungle : - Maîtrisez le calcul analytique distribué en mémoire avec Apache Spark. - Automatisez et orchestrez vos pipelines de données complexes avec Apache Airflow. - Découvrez l'intégration et la transformation de données avec Talend.

Je vous souhaite un immense succès dans la conception de vos architectures de données massives !
— Joseph Konka

Commentaires

Inscrivez-vous à une formation complète

Voir le catalogue