BigData NoSQL 03 Cassandra
BigData NoSQL 03 Cassandra
BigData NoSQL 03 Cassandra
◼Présentation de Cassandra
• Origine
✓ Initialement développé en interne par Facebook pour besoins de
sa messagerie interne
✓ 2008, Facebook offre Cassandra à la fondation Apache
✓ Sur site d’Apache http://cassandra.apache.org/ on trouve
◼ De nombreuses ressources via un WIKI et versions à télécharger
✓ Principaux contributeurs au projet Cassandra sont de DataStax
✓ Utilisateurs de Cassandra : Netflix, Spotify, eBay ou Twitter
◼ Liste non exhaustive disponible sur le site de DataStax
◼ http://planetcassandra.org/Company/Viewcompany?IndustryId=-1
tolerance)
◼ Le théorème stipule que pour toute base de données, on ne peut choisir
que 2 de ces 3 paramètres, jamais les 3 en même temps.
◼ Cohérence et disponibilité (CA) donc non résistante aux pannes
application
On dénormalise en 2 tables
◼ Ici, clé de partition est désigné par #partition, clé de colonne #col
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 16
Base de données NoSQL
◼Présentation de Cassandra
• Modèle physique de données
✓ Partitions, colonnes et cellules
#partition Colonne Colonne Colonne Colonne Colonne ...
#col1 #col2 #col3
Partition1
cellule1 cellule2 cellule3
#col1 #col2
Partition2
cellule1
#col1 #col2 #col3 #col4 #col5
Partition3
cellule1 cellule3 cellule5
#col1 Les données sont disposées sur des lignes (qu’on appelle partition)
Partition4
cellule1 et au sein de chaque partition on a une série de colonnes avec
#col/cellule qu’on peut assimiler à une série de clé/valeur
d’administration OpsCenter
cli.bat)
◼ script Python pour le client CQL (cqlsh), avoir chemin du répertoire
d’environnement
◼ Ajouter à Path Variable Système le
chemin d’accès à bin de Cassandra
Cassandra démarre :
◼ Lancer cqlsh dans une autre
invite de commande cmd
o Relation d’égalité (=) sur les clés de partition y compris clé de partition
composite
o Relation d’égalité (=) ou d’inégalité (<, , , >) sur les clés de colonne
◼ Clause ORDER BY limitée
o Utilisée uniquement sous certaines conditions (voir plus loin)
◼ Pas de contraintes
o Les contraintes d’intégrité/d’unicité telles qu’en SQL n’existent pas. Le
mot clé primary key ne permet que de spécifier la clé de partition
data-centers
◼ replication factor : nombre de copie d’une donnée au sein des
31
nœuds du cluster
Bases de données NoSQL -
Cassandra
◼Exploitation
• Opérations sur les Keyspaces
✓ Interrogation
◼ Affichage de la liste des keyspaces disponibles d’une base de données
◼ Select * from system_schema.keyspaces;
✓ Modification / Suppression
◼ La modification permet de paramétrer certaines options comme la
stratégie de placement ou le facteur de réplication, mais pas le nom du
keyspace
◼ Alter keyspace cassandraexpl with replication ={'class':
'SimpleStrategy','replication_factor':2};
◼ Suppression
◼ Drop keyspace cassandraexpl;
Where colonne X = y)
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 34
Bases de données NoSQL -
Cassandra
◼Exploitation
• Opérations sur les familles de colonnes (column family)
✓ Indexation et clés
◼ La Clé pour Cassandra :
◼ Peut être composée d’une ou plusieurs colonnes, la clé est alors
composée
◼ 1er élément d’1 clé composée, clé de partitionnement
trouver l'enregistrement
◼ Permet récupération rapide de données réparties sur +sieurs nœuds.
données une fois qu’on sait sur quel nœud se situe les données
◼ Soit la table :
Create table musique(id uuid, ordre_musique int, titre text, album text, artiste
text, primary key(id,ordr_musique));
◼ On peut faire la requête suivante :
Where id = ….
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 39
Bases de données NoSQL -
Cassandra
◼Exploitation
• Opérations sur les familles de colonnes (column family)
✓ Création
◼ Création d’une famille de colonnes dans le cas statique
◼ Create Table Personnes ( Nom varchar, Prenoms varchar, age int,
adresse varchar, primary key(nom)) [if not exists];
◼ Une colonne peut être une collection, on a 3 types de collections :
◼ Set : stocker un groupe d’éléments qui seront restituer dans un
ordre (alphabétique, …)
◼ List : pour des éléments dont l’ordre importe ou si on doit stocker
exists] ;
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 48
Bases de données NoSQL -
Cassandra
◼Exploitation
• Opérations sur les lignes
✓ Modification
◼ Modification avec collection Set
◼ Update entreprise set email = email +{'oka@soft.net'} where id=
8fc7-c2ea2d0b525d;
◼ Suppression d’un élément d’une liste à partir de l’indice
◼ Delete phone[2] from entreprise where id= 49b49328-274c-40c8-
8fc7-c2ea2d0b525d;
◼ Suppression d’un élément d’un Map à partir de la clé
◼ delete teams[2009] from equipe where id= f4c0eece-75d8-4f78-
a7cc-a1ef20ab0e39;
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 52
Bases de données NoSQL -
Cassandra
◼Travaux pratiques N3
• Voir fiche de TP
output_name ]
FROM [keyspace_name.] table_name
[WHERE [primary_key_conditions] [AND ] [index_conditions]]
[GROUP BY column_name[,…]]
[ORDER BY PK_column_name (ASC|DESC)]
[LIMIT N | PER PARTITION LIMIT N) ]
[ALLOW FILTERING]
◼ DISTINCT partition_key : retournes les valeurs distinctes de la clé
de partition
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 54
Bases de données NoSQL -
Cassandra
◼Exploitation
• Opérations sur les lignes
✓ Interrogation
◼ Syntaxe :
◼ column_list : column_name | function_name( argument_list )
FROM rang_par_annee_et_nome
WHERE “nom_course" = 'Tour of Japan - Stage 4 - Minami >
Shinshu' AND annee_course = 2014;
◼ N.B. : l’opérateur logique OR n’est pas supporté dans Cassandra
options set<varchar>);
◼ On peut afficher les champs d’un type par : describe type voiture;
✓ Modification d’un type utilisateur
◼ On peut ajouter ou renommer un champ à l’aide de : ALTER TYPE
◼ ALTER TYPE <nom type> ADD <nom champ> <type de champ>;
◼ Alter type voiture add kilometrage int;
[WITH table_options]
◼ Concerne uniquement les options
✓ Suppression
◼ Syntaxe
◼ DROP MATERIALIZED VIEW [IF EXISTS]
[keyspace_name.] view_name
◼ Exemple : drop materialized view cycliste_age;
text,num int)
returns null on null input returns text
language javascript as
$$ column.substring(0,num) $$;
Function (UDF)
◼ Définition de function d’agrégat appelée User Defined Aggregate
(UDA)
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 72
Bases de données NoSQL -
Cassandra
◼Exploitation
• Fonction d’Agrégat définie par l’utilisateur (UDA)
✓ Création d’agrégat par l’utilisateur (UDA – User Defined
Aggregate)
◼ Principe : exécute une fonction UDF sur chaque ligne d’un ensemble de
données, optionnellement exécute une fonction finale UDF sur
l’ensemble des résultats et retourne une valeur
◼ Syntaxe :
◼ CREATE [OR REPLACE] AGGREGATE [IF NOT EXISTS]
keyspace_name.aggregate_name ( cql_type )
SFUNC udf_name
STYPE cql_type
FINALFUNC udf_name
INITCOND [value]
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 73
Bases de données NoSQL -
Cassandra
◼Exploitation
• Fonction d’Agrégat définie par l’utilisateur (UDA)
✓ Création d’agrégat par l’utilisateur (UDA)
◼ Syntaxe :
◼ cql_type : spécifie le type retourné par la function d’agrégat
function d’état
(1,(6,9949),51);
◼ INSERT INTO test_moy (id, etat, val) values
(2,(79,10000),9999);
◼ select etat, etatMoy(etat,val) , val from
test_moy;
tuple<int,bigint> )
CALLED ON NULL INPUT RETURNS double
LANGUAGE java AS
$$ double r = 0;
if (state.getInt(0) == 0) return null;
r = state.getLong(1);
r/= state.getInt(0);
return Double.valueOf(r);$$;
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 81
Bases de données NoSQL -
Cassandra
◼Exploitation
• Fonction d’Agrégat définie par l’utilisateur (UDA)
✓ Création d’agrégat par l’utilisateur (UDA)
◼ Exemple : création de la fonction d’agrégat qui calcule la valeur
moyenne pour chaque colonne
◼ CREATE AGGREGATE moyenne(int)
SFUNC etatMoy
STYPE tuple<int,bigint>
FINALFUNC moyFinal
INITCOND (0,0);
◼ On teste la fonction d’agrégat en utilisant un select
◼ SELECT moyenne(temps_cycliste_sec) FROM equipe_moyenne
◼ Redémarrer cassandra
◼ Se connecter à cqlsh en utilisant le compte par défaut de super
✓ Remarques
◼ Les noms des datacenters respectent la casse
◼ Pour plusieurs datacenters, s’assurer que la classe de réplication est
« NetworkTopologyStrategy »
◼ Pour un seul datacenter la classe est « SimpleStrategy »
◼ password : …
ON resource_name
FROM role_name
ASSALE ADJE LOUIS Big Data & NoSQL Cassandra 93
Bases de données NoSQL -
Cassandra
◼Travaux pratiques N6
• Voir fiche de TP