Apache Cassandra est une base de données NoSQL open source, distribuée, conçue pour offrir une haute disponibilité, une faible latence et une scalabilité massive. Développée à l'origine par Facebook en combinant les concepts du Dynamo d'Amazon et du Bigtable de Google, sa philosophie de conception fondamentale rompt avec les systèmes de gestion de bases de données relationnelles (SGBDR).
Le changement de paradigme le plus critique introduit par Cassandra est son approche de modélisation de données orientée requête ("query-driven"). Contrairement aux SGBDR où le schéma est normalisé, dans Cassandra, la structure des données est déterminée par les modèles d'accès de l'application. Cela implique que les données sont souvent dénormalisées et dupliquées dans plusieurs tables, chacune optimisée pour une requête spécifique, éliminant ainsi le besoin de jointures (non supportées).
Techniquement, Cassandra assure sa scalabilité et sa résilience grâce à une variante de l'hachage cohérent ("Consistent Hashing"). Ce mécanisme distribue les données de manière équilibrée sur un cluster de nœuds et permet d'ajouter ou de retirer des serveurs avec une perturbation minimale. La structure des données est hiérarchique : les Keyspaces contiennent des Tables, qui sont elles-mêmes des collections de Partitions. Chaque partition, identifiée par une clé de partition, regroupe des lignes qui sont triées en interne par des clés de clustering.
Le langage d'interaction est le CQL (Cassandra Query Language), dont la syntaxe s'apparente à celle du SQL. Cependant, il omet intentionnellement des fonctionnalités coûteuses en performance comme les jointures distribuées et l'intégrité référentielle, et présente des comportements distincts tels que l'"upsert" (une commande INSERT ou UPDATE crée ou met à jour une ligne).
Apache Cassandra est une base de données NoSQL distribuée, open source, qui présente un modèle de stockage en colonnes larges partitionnées. Elle a été initialement conçue chez Facebook, s'inspirant d'une combinaison du système Dynamo d'Amazon et du modèle Bigtable de Google. Son développement visait à surmonter les limitations des bases de données relationnelles en matière de disponibilité continue et de faible latence pour les lectures et écritures, en particulier pour les applications à très grande échelle en termes de volume de données, de requêtes et de besoins de stockage.
La conception de Cassandra est guidée par plusieurs objectifs fondamentaux visant à garantir la performance et la résilience dans des environnements distribués :