Académique Documents
Professionnel Documents
Culture Documents
C OLONNES AVEC
C ASSANDRA
I. Présentation de Cassandra
Cassandra 1 est une base de données NOSQL orientée colonnes, destinée
pour de grands volumes de données, hétérogènes, de structure et taille
évolutives et hautement disponibles, sans compromettre la performance.
http://cassandra.apache.org/download/
<cass_home>/bin/cassandra –f
2. Pour arrêter Cassandra, cliquer sur:
Ctrl-C
Page 2
TP4 : NOSQL Orientées Colonnes avec Cassandra
Nous citons ci-dessous les commandes de base de CQL. Pour plus de détails,
consulter la documentation officielle.
<cass_home>/bin/cqlsh
- Créer un Keyspace :
describe keyspaces;
- Se connecter au keyspace :
USE mykeyspace;
- Créer une table (il est possible de remplacer le terme TABLE par
COLUMNFAMILY).
describe tables;
- Remplir la table:
Page 3
TP4 : NOSQL Orientées Colonnes avec Cassandra
- Créer un index sur une colonne, puis extraire les données selon cette
colonne :
TRUNCATE users;
- Supprimer une table :
DROP users;
Dans les bases NOSQL, le but ultime est de minimiser au maximum les jointures,
pour faciliter et accélerer la navigation. C’est pour cette raison que des
collections comme les sets, listes et maps sont utilisés.
Page 4
TP4 : NOSQL Orientées Colonnes avec Cassandra
IV.2.1. Sets
Un ensemble (set) est un ensemble non ordonné de valeurs. En utlisant le type
de données set, il est possible de résoudre le problème de champs multiples,
comme les emails par exemple.
a. Création
Prenons par exemple le cas d’un ensemble d’emails pour un utilisateur. C’est
représenté par un seul champ, de type set<text>, et est défini dans la table
users comme ceci:
Pour insérer des données dans l’ensemble, placer les valeurs entre accolades
et les séparer par des virgules. Les différentes valeurs dans un ensemble
doivent être uniques.
UPDATE users
SET emails = emails + {'fb@friendsofmordor.org'}
WHERE user_id = 1234;
d. Extraction
Page 5
TP4 : NOSQL Orientées Colonnes avec Cassandra
e. Suppression
IV.2.2. Listes
Une liste est utilisée quand l’ordre d’insertion des éléments compte, ou quand
on veut pouvoir insérer la même valeur plusieurs fois.
a. Création
UPDATE users
SET top_places = [ 'rivendell', 'rohan' ]
WHERE user_id = 1234;
On remarquera ici que les éléments de la liste sont placés entre crochets.
c. Ajout
Page 6
TP4 : NOSQL Orientées Colonnes avec Cassandra
UPDATE users
SET top_places = top_places + [ 'mordor' ]
WHERE user_id = 1234;
Pour affecter un élément à un emplacement donné (écrase l’ancienne
valeur) :
UPDATE users
SET top_places[1] = 'riddermark' WHERE user_id = 1234;
Quand un élément est ajouté à la fin (ou au début) de la liste, cette dernière
n’est pas lue. On écrit directement la valeur à son emplacement. Par contre,
quand un élément est placé dans une position particulière, Cassandra lit la
liste entière, puis ajoute le nouvel élément, ce qui provoque une plus grande
latence.
d. Suppression
e. Extraction
IV.2.3. Maps
Une map permet d’associer deux éléments, sous forme de clef/valeur. Elle
peut être utilisée, par exemple, pour sauvegarder les horaires des différents
évènements dans un profil utilisateur.
Page 7
TP4 : NOSQL Orientées Colonnes avec Cassandra
Chaque élément dans une Map est stocké dans Cassandra comme étant
une colonne que vous pouvez modifier, remplacer et requêter.
a. Création
UPDATE users
SET todo['2012-10-2 12:00'] = 'throw my precious into
mount doom' WHERE user_id = 1234;
Utiliser INSERT pour spécifier des données dans une Map :
d. Suppression
Page 8