Cassandra (base de données)

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher
Page d'aide sur l'homonymie Pour les articles homonymes, voir Cassandre (homonymie).
image illustrant un logiciel libre
Cet article est une ébauche concernant un logiciel libre.

Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants.

Cassandra
Logo

Helenos est une interface graphique pour Cassandra
Helenos est une interface graphique pour Cassandra

Développeur Fondation Apache
Première version 2008
Dernière version 3.1.1 ()[1]Voir et modifier les données sur Wikidata
État du projet en développement actif
Écrit en Java[2]
Environnement Multiplate-forme
Type Base de données orientée colonnes
Licence Licence Apache 2 (Logiciel libre)
Site web cassandra.apache.orgVoir et modifier les données sur Wikidata

Apache Cassandra est un système de gestion de base de données (SGBD) de type NoSQL conçu pour gérer des quantités massives de données sur un grand nombre de serveurs, assurant une haute disponibilité en éliminant les points individuels de défaillance. Il permet une répartition robuste sur plusieurs centres de données[3], avec une réplication asynchrone sans master et une faible latence pour les opérations de tous les clients.

Cassandra met l'accent sur la performance. En 2012, des chercheurs de l'université de Toronto étudiant les systèmes NoSQL ont conclu : « en termes d'adaptabilité, il y a un gagnant indiscutable. Cassandra atteint le plus fort débit sur le maximum de nœuds dans tous les tests » même si « cela se fait au détriment d'une latence élevée sur les lectures et les écritures »[4].

Le projet est open source et porté par la fondation Apache.

Histoire[modifier | modifier le code]

Initialement développée par Facebook, l'application a été libérée dans l'espace open source en juillet 2008, et rapidement adoptée par des entreprises gérant d'importants volumes de données, telles que Twitter[5], Netflix[6], digg.com[7] ou Spotify[8]. Jeff Hammerbacher, directeur de la division Data chez Facebook, a décrit Cassandra comme une application du type de BigTable servie par une infrastructure proche de Amazon DynamoDB (en).

En 2015 selon db-engines.com[9], Cassandra occupe la 8e place dans le classement des systèmes de gestion de bases de données les plus populaires tout types confondus, et la deuxième place pour les systèmes de gestion de bases de données NoSQL (derrière MongoDB).

Fonctionnalités[modifier | modifier le code]

Décentralisation[modifier | modifier le code]

Tous les nœuds du cluster ont le même rôle. Il n'y a pas de point individuel de défaillance. Les données sont distribuées dans la grappe de serveurs (chaque nœud contient des données différentes), et il n'y a pas de master : tous les nœuds peuvent traiter toutes les requêtes.

Langage de requête[modifier | modifier le code]

Le langage de requête spécifique à Cassandra s'appelle CQL (pour Cassandra Query Language). Des implémentations existent pour les langages Java (JDBC), Python (DBAPI2), Node.js (Helenus), Go (gocql) et C++.

Voici un exemple de création d'un espace de clés contenant une famille de colonnes en CQL 3.0[10] :

CREATE KEYSPACE MonEspaceDeCle
  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

USE MonEspaceDeCle;

CREATE COLUMNFAMILY MesColonnes (id text, Nom text, Prenom text, PRIMARY KEY(id));

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('1', 'Doe', 'John');

SELECT * FROM MesColonnes;

Ce qui donne :

 id | nom | prenom
----+-----+--------
  1 | Doe |   John

(1 rows)

Modèle de données[modifier | modifier le code]

Cassandra est basée sur une structuration en paires clé-valeur de type eventually consistent[11]. L'architecture relationnelle est orientée colonne, avec des éléments plus traditionnels (stockage horizontal des paires). Les données sont distribuées selon leur clé primaire.

Notes et références[modifier | modifier le code]

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Apache Cassandra » (voir la liste des auteurs).

  1. (en) « 3.1.1 » (consulté le 24 décembre 2015)
  2. https://github.com/apache/cassandra/tree/trunk/lib
  3. (en) Joaquin Casares, « Multi-datacenter Replication in Cassandra », DataStax,‎ (consulté le 25 juillet 2013) : « Cassandra’s innate datacenter concepts are important as they allow multiple workloads to be run across multiple datacenters… »
  4. (en) Tilmann Rabl, Mohammad Sadoghi, Hans-Arno Jacobsen, Sergio Gomez- Villamor, Victor Muntes Mulero - et Serge Mankovskii, « Solving Big Data Challenges for Enterprise Application Performance Management », VLDB,‎ (consulté le 25 juillet 2013) : « In terms of scalability, there is a clear winner throughout our experiments. Cassandra achieves the highest throughput for the maximum number of nodes in all experiments... this comes at the price of high write and read latencies »
  5. (en) « Cassandra @ Twitter: An Interview with Ryan King », sur nosql.mypopescu.com,‎ (consulté le 26 juin 2014)
  6. http://www.lemondeinformatique.fr/actualites/lire-comment-netflix-a-survecu-au-redemarrage-d-amazon-ec2-58853.html
  7. « Looking to the future with Cassandra | Digg About » (version du 22 juillet 2012 sur l'Internet Archive)
  8. (en) « Switching user database on a running system », sur labs.spotify.com,‎ (consulté le 11 septembre 2015)
  9. (en) « DB-Engines Ranking - popularity ranking of database management systems », sur db-engines.com (consulté le 26 juin 2014)
  10. https://cassandra.apache.org/doc/cql3/CQL.html
  11. http://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf

Voir aussi[modifier | modifier le code]

Sur les autres projets Wikimedia :

Articles connexes[modifier | modifier le code]