Une base NoSQL: Cassandra

Qu'est ce que Cassandra ?

Présentation

Cassandra est une base de données NoSQL appartenant à la famille des bases de données orientées colonnes. Cassandra est un projet lancé par Facebook en 2007 qui avait atteint les limites des bases de données relationnalles, c'est pour cela qu'ils ont décidé de créer leur propre base de données répondant à leurs besoins. Après 2 ans de développement, ils ont décidé de l'offrir au monde du libre c'est donc devenu un projet open source appartenent à la fondation Apache en 2009.

Cassandra reprend les conceptes de 2 bases de données existantes. La première BigTable, créé par Google, pour son modèle de données orienté colonne et son mécanisme de persistance sur disque, et la seconde Dynamo, créé par Amazon, pour son achitecture distribuée sans noeud maître.

Plusieurs grandes sociétés utilisent Cassandra pour leur application grand public. C'est le cas de Facebook, Twitter, Digg, Cisco WebEx, IBM, etc.

Les avantages

Cassandra est très rapide pour manipuler un volume important de données. Elle permet d'avoir des schémas de données flexible grâce à sa représentation en colonnes. De plus son achitecture lui permet d'évoluer sans problème dans un environnement distribué, elle intégre des mécanismes de réplication de données et la possibilité de mettre en cluster plusieurs serveurs Cassandra.

Pour ses accès disque, Cassandra privilégie toujours les accès séquentiels aux accès aléatoires, ce qui permet d’éviter une partie des latences importantes dues aux mécaniques des disques durs. Ainsi, lors d’une écriture, les données ne sont pas écrites directement sur disque mais stockées dans une table en mémoire ; un ajout dans un commitlog se comportant en append-only (et donc de manière séquentielle) permet d’assurer la durabilité de l’écriture. Lorsque la table en mémoire est pleine, elle est écrite sur le disque.

Les limites

La principale limitation concernant les tailles des colonnes et des super-colonnes, toutes les données pour une valeur de clé, doivent tenir sur le disque d’une seule machine. Parce que la valeur des clés seules détermine les noeuds responsable de la réplication des données, la quantité de données associées à une clé a cette limitation.