Vous êtes sur la page 1sur 10

Formation Pratique Cassandra

Mohamed CHERRADI && Anass EL HADDADI


14 November 2018

L’objectif de ce TP est une prise en main du SGBD Cassandra : création, peuplement


et interrogation de la base de données. Nous verrons également l’outil natif de supervision :
Nodetool.

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.

CREATE KEYSPACE IF NOT EXISTS ecole WITH REPLICATION =


{ ’ class ’ : ’ Simple Strategy ’, ’ replication_factor ’: 1 };

La commande Describe ’Desc keyspaces’ permet de lister l’ensemble des keyspaces.

DESCRIBE KEYSPACES ;

Utiliser la commande ’use nom_keyspace’ pour vous positionner dans le keyspace sou-
haité.

use ecole ;

1.2 Création des tables


Cql3 est le langage d’interrogation natif de Cassandra, il utilise la même syntaxe que
SQL mais avec des différences fondamentales que nous verrons dans la suite de ce TP.
Nous créons deux tables (ou Column Family sous Cassandra) Cours et Enseignant avec
les structures suivantes :

1
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

CREATE TABLE Cours (


id Cours INT ,
Intitule VARCHAR ,
Responsable INT ,
Niveau VARCHAR ,
nb Heures Max INT ,
Coeff INT ,
PRIMARY KEY ( id Cours )
);
CREATE TABLE Enseignant (
id Enseignant INT PRIMARY KEY ,
Nom VARCHAR ,
Prenom VARCHAR ,
status VARCHAR
);

Pour afficher la structure d’une table, il est possible d’utiliser la commande suivante :
DESC ecole ;

1.2.1 Insertion de donnée


Nous allons dans cette partie procéder au peuplement de nos tables.
Comme en SQL, il existe différentes options d’insertion des données :
1. Dictement dans le terminal CQLSH
INSERT INTO nomtable ( nomscolonnes ...) VALUES ( valeurs ...);

2. En appelant un script CQL en utilisant la fonction ’Source’ suivie du ’chemin_du_fichier’.


##### table cours
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
1 ,’ Introduction . aux . Bases . de. Donnees ’ ,1 ,’ M1 ’ ,30 ,3);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
2 ,’ Immeubles . de. Grandes . Hauteurs ’ ,4 ,’ M1 ’ ,30 ,2);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
3 ,’ Production . et. distribution . de. biens . et. de. ser ’ ,5 ,’ M1 ’ ,30 ,2);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
4 ,’ Bases . de. Donnees . Avancees ’ ,1 ,’ M2 ’ ,30 ,5);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
5 ,’ Architecture . des . Systemes . Materiel ’ ,6 ,’ M2 ’ ,8 ,1);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
6 ,’ IT. Business ./. Introduction ’ ,7 ,’ M2 ’ ,20 ,3);
INSERT INTO cours ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES (
7 ,’ IT. Business ./. Strategie . et. Management ’ ,8 ,’ M2 ’ ,10 ,1);
##### table Enseignant
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
1 ,’ Travers ’,’ Nicolas ’,’ Vacataire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
2 ,’ Mourier ’,’ Pascale ’,’ Titulaire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
3 ,’ Boisson ’,’ Francois ’,’ Vacataire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
4 ,’ Mathieu ’,’ Eric ’,’ Titulaire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
5 ,’ Chu ’,’ Chengbin ’,’ Titulaire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
6 ,’ Boutin ’,’ Philippe ’,’ Titulaire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
7 ,’ Escribe ’,’ Julien ’,’ Vacataire ’);
INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (
8 ,’ Znaty ’,’ David ’,’ Vacataire ’);

2
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

INSERT INTO Enseignant ( id Enseignant , Nom , Prenom , status ) VALUES (


9 ,’ Abal - Kassim ’,’ Cheik . Ahamed ’,’ Vacataire ’);

3. En utilisant la fonction Copy :


COPY table_name [( column_list )]
FROM ’ file_name ’[, ’ file 2 _name ’, ...] | STDIN
[ WITH option = ’ value ’ [ AND ...]]

les données du script csv à construire.


