Dernière mise à jour : 24/07/2026
Apache Cassandra est une base de données NoSQL distribuée et Open Source, conçue pour gérer de grands volumes de données sur plusieurs serveurs. Son architecture décentralisée élimine les points de défaillance uniques, ce qui en fait un choix fiable pour les charges de travail à haute disponibilité et à forte intensité d'écriture qui doivent rester en ligne, quelles que soient les indisponibilités de nœuds ou de centres de données.
Les ingénieurs de Facebook (aujourd'hui Meta), Avinash Lakshman et Prashant Malik, ont créé Cassandra pour optimiser la recherche dans la boîte de réception de Facebook. Il leur fallait un système capable de stocker et de rechercher des ensembles de données volumineux sur de nombreux serveurs sans ralentissement.
Pour le créer, l'équipe s'est inspirée de deux autres modèles de base de données établis : elle a combiné le modèle de stockage à colonnes larges de l'article de Google sur Bigtable de 2006 avec l'architecture en anneau distribuée de Dynamo d'Amazon. Ils ont nommé le projet d'après la prophétesse troyenne mythologique, en référence à la"malédiction" de faire des prédictions auxquelles personne ne croit.
Le projet a rapidement évolué à mesure que son potentiel est devenu évident pour la communauté des ingénieurs :
De nombreuses entreprises lui font confiance pour alimenter leurs systèmes en raison de son ancienneté. Bien que Cassandra reste un choix éprouvé pour les systèmes à haute disponibilité, l'évaluation de ses compromis de conception aide les équipes à décider si l'autogestion d'une architecture héritée répond aux besoins des applications modernes.
Cassandra est souvent utilisé pour les tâches qui impliquent un flux constant de données, comme les informations provenant de capteurs intelligents (IoT), la journalisation des applications et les pipelines de surveillance. Il est également largement utilisé pour le suivi des événements et les systèmes de recommandation, où il est essentiel d'enregistrer et d'interroger rapidement les données à grande échelle.
Les systèmes qui ne peuvent pas se permettre de temps d'arrêt utilisent Cassandra, car sa réplication multi-centre de données et ses écritures asynchrones permettent de mettre hors connexion un centre de données entier sans interrompre le service ni perdre de données. De nombreuses entreprises internationales s'en servent pour que leurs applications fonctionnent 24h/24 et 7j/7 dans différentes régions.
Cassandra utilise une conception de pair à pair dans laquelle chaque nœud est identique. Ces nœuds sont configurés dans un anneau décentralisé et utilisent une méthode appelée hachage cohérent pour répartir les données de manière uniforme, éviter les goulots d'étranglement et s'assurer qu'il n'y a pas de point de défaillance unique. Vous pouvez également choisir le niveau de rigueur de la base de données lorsqu'elle vérifie si une lecture ou une écriture a réussi. Cela vous permet de choisir entre la vitesse et la disponibilité des données les plus récentes, en fonction des besoins spécifiques de votre application.
La base de données utilise un modèle appelé "magasin orienté colonnes", qui permet d'organiser vos données en espaces de clés, lignes et colonnes dynamiques, de manière semblable à une feuille de calcul standard, mais avec plus de flexibilité. Vous pouvez ainsi concevoir vos données de manière à pouvoir les modifier facilement à mesure que votre application se développe.
Fonctionnalité | Apache Cassandra | SGBDR classique |
Modèle de données | Dénormalisés | Normalisés |
Flexibilité des schémas | Peut changer pendant l'exécution | Nécessite un temps d'arrêt |
Structure de l'index | Arbre de fusion structuré en journal | B-Tree |
Optimisation de l'écriture | Principal | Secondaire |
Positionnement CAP (cohérence, disponibilité, tolérance aux partitions) | AP (disponibilité et tolérance de partition) | CA (Cohérence et disponibilité) |
Fonctionnalité de requête | CQL (pas de jointure) | SQL complet avec des jointures |
Modèle de données
Dénormalisés
Normalisés
Flexibilité des schémas
Peut changer pendant l'exécution
Nécessite un temps d'arrêt
Structure de l'index
Arbre de fusion structuré en journal
B-Tree
Optimisation de l'écriture
Principal
Secondaire
Positionnement CAP (cohérence, disponibilité, tolérance aux partitions)
AP (disponibilité et tolérance de partition)
CA (Cohérence et disponibilité)
Fonctionnalité de requête
CQL (pas de jointure)
SQL complet avec des jointures
Le moteur de stockage Cassandra s'appuie sur un arbre LSM (Log-Structured Merge) pour gérer les données. Les écritures entrantes sont enregistrées dans un journal de commit pour assurer leur durabilité et conservées en mémoire via une Memtable. Lorsqu'elles sont pleines, les Memtables sont vidées sur le disque sous forme de tables de chaînes triées (SSTables) immuables.
Cette conception en mode "ajout uniquement" explique pourquoi Cassandra excelle dans les débits d'écriture élevés. En évitant les mises à jour sur place, le système peut traiter les données entrantes beaucoup plus rapidement que les systèmes traditionnels qui s'appuient sur des E/S de disque aléatoires.
Voici les réponses à certaines questions fréquentes sur Cassandra.
Il s'agit d'une base de données distribuée utilisée pour les applications qui doivent rester en ligne à tout moment et gérer de nombreuses écritures de données, telles que les journaux de flux ou les données de capteurs.
Cassandra est une base de données NoSQL. Elle utilise un langage appelé CQL, qui ressemble à SQL, mais ne prend pas en charge toutes les mêmes fonctionnalités, comme les jointures complexes ou la sécurité des transactions approfondie.
Kafka sert à déplacer des données en temps réel, tandis que Cassandra sert à les stocker de manière sécurisée. Elles sont souvent utilisés ensemble dans un même système.
Cassandra est plus adaptée pour écrire de grandes quantités de données à grande échelle. MongoDB est une base de données de documents qui est souvent plus adaptée si vous devez effectuer des recherches dans différents types de données avec des structures flexibles.
Cassandra est conçue pour le traitement transactionnel en ligne (Online Transaction Processing, OLTP), ce qui signifie qu'elle est efficace pour gérer des lectures et des écritures simples et rapides. Elle n'est pas conçue pour les tâches d'analyse complexes, comme l'exécution de rapports volumineux ou l'analyse de toutes vos données en même temps.
Évolutivité
Vous pouvez ajouter des nœuds pour gérer plus de travail, sans avoir à éteindre le système.
Aucun point de défaillance unique
Comme tous les nœuds sont égaux, le système est très stable.
Copie automatique des données
Le système enregistre automatiquement vos données à plusieurs endroits.
Écritures rapides
La conception du stockage est prévue pour gérer un grand nombre d'écritures simultanées.
Cohérence réglable
Vous pouvez contrôler le niveau de rigueur de vos données pour chaque requête. Choisissez "Tous" les nœuds pour une précision parfaite ou "Un" nœud pour une vitesse maximale.
Pas de dépendance vis-à-vis d'un fournisseur
Comme il s'exécute sur du matériel standard, vous n'êtes pas lié à un fournisseur de services cloud spécifique. Vous pouvez déplacer vos données entre des configurations sur site et différents clouds si nécessaire.
L'exécution de votre propre système Cassandra nécessite beaucoup de frais généraux. Vous devez planifier l'espace nécessaire, configurer les serveurs, gérer les réparations, vous assurer d'avoir des sauvegardes et effectuer des mises à jour pendant que le système est en cours d'exécution.
Les services gérés changent la donne en s'occupant du plus gros du travail pour vous.
En transférant ces tâches opérationnelles vers une plate-forme gérée, votre équipe n'a plus à se soucier de la gestion de la base de données et peut se concentrer sur l'apport de valeur ajoutée pour vos utilisateurs.
Pour exécuter vos charges de travail Cassandra, vous avez trois options principales.
Le choix de la bonne approche dépend de l'équilibre entre l'expertise de votre équipe et les besoins spécifiques de votre entreprise. Utilisez cette checklist pour vous aider à prendre votre décision :
Question | Si la réponse est "oui"… | Si la réponse est "non"… |
Avons-nous le temps de corriger et d'ajuster la base de données ? | Vous pouvez gérer les clusters autogérés si vous disposez d'ingénieurs dédiés à la gestion de base de données. | Choisissez un service géré pour éviter de perdre du temps d'ingénierie sur la maintenance de l'infrastructure. |
Est-il plus important de "rester en ligne" que d'être parfaitement cohérent ? | Le modèle AP de Cassandra est idéal pour les applications à haute disponibilité. | Envisagez d'utiliser Cloud Spanner, qui offre l'évolutivité d'un système distribué avec une sécurité stricte des données. |
Devons-nous évoluer rapidement à mesure que nous nous développons ? | Utilisez des services gérés ou Bigtable, qui offrent l'autoscaling pour gérer les pics de trafic. | Un cluster statique peut fonctionner, mais vous risquez de rencontrer des goulots d'étranglement au niveau des performances pendant les périodes de forte activité. |
Un service géré rendrait-il notre travail plus fiable ? | Tout à fait. Les services gérés automatisent les sauvegardes et l'application de correctifs pour éviter les erreurs humaines. | Vous acceptez le risque plus élevé de maintenance manuelle et d'erreurs de configuration potentielles. |
Visons-nous la portabilité de l'infrastructure ? | La solution autogérée vous offre la plus grande liberté pour passer d'un cloud à l'autre ou pour l'exécution sur site. | Vous êtes à l'aise avec les avantages spécifiques au cloud en échange d'un effort opérationnel moindre. |
Question
Si la réponse est "oui"…
Si la réponse est "non"…
Avons-nous le temps de corriger et d'ajuster la base de données ?
Vous pouvez gérer les clusters autogérés si vous disposez d'ingénieurs dédiés à la gestion de base de données.
Choisissez un service géré pour éviter de perdre du temps d'ingénierie sur la maintenance de l'infrastructure.
Est-il plus important de "rester en ligne" que d'être parfaitement cohérent ?
Le modèle AP de Cassandra est idéal pour les applications à haute disponibilité.
Envisagez d'utiliser Cloud Spanner, qui offre l'évolutivité d'un système distribué avec une sécurité stricte des données.
Devons-nous évoluer rapidement à mesure que nous nous développons ?
Utilisez des services gérés ou Bigtable, qui offrent l'autoscaling pour gérer les pics de trafic.
Un cluster statique peut fonctionner, mais vous risquez de rencontrer des goulots d'étranglement au niveau des performances pendant les périodes de forte activité.
Un service géré rendrait-il notre travail plus fiable ?
Tout à fait. Les services gérés automatisent les sauvegardes et l'application de correctifs pour éviter les erreurs humaines.
Vous acceptez le risque plus élevé de maintenance manuelle et d'erreurs de configuration potentielles.
Visons-nous la portabilité de l'infrastructure ?
La solution autogérée vous offre la plus grande liberté pour passer d'un cloud à l'autre ou pour l'exécution sur site.
Vous êtes à l'aise avec les avantages spécifiques au cloud en échange d'un effort opérationnel moindre.
Si vous souhaitez vous décharger de la gestion de Cassandra, Google Cloud propose deux solutions utiles : Bigtable et Spanner.
Si vous utilisez déjà Cassandra pour son stockage à colonnes larges et son débit d'écriture élevé, Bigtable peut être une solution idéale. Pour l'utiliser, vous pouvez mapper vos espaces de clés et tables Cassandra existants à des tables Bigtable, puis mettre à jour le code de votre application pour utiliser les bibliothèques clientes Cloud Bigtable. Comme il s'agit d'un service entièrement géré, Bigtable gère automatiquement le partitionnement et l'équilibrage de charge que vous deviez auparavant régler manuellement dans Cassandra.
Si votre charge de travail Cassandra a atteint un point où vous avez besoin d'une cohérence plus forte ou si vous avez besoin des fonctionnalités relationnelles de SQL, Spanner peut également être un bon choix. Pour l'utiliser, vous devez définir votre schéma à l'aide du langage SQL standard, ce qui peut vous obliger à normaliser certaines de vos données Cassandra dénormalisées. Il offre le même scaling horizontal que Cassandra, mais avec l'avantage d'une cohérence forte et globale, et d'une compatibilité SQL relationnelle complète.
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.