Cassandra vs MySQL
Cassandra est une alternative à MySQL, Oracle ou autre gestionnaire de données pour de très grandes quantités de requêtes.
Il tend à être utilisé par de plus en plus d'acteurs différents, mais cela reste un produit nouveau qui n'a pas été confronté à toute la variété des utilisations que l'on peut en faire. On peut s'attendre à des revers en l'adaptant à une nouvelle application.
Il convient à des bases de données entièrement distribuées et hautement extensibles, donc pour le trafic important de sites tels que Facebook (qui l'a développé), avec des millions de requêtes par heure.
Le modèle distribué permet de stocker les informations sur de nombreux serveurs différents gérés par un système central.
Ecrit en Java, il peut s'intégrer plus facilement à un environnement de serveur dans ce langage.
Cassandra est basé sur le modèle de données non relationnel BigTable créé par Google et utilisé par l'index de son moteur de recherche, fonctionnant sur Dynamo, le modèle de stockage d'Amazon.
Il a été mis en open source par Facebook en 2008 et depuis pris en charge par la fondation Apache.
Le mot Cassandra (Cassandre) vient de la mythologie grecque: C'est une princesse qui a le pouvoir de prédire l'avenir mais dont le destin est de ne jamais être crue. Le logo représentant un regard féminin se rapporte à cette idée de vision. On suppose que le développeur s'attendait à ne pas être cru quand à l'avenir de ce système.
Cassandra vs MySQL
Cassandra s'inscrit dans le mouvement NoSQL qui veut simplifier les bases de données en supprimant l'aspect relationnel.
Les tables n'ont plus un schéma fixe prédéfini (que l'on peut en fait modifier ultérieurement), et peuvent évoluer horizontalement (quand aux colonnes) autant que verticalement (quand au lignes, donc aux enregistrements).
NoSQL signifie en fait Not Only SQL (pas seulement SQL), donc cela ne remet pas en cause le langage d'interrogation, qui est toujours SQL.
Cassandra n'a pas de schéma et pas de table. Le nombre de colonnes peut varier d'une ligne à l'autre. MariaDB (alternative à MySQL) a implémenté un système de colonnes dynamiques qui permet de faire la même chose. Mais on sort du cadre SQL quand aux commandes.
Voici un comparatif de performances fourni par Apache:
- Ecriture: MySQL: 300 ms. Cassandra: 0,12 ms.
- Lecture: MySQL: 350 ms. Cassandra: 15 ms.
Différences de conception:
- Nombre de colonnes: MySQL: 4096. Cassandra: 2 milliards.
Cassandra est moins fiable que MySQL et a une communauté et donc un support moins importants. On trouve beaucoup moins d'outils pour aider à le faire fonctionner, tels les interfaces graphiques, les gestionnaires comme PhpMyAdmin.
Ce n'est pas un système comme MySQL qu'il suffit d'installer pour qu'il soit opérationnel, il convient de lire attentivement le manuel et d'adapter la configuration à votre projet logiciel (indépendamment de la création des tables).
Les utilisateurs de Cassandra
Twitter n'utilise pas à ce jour Cassandra pour gérer les tweets, car il lui faudrait réécrire entièrement le système, il l'utilise pour les données statistiques et la géolocalisation.
Se plaignant des lenteurs de MySQL, Digg a décidé de réimplémenter entièrement sa gestion de données sous Cassandra.
Netflix, l'entreprise de streaming TV préfère renoncer aux avantages du relationnel pour l'extensibilité de Cassandra.
Facebook est à l'origine de Cassandra, même si le projet a ensuite été intégré à Apache. Mais il l'a remplacé par Hadoop, un framework Java pour le traitement distribué de données. Cassandra est aussi écrite en Java, mais il existe une version C++, ScyllaDB, dont on affirme qu'elle est 10 fois plus rapide.
Cassandra comme d'autres logiciels open source tendent à remplacer Oracle qui a vu le nombre de nouvelle licences baisser de 28% en 2014.