idCours ,Intitule ,Responsable ,Niveau ,nbHeuresMax ,Coeff
1,’Introduction aux Bases de Donnees ’,1,’M1’ ,30,3
2,’Immeubles de Grandes Hauteurs ’,4,’M1’ ,30,2
3,’Production et distribution de biens et de ser’,5,’M1’ ,30,2
4,’Bases de Donnees Avancees ’,1,’M2’ ,30,5
5,’Architecture des Systemes Materiel ’,6,’M2’ ,8,1
6,’IT Business / Introduction ’,7,’M2’ ,20,3
7,’IT Business / Strategie et Management ’,8,’M2’ ,10,1

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 ) ;

(a) Intitulé des cours du responsable n 1 ;


(b) Intitulé des cours dont le nombre d’heures maximum est égal à 30 ;
(c) Intitulé des cours dont le responsable ’1’ et dont le niveau est ’M1’ ; Utiliser ’AL-
LOW FILTERING’.
(d) Intitulé des cours dont les responsables ont une valeur inférieure à 5 ;
(e) Intitulé des cours dont l’identifiant est inférieure à 5 ; Utiliser la fonction ’token()’.
(f) Compter le nombre de lignes retournées par la requête précédente ; Utiliser ’COUNT(*)’

1.3 cql avancé


Sous cassadra il y a plusieures types de données : native_type | collection_type |
user_defined_type | tuple_type | custom_type

3
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

1.3.1 La taple de paramétrage FTFRA_Parameter


Nous allons créer un keyspace pour un cluster plutôt de deux data_center DC1 et
DC2 et chaque DC est composé de trois noeuds. On utilise la stratégie NetworkTopo-
logyStrategy.
CREATE KEYSPACE " nos "
WITH REPLICATION = {
’ class ’ : ’ Network Topology Strategy ’,
’ DC1 ’ : 3 , // Datacenter 1
’ DC2 ’ : 3 , // Datacenter 2
};

Pour voir les schémas de tous les keyspaces utiliser la commande :


SELECT * FROM system . schema_keyspaces ;

On va créer une table ftfra_parameters


CREATE TABLE ftfra_parameters (

tabname text PRIMARY KEY ,


datemaj timestamp ,
params list <text >,
LAST_UPDATE timestamp );

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.

-Export des données


COPY FTFRA_parameters ( tabname , datemaj , params , last_update )
TO ’../ ftfra_param . csv ’ WITH DELIMITER : ’ |’ and HEADER = TRUE ;

- Import des données


Cette opération génère un fichier csv.
COPY nos . FTFRA_parameters ( tabname , datemaj , params , last_update )
FROM ’../ ftfra_param . csv ’ WITH DELIMITER : ’ |’ and HEADER = TRUE ;

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.

(a) Ajouter un enregistrement dans la table.


(b) Ajouter un élément uniquement dans la liste dont le nom de la table est
(c) Retourner les deux dernières tables récemment modifiées.
(d) Retourner les tables modifiées entre deux dates.
S23_AIRTIME_BREAKS.

1.3.2 apprendre à éviter les jointures (en option)


La jointure n’est pas possible avec CQL (à cause du stockage par hachage distribué).
Nous allons utiliser une approche pour dénormaliser deux tables et qui repose sur
l’utilisation des listes. On va intégrer la table ’Enseignant’ dans la table ’Cours’, nous
appellerons cette table ’coursEnseignant ’.
prmierment on va créer le type enseigant
CREATE TYPE Enseignant (
id Enseignant , Nom VARCHAR , Prenom VARCHAR , status VARCHAR ,

);

puis nous allons créer la nouvelle table CoursEnseignant /


CREATE TABLE cours Enseignant (
id Cours INT ,
Intitule VARCHAR ,
Responsable frozen < Enseignant >,
Niveau VARCHAR ,
nb Heures Max INT ,
Coeff INT ,
PRIMARY KEY ( id Cours )
);

maintenant nous allons insérer les données dans la table CoursEnseignant :


INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(1 , ’ Introduction . aux. Bases . de. Donnees ’,
{’ idenseignant ’:’ 1 ’,’ nom ’:’ Travers ’,’ prenom ’:’ Nicolas ’,’ status ’:’ Vacataire ’ },’ M1 ’ ,30 ,3);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(2 , ’ Immeubles . de. Grandes . Hauteurs ’,
{’ idenseignant ’:’ 4 ’,’ nom ’:’ Mathieu ’,’ prenom ’:’ Eric ’,’ status ’:’ Titulaire ’},’ M1 ’ ,30 ,2);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(3 , ’ Production . et. distribution . de. biens . et. de. ser ’,
{’ idenseignant ’:’ 5 ’,’ nom ’:’ Chu ’,’ prenom ’:’ Chengbin ’,’ status ’:’ Titulaire ’ },’ M1 ’ ,30 ,2);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(4 , ’ Bases . de. Donnees . Avancees ’,
{’ idenseignant ’:’ 1 ’,’ nom ’:’ Travers ’,’ prenom ’:’ Nicolas ’,’ status ’:’ Vacataire ’ },’ M2 ’ ,30 ,5);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(5 , ’ Architecture . des. Systemes . Materiel ’,
{’ idenseignant ’:’ 6 ’,’ nom ’:’ Boutin ’,’ prenom ’:’ Philippe ’,’ status ’:’ Titulaire ’},’ M2 ’ ,8 ,1);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(6 , ’ IT. Business ./. Introduction ’,
{’ idenseignant ’:’ 7 ’,’ nom ’:’ Escribe ’,’ prenom ’:’ Julien ’,’ status ’:’ Vacataire ’},’ M2 ’ ,20 ,3);
INSERT INTO Cours Enseignant ( idCours , Intitule , Responsable , Niveau , nbHeuresMax , Coeff ) VALUES
(7 , ’ IT. Business ./. Strategie . et. Management ’,
{’ idenseignant ’:’ 8 ’,’ nom ’:’ Znaty ’,’ prenom ’:’ David ’,’ status ’:’ Vacataire ’ },’ M2 ’ ,10 ,1);

5
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

(a) Créer un index sur le Niveau de la table CoursEnseignant ;


(b) Donner les noms des responsables des cours (table CoursEnseignant) de niveau
’M1’ ;
(c) Donner l’intitulé des cours dont le responsable est vacataire ;
Nous allons inverser la fusion des tables en créant une table ’EnseignantCours’ avec un
sous-type ’Cours’. mais cette fois-ci un enseignent peut donner plusieurs cours,pour
cela on va utiliser MAP
premièrement on vas créer le type cour
CREATE TYPE cour (
id Cours INT ,
Intitule VARCHAR ,
Niveau VARCHAR ,
nb Heures Max INT ,
Coeff INT ,
);

puis on vas créer la nouvelle table Enseignantcours

CREATE TABLE Enseignantcours (


id Enseignant INT ,
Nom VARCHAR ,
Prenom VARCHAR ,
status VARCHAR ,
cours MAP ( int , frozen <cour >),
);

nouvelle insertions de données pour la nouvelle table créer


INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (1 , ’ Travers ’,’ Nicolas ’,’ Vacataire ’,
{1:{ idcours :1 , intitule :’ Introduction . aux . Bases . de. Donnees ’, niveau :’ M1 ’, nb Heures Max :30 , Coeff :3} ,
4:{ idcours :4 , intitule :’ Bases . de. Donnees . Avancees ’, niveau :’ M2 ’, nb Heures Max :30 , coeff : 5}});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (2 , ’ Mourier ’,’ Pascale ’,’ Titulaire ’, {});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (3 , ’ Boisson ’,’ Francois ’,’ Vacataire ’, {});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (4 , ’ Mathieu ’,’ Eric ’,’ Titulaire ’,
{4:{ idcours :2 , intitule :’ Immeubles . de. Grandes . Hauteurs ’, niveau :’ M1 ’, nb Heures Max :30 , coeff : 2}});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (5 , ’ Chu ’,’ Chengbin ’,’ Titulaire ’, {});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (6 , ’ Boutin ’,’ Philippe ’,’ Titulaire ’,
{5:{ idcours :5 , intitule :’ Architecture . des . Systemes . Materiel ’, niveau :’ M2 ’, nb Heures Max :8 , coeff : 1}});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (7 , ’ Escribe ’,’ Julien ’,’ Vacataire ’,
{6:{ idcours :6 , intitule :’ IT. Business ./. Introduction ’, niveau :’ M2 ’, nb Heures Max :20 , coeff : 3}});
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (8 , ’ Znaty ’,’ David ’,’ Vacataire ’,
{7:{ idcours :7 , intitule :’ IT. Business ./. Strategie . et. Management ’, niveau :’ M2 ’, nb Heures Max :10 , coeff : 1}}
INSERT INTO Enseignant Cours ( id Enseignant , Nom , Prenom , status , cours )
VALUES (9 , ’ Abal - Kassim ’,’ Cheik . Ahamed ’,’ Vacataire ’, {});

(a) Créer un index sur le status de la table EnseignantCours ;


(b) Donner les intitulés des cours dont le responsable est Vacataire ;

6
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

1.3.3 group by

Apache Cassandra 3 ne prend en charge que le groupement avec clé de partition ou


clé de partition et clé de clustering. Par exemple, si on veut le nombre d’heures pour
chaque master :

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 )

