Apache Cassandra : gestion distribuée de bases de données volumineuses
Lorsqu’il vous faut gérer de très gros volumes de données, de l’ordre de plusieurs téraoctets, voire pétaoctets, les systèmes de base de données courants sont vite dépassés.
Il est ici question d’applications Big Data spéciales pour lesquelles une évolutivité élevée est très importante, car il est bien souvent impossible d’évaluer le volume de données réel à gérer au moment de leur création. L’un des porte-étendards modernes privilégiés de ce domaine est la solution open source Cassandra, initialement développée pour Facebook.
Qu’est-ce qu’Apache Cassandra ?
Apache Cassandra est un système de gestion de bases de données (DBMS) open source pour bases de données structurées très volumineuses. Grâce à la bonne évolutivité du système, ces bases de données peuvent être distribuées sur plusieurs clusters. C’est pourquoi Cassandra n’est pas lié à un seul serveur.
Cassandra fait partie des bases de données NoSQL orientées en colonnes. Dans ce contexte, NoSQL signifie « Not only SQL », et non « pas SQL ». Contrairement aux bases de données SQL typiques, les structures NoSQL présentent des avantages considérables pour le traitement de gros volumes de données, dans la mesure où elles ne sont pas liées aux restrictions du langage de requête SQL (Structured Query Language).
Apache Cassandra est doté de son propre langage de requête du nom de Cassandra Query Language (CQL). Celui-ci s’apparente au SQL, mais est privilégié par les développeurs du fait de sa parfaite adéquation aux particularités de Cassandra.
En tant que base de données NoSQL, Cassandra fonctionne selon une approche redondante pour une sécurité renforcée. À l’inverse, la réplication des données des systèmes de base de données relationnels pose toujours de nouveaux problèmes.
Cassandra a été développé par Avinash Lakshman et Prashant Malik, pour Facebook. Sa première version a été publiée en 2008. En 2009, le projet de l’Apache Software Foundation, l’une des principales communautés de développeurs open source, l’a adopté comme sous-projet dans l’incubateur d’Apache. Depuis février 2011, Apache Cassandra est un projet de haut niveau à part entière au sein de l’Apache Software Foundation, au même titre que le très populaire serveur web Apache, le serveur de recherche Solr, la plateforme de messagerie Kafka ou le projet le plus connu d’Apache : OpenOffice.
Outre ses développeurs originaux, d’autres grandes entreprises, telles qu’IBM, Twitter et Rackspace, l’un des plus importants prestataires de services informatiques aux États-Unis, participent désormais au développement de Cassandra. La société DataStax apporte également une contribution significative au projet.
Son modèle commercial repose, pour l’essentiel, sur une offre d’assistance payante, des services d’aide à l’installation et des formations à l’utilisation de la base de données Cassandra.
À ce jour, DataStax prend en charge près de 80 % du développement open source de Cassandra et fournit, avec DataStax Enterprise, une solution de base de données commerciale reposant sur le modèle gratuit usuel de Cassandra.
Cassandra : ses fonctions principales
En tant que système distribué, Cassandra n’utilise pas de maître. Tous les clusters sont dotés d’autorisations identiques et peuvent traiter toutes les requêtes de bases de données qui leur sont adressées. Cela permet d’en augmenter considérablement les performances. Les données sont distribuées sur des nœuds. La facilité d’ajout de nœuds assure la bonne évolutivité du système. Après l’installation, il suffit de distribuer les fichiers de configuration vers les nouveaux nœuds. Cassandra met ici des outils adaptés à disposition des développeurs.
Pour garantir la sécurité et, en cas de besoin, la capacité de restauration des données, Apache Cassandra dispose d’un système de réplication configurable ajustable aux besoins de l’utilisateur. La tolérance aux pannes est limitée par la réplication automatique des données entre les nœuds. Les nœuds affectés par une erreur peuvent facilement être remplacés. Le système reste disponible pour toutes les requêtes.
Cassandra offre en outre une disponibilité et une tolérance à la partition élevées. Selon le théorème CAP informatique, il n’est jamais possible de garantir simultanément la cohérence (Consistency), la disponibilité (Availability) et la tolérance à la partition (Partition tolerance).
Le cas échéant, la cohérence, c’est-à-dire le fait que tous les nœuds puissent, à tout moment, accéder aux mêmes données, se voit attribuer la priorité la plus faible, comme c’est le cas pour de nombreux systèmes Big Data. En cas de panne, la cohérence peut être rapidement garantie par la restauration des données. En ce sens, les deux autres caractéristiques doivent être assurées en permanence.
Les bases de données Cassandra sont compatibles avec le modèle de programmation MapReduce développé par Google pour les calculs de gros volumes de données sur des systèmes distribués. Le langage de requête de base de données propre CQL (Cassandra Query Language) est spécialement adapté aux structures de données de Cassandra.
Quels sont les avantages d’Apache Cassandra ?
L’un des avantages principaux de Cassandra est sa bonne évolutivité à un niveau de sécurité très élevé - des conditions élémentaires pour les applications Big Data. Pour Cassandra, on parle d’évolutivité horizontale. Cela signifie que la capacité et la performance du système peuvent être augmentées par l’ajout de nœuds supplémentaires.
À l’inverse, pour une évolution verticale du système, le serveur de base de données utilisé doit être doté de processeurs plus puissants ou de disques durs plus gros lorsque la performance ou la capacité n’est plus adaptée aux exigences de l’utilisateur. Dans la mesure où il est possible de travailler avec du matériel de serveur usuel, l’évolution horizontale est, dans la plupart des cas, la solution la plus économique.
Le modèle de données de Cassandra est fondé sur les Hash-Tables (tables de hachage) multidimensionnelles, dans lesquelles chaque ligne peut comporter un nombre infini de colonnes. Contrairement à un tableau de base de données classique, ces colonnes n’ont pas besoin d’être identiques pour chaque ligne. Pour les critères de référence et au sein de scénarios d’application réels, Apache Cassandra convainc en outre par un avantage considérable en matière de vitesse d’exploitation par rapport aux autres bases de données NoSQL.
Où utilise-t-on Apache Cassandra ?
L’un des objectifs principaux du développement de Cassandra était de faciliter les recherches de messages entrants pour les utilisateurs de Facebook. Pour cela, le consortium utilisait un cluster de plus de 150 nœuds.
Ce n’est pas un hasard si Cassandra, dont les structures de base s’apparentent à celles d’Amazon Dynamo et Google Bigtable, est désormais l’option privilégiée par les opérateurs de grands réseaux sociaux au sein desquels de nombreuses données doivent être mises en réseau entre les utilisateurs. Ses clients les plus célèbres sont, entre autres, Twitter, Instagram et Spotify, mais aussi le fournisseur de social bookmarking Digg et l’agrégateur de contenu social Reddit.
Entretemps, Facebook a choisi d’utiliser le fruit de ses propres activités de développement : une combinaison des systèmes de bases de données HBase et HDFS, les deux composants du framework Apache-Hadoop.
De nombreux autres réseaux, exploitant de larges volumes de données, se servent de Cassandra comme base de données, tant principale qu’auxiliaire pour certaines opérations. On peut ainsi citer, entre autres, eBay, GitHub, Netflix, The Weather Channel et le Grand collisionneur de hadrons du Centre européen de recherche nucléaire CERN (env. 30 000 téraoctets de données par an). L’une des installations principales de Cassandra est gérée par Apple et compte 75 000 nœuds.
Premiers pas avec Apache Cassandra
Apache Cassandra peut être exécuté sur des systèmes similaires à UNIX, de préférence sur des serveurs Linux. Il faut en outre avoir accès à l’environnement Java Runtime, car Cassandra est programmé en Java. Les packs d’installation sont disponibles sous forme de paquets Debian ou RPM sur les serveurs Apache. Pour l’installation, ajoutez le référentiel adapté. Après l’installation, il convient de créer des répertoires de données, cache et protocoles typiques et de les configurer dans le fichier cassandra.yaml.
Cassandra est administré par ses propres outils de ligne de commande. Le plus important est Shell, le langage de requête de Cassandra cqlsh.
Avec la commande suivante, vous obtiendrez un premier aperçu de toutes les commandes possibles :
cqlsh --help
La vidéo YouTube suivante présente clairement Apache Cassandra :
L’OpsCenter de DataStax est un outil graphique basé web de gestion et de surveillance visuelle des systèmes Cassandra.