Académique Documents
Professionnel Documents
Culture Documents
Introduction
Caractéristiques
Concepts clés
Architecture
Cassandra Query Language (CQL)
Références
2
Inspirée par BigTable de Google.
3
Orientée colonnes
Hautement consistante
Tolérante aux erreurs
Scalable
4
Colonne (Column) : triplet contenant un nom, une valeur et un timestamp.
Ligne (Row) : une ligne est composée d'un ensemble de colonnes. Une ligne est représentée
par une clé et une valeur. Les lignes peuvent être regroupées dans des partitions.
5
Composants
Noeud(node) : composant de base de Cassandra qui contient les données.
Mem-table : après l’écriture des données dans le Commit log, elles sont écrites temporairement
dans la Mem-table.
SSTable : lorsque Mem-table atteint un certain seuil, les données sont vidées dans un fichier de
disque SSTable
6
Réplication
Solution pour fournir une sauvegarde lorsqu’un problème se produit.
Données répliquées pour éviter tout point de défaillance (SPOF).
Facteur de réplication
Nombre total de réplicas déterminé par le facteur de réplication (Replication Factor).
Facteur de réplication recommandé = 3.
7
Stratégie de réplication (Replication Strategy).
Emplacement des réplicas.
2 types de stratégie : SimpleStrategy et NetworkTopologyStrategy
SimpleStrategy
Utilisé lorsqu’il n’y a qu’un data center.
Place le premier réplica sur le nœud sélectionné par le partitionneur
(partitioner). Les réplicas restants sont placés dans le sens des
aiguilles d'une montre.
8
NetworkTopologyStrategy
Utilisée lorsqu’il y a plus que deux data centers.
Réplicas définis pour chaque data center séparément.
Place les réplicas dans le sens des aiguilles d'une montre jusqu'à atteindre
le premier nœud d'un autre rack.
Place les réplicas sur différents racks.
9
Opérations d’écriture
Le coordinateur (coordinator) envoie une requête d’écriture aux réplicas.
Les réplicas reçoivent la requête d’écriture indépendamment de leur niveau de
cohérence (consistency level).
Consistency level : détermine combien de nœuds répondront à la requête avec un
success acknowledgment.
Un nœud répond avec un success acknowledgment si les données sont écrites dans le
Commit log et dans la memTable.
10
Opérations d’écriture
3 types de requêtes de lecture : Direct request, Digest request et Read repair request.
Ensuite, le coordinateur envoie une digest request au nombre de réplicas spécifié par le
niveau de cohérence et vérifie si les données renvoyées sont des données mises à jour.
Finalement, le coordinateur envoie une digest request à tous les réplicas restants.
Si un nœud donne une valeur « périmée », une read repair request en arrière-plan
mettra à jour ces données . Ce processus s'appelle read repair mechanism.
12
Types de données
13
Opérations sur les Keyspaces - Création d’un Keyspace
14
Opérations sur les Keyspaces - Modification d’un Keyspace
15
Opérations sur les Keyspaces - Suppression d’un Keyspace
16
Opérations sur les tables - Création d’une table
17
Opérations sur les tables - Modification d’une table
18
Opérations sur les tables - Suppression d’une table
19
Opérations sur les tables - Table tronquée
20
Opérations sur les données - Ajout de données
21
Opérations sur les données - Interrogation de données
22
Opérations sur les données - Modification de données
23
Opérations sur les données - Suppression de données
24
Opérations sur les Indexes – Création d’un index
25
Opérations sur les Indexes – Suppression d’un index
26
Limites
Pas d'opérations d’agrégation (min, max, avg,…).
Pas de “GROUP BY”.
Pas de “JOIN”.
Pas de “OR”.
Pas de filtres sur les colonnes sans la création d’un index.
27
Collections
28
Collections – Set
29
Opérations sur les collections – Set
Création de la table « Teacher » avec la colonne « Email » comme collection Set
30
Collections – List
31
Opérations sur les collections – List
Ajout de la colonne « coursenames » de type list à la table « teacher »
32
Collections – Map
33
Opérations sur les collections – Map
Associer le nom du cours au nom du cours pré-requis.
34
https://www.guru99.com/cassandra-tutorial.html
https://soat.developpez.com/articles/cassandra/#LIII
Ploetz, A. et al., Seven NoSQL databases in a week, Packt Publishing, 2018.
35