Pour afficher toutes les vues on utilise la commande suivante :


select * from system . built_view

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.

2.1 Démarrage et arret de Cassandra


Pour le démarrage de Cassandra, il est possible d’utiliser ’/bin/cassandra’, toutefois, nous
allons utiliser le script OperateCassandra.
Le démarrage peut être surveillé dans le fichier de log :

7
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

2.2 État du cluster et monitoring


nodetool status
nodetool info
nodetool netstats
nodetool tablestats

(a) Vérifier l’état de chaque noeud.


(b) quel est la charge de données hébergé par chaque noeud.
(c) quel est protocole de communication utilisé ?
La commande ’Nodetool status’ permet d’obtenir des informations vous permettent de vous
faire rapidement une idée de l’état général des membres du cluster.

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.

2.3 L’activité locale : nodetool compactionstats et tpstats


En géneral, on pense à cette commande lorqu’on constate une forte ativité disque. la com-
mande nodetool compaction renseigne sur l’activité des compactions.

nodetool compactionstats -H

— H : affiche des unités de grandeur en GB, MB eu lieu d’un résultat en bytes.


— pending tasks : le nombre de tâches de compactions en cours.

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

Sur la colonne Droped on peut lire le nombre d’écritures "Mutation" refusées.

2.4 statistiques locales d’une table


Vu le fonctionnement du moteur de Cassandra, les valeurs obtenues restent une estimation
(mais très proches des valeurs réelles). En revanche, Les temps de latence (read/write|latency)
locaux et globaux sont précis.
— SSTable count : représente le nombre de fichiers physiques locaux. Une valeur
élevée nécessite une opération de Compaction.

8
M-CHERRADI, A-EL HADDADI Cassandra NoSQL - DB

— number of keys : une estimation du nombre de lignes dans la table.


— Average live cells / Maximum tombstones per slice » : le rapport données actives /
données périmées. Ce sont des chiffres difficiles à estimer. Par exemple, les tombs-
tones (données supprimées / périmées) sont uniquement comptées à la lecture de
la partition. Si vous ne faites qu’écrire, vous pouvez avoir un excellent ratio mais
le disque dur remplit de données inutiles.
— Space used by snapshots : espace utilisé par les sauvegardes. La commande nodetool
listsnapshots est plus appreciée pour l’analyse des sauvegarde.

3 Les sauvegardes : Snapshot


IL existe les Snapshots Full (Hard link) qui effectue une sauvegarde instantanée
de toutes les données et les sauvegardes incrémentales qui ne stockent que les mo-
difications depuis le dernier FULL.

Pour faire un snapshot de le keyspace nos


nodetool snapshot nos

Le snapchot est créé dans le répertoire data_directory/keyspace_name/ table_name-


UUID/snapshots/snapshot_name. Chaque répertoire de snapshots contient de
nombreux fichiers .db contenant les données au moment de snapshots. Example
de installation linux
/var/lib/cassandra/data/nos/ ? ? ?/snapshots/ ? ? ?/ ? ? ?.db

3.0.1 restauration avec un snapchot


(a) copier le ficher de snapchot dans le répertoire du keyspace
example /var/lib/cassandra/data/nos/ ? ? ?/snapshots/ ? ? ?/ ? ? ?.db to /var/-
lib/cassandra/data/nos/ ? ? ?.db
(b) lancer la commande suivante
nodetool refrech nos

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

nodetool repair - seq nos

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

nodetool repair - dc DC1

10

Vous aimerez peut-être aussi