Année Universitaire 2018-
Introduction
Caractéristiques
Concepts clés
Architecture
Cassandra Query Language (CQL)
Références
2
Inspirée par BigTable de Google.
Initialement développée par Facebook.
Reprise par la fondation Apache en 2010.
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.
Famille de colonnes (Column family) : regroupement logique de lignes.
Keyspace : regroupement de famille de colonnes.
5
Composants
Noeud(node) : composant de base de Cassandra qui contient les données.
Data center : ensemble de nœuds.
Cluster : ensemble de data centers.
Commit Log : contient toutes les opérations d’écriture (crash recovery).
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
1. Lorsque le nœud reçoit une requête d’écriture,
elle est sauvegardée dans le Commit Log.
2. Cassandra écrit les données dans la mem Table.
MemTable stocke temporairement les données en
mémoire. Les données écrites dans la memTable
pour chaque requête d’écriture sont également
écrites dans le Commit log.
3. Lorsque la memTable est saturée, les données
sont vidées dans le fichier de données SSTable.
11
Opérations de lecture
Le coordinateur (coordinator) envoie une requête de lecture aux réplicas.
3 types de requêtes de lecture : Direct request, Digest request et Read repair request.
D’abord, le coordinateur envoie une direct request à l’un des réplicas.
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
BDR : éviter d’utiliser des valeurs multiples dans un même champs.
Créer une autre table et faire une jointure.
BDNR : minimiser au maximum les jointures pour faciliter et accélerer la navigation.
Collections : sets, listes et maps.
28
Collections – Set
Ensemble non ordonné de valeurs.
Résoudre le problème de champs multiples, comme les emails par exemple.
29
Opérations sur les collections – Set
Création de la table « Teacher » avec la colonne « Email » comme collection Set
Insertion des données dans la collection
30
Collections – List
Utilisée quand l’ordre d’insertion des éléments compte.
Utilisée quand la même valeur est insérée plusieurs fois.
31
Opérations sur les collections – List
Ajout de la colonne « coursenames » de type list à la table « teacher »
Insertion des données dans la colonne « coursenames »
32
Collections – Map
Associer deux éléments sous forme de clef/valeur.
33
Opérations sur les collections – Map
Associer le nom du cours au nom du cours pré-requis.
Insertion des données
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