Académique Documents
Professionnel Documents
Culture Documents
1 Interrogation de Cassandra
1.1 Création de la base de données
1.1.1 keyspace
Nous allons dans un premier temps créer un keyspace (avec RF = 1) nommé ’Ecole’
mais que vous pouvez, pour le bon déroulement du TP nommer autrement, par exemple
’Ecole_votre_nom’.
Selon l’architecture du cluster, la stratégie de réplication peut différer. penser à donc
utiliser la bonne stratégie.
DESCRIBE KEYSPACES ;
Utiliser la commande ’use nom_keyspace’ pour vous positionner dans le keyspace sou-
haité.
use ecole ;
1
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
Pour afficher la structure d’une table, il est possible d’utiliser la commande suivante :
DESC ecole ;
2
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
1.2.2 Interogation
Pour interroger la base de données, la syntaxe CQL est fortement inspirée de SQL.
Pour la suite des exercices, exprimer en CQL la requête demandée :
(a) Lister les intitulés des cours ;
(b) Donner le nom de l’enseignant dont l’identifiant est 4 ;
1.2.3 INDEX
pour faire des recherches sur le champs responsable il faut créer un index dans la table
cours
CREATE INDEX Enseignement_idx ON Cours ( Responsable ) ;
3
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
Pour alimenter la table on va utiliser la fonction COPY. les donées se trouvent dans
le fichier Export.csv. l’import doit étre rélisé avec le délimiteur utilisé est ’|’. Après
l’import, faire une sauvegarde dans un fichier csv toujours via la commande copy.
Éviter d’utiliser le délimiteur par défaut.
Pour manipuler aisément les données, nous allons créer un index de type SASI sur les
autres attributs Param.
Pour rappel, SASI est un type d’index secondaire développé par Apple et mis à dis-
position de la communauté Cassandra ( introduit depuis Cassandra 3.4 mais je re-
commande Cassandra 3.5 au moins à cause de corrections de bugs critiques ). il existe
trois modes :
(a) PREFIX - Utilisé pour servir les requêtes LIKE en fonction du préfixe de la colonne
indexée
(b) CONTAINS - Utilisé pour répondre aux requêtes LIKE selon que le terme recher-
ché existe ou non dans la colonne indexée.
(c) SPARSE - Utilisé pour indexer les données rares . Par exemple, les requêtes de
plage qui couvrent des horodatages volumineux.
4
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
Pour effectuer les requêtes suivantes, vous auriez besoin de créer un index. on préfé-
rera l’index SASI.
);
5
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
6
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
1.3.3 group by
select idcours , sum ( nb Heures Max ) from cours group by idCours , Niveau ;
le résultat c’est un message d’erreur car le champ niveau ne fait pas parti de la clé de
partitionnement ni de clustering. il n’est pas possible de modifier la clé primaire avec
une table déjà crée. Donc on est devant deux solutions : 1 créer de nouveau la table
cours et insérer les données. 2 créer une vue matérialisé (on teste dans ce TP mais ce
n’est pas très apprécié ) On vas créer un vue matérialisé de la table cours en ajoutant
le champs niveau dans la clé primaire.
CREATE MATERIALIZED VIEW ecole . cours_niveau
AS SELECT * FROM ecole . cours
WHERE idcours IS NOT NULL AND niveau IS NOT NULL
PRIMARY KEY ( idcours , niveau )
Maintenant on lance la même requête de grpupe by mais cette fois-ci sur la vue
coursniveau.
select idcours , sum ( nb Heures Max ) from cours_niveau group by idCours , Niveau ;
2 Administration Cassandra
Cassandra offre deux outils fondamentaux le premier est cqlsh celui utilisé dans la première
parties de ce tp il nous permet de la gestion de base de donnée ainsi de définir les règles de
Consistency. le second outil c’est nodetool.
L’utilitaire nodetool est un excellent outil d’administration et de surveillance. La section
suivante abordera certaines des fonctionnalités utiles de nodetool. La plupart des commandes
nodetool sont évidentes et peuvent être facilement apprises en lisant le texte d’aide. on va
voir dans cette section lire des informations sur notre cluster , eventuellemnt voir comment
faire des Snapshot et des opération de Repair.
Il y a d’autres commandes, mais destinées à l’administrateur seulement. Ne tentez pas de les
lancer, car si vous cassez le cluster, plus personne ne pourra travailler.
7
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
nodetool status
— « UN » : « Up|Normal ». Tout est OK, le nœud est disponible. Les autres statuts
que vous pourrez voir sont « DN » (« Down | Normal ») pour un noeud arrêté
et « UJ » (« Up|Joining ») pour un nœud en cours d’intégration. Vous pourrez
éventuellement voir un « L » pour « Leaving » si un nœud est en train de sortir.
— « Load » représente la répartition du volume des données.
nodetool compactionstats -H
Les Repairs augmentent le nombre du pending tasks mais la norme est constatée dans l’heure
qui suit. Si c’est le cas, et que cela ne baisse pas dans l’heure qui suit, Cassandra a un
problème. On vérifie les stats du pool java du noeud depuis qu’il est lancé via nodetool
tpstats
nodetool tpstats
8
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
3.1 Repair
La repair commande répare un ou plusieurs nœuds d’un cluster et fournit des
options permettant de limiter la réparation à un ensemble de nœuds. Voir Ré-
paration des nœuds . Effectuer une réparation régulière du noeud anti-entropie
est important, en particulier dans un environnement qui supprime fréquem-
ment des données.
exemples :
Pour effectuer une réparation séquentielle de tous les espaces clés sur le nœud
actuel :
9
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB
Pour limiter la réparation au centre de données local, utilisez l’option -dc suivie
du nom du centre de données. Émettez la commande à partir d’un noeud du
centre de données que vous souhaitez réparer
10