Vous êtes sur la page 1sur 15

COURS

Préparation à la certification :
Big Data
Chapitre 8 :
Bases données NoSQL _Cas pratiques:
Cassandra
Qu'est ce que Cassandra ?
 SGBD NoSQL orienté colonnes ;
 Initié par Facebook ;
 Écrit en Java ;
 Distribué : P2P ;
 Haute disponibilité : no SPOF ;
 Massivement parallèle ;
 Scalabilité linéaire ;
 Écrit plus rapidement qu’il ne lit.
⇒ A` utiliser dans le cas ou on doit surtout stocker (écrire) des données plus que les lire. Il
peut aussi être utile si l’architecture complète doit être en Java.
 Composés de plusieurs nœuds identiques :
I Pas de notion de NameNode ou nœud maître.
 Les données sont partitionnées par défaut à travers les différents nœuds du cluster.
I L’utilisateur contrôle le nombre de répliques qu’il désire avoir pour ses données.
 Lecture et écriture à partir de n’importe quel nœud, indépendamment de l’emplacement
des données ;
 Utilisation du protocole Gossip pour la communication entre les différents nœuds du cluster.
I Échange de données entre les nœuds chaque seconde.
Comparatif des NoSQL : http ://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis
http ://www-igm.univ-mlv.fr/ dr/XPOSE2010/Cassandra/nosql.html 2
Partitionnement dans Cassandra

 Le partitionnement permet de
répartir les lignes sur les nœuds
du cluster (à partir de la clé) ;
 Partitionnement facile des don-
nées à travers les différents
nœuds participants du cluster ;
 Chaque nœud est responsable
d’une partie de la base de don-
nées ;
 Les donnéessont inséréespar
l’utilisateur dans une famille de
colonnes ;
 Elles sont ensuite placées sur un
nœud, selon sa clé de colonne.

3
Partitionnement dans Cassandra

 Partitionnement aléatoire (RandomPartitioner) :


I Par défaut, recommandé ;
I Données partitionnées le plus équitablement possible à travers les différents nœuds ;
I Un token est défini au niveau de chaque nœud (un BigInteger entre 0 et 2 ∗ ∗ 127) ;
I Chaque nœud est responsable des clés qusiont dans l’intervalle qu’il gère (intervalle
entre le token du nœud précédent et le token du nœud) ;
I Un hash (M5 ou Murmur3) de la clé est effectué et définit un token. La ligne est
envoyée sur le nœud quigère l’intervalle concerné.
 Partitionnement ordonné (ByteOrderedPartitioner) :
I Sauvegarde les clés de familles de colonnes par ordre à travers les nœuds d’un cluster ;
I Peut provoquer des problèmes, surtout pour la répartition des charges (des nœuds
avec des données plus volumineuses que d’autres).

 Stratégie spécifiée dans un fichier de configuration cassandra.yam;


 Si la stratégie d’une base est modifiée, il faut recharger toutes les données.

4
Replication dans Cassandra

 La réplication est gérée au niveau d’un


keyspace par le replication factor ;
 Le replication factor définit le nombre de
copies globales sur le cluster d’une ligne ;
 La façon dont sont placés les replicas dé-
pend de la stratégie choisie.

 Stratégie Simple (SimpleStrategy) :


I La colonne originelle est placée sur un nœud determiné par le partitionneur (partitio-
ner) ;
I La réplique est placée sur le nœud suivant de l’anneau (clockwise) ;
I Pas de considération pour l’emplacement dans un Data-Center ou dans une rack
(baie) - approprié pour les déploiement sur un seul Data-Center).
 Stratégie par topologie du réseau (NetworkTopologyStrategy) :
I Les réplicas peuvent être placés dans un autre rack, un autre Data-Center ;
I Il faut définir la topology du cluster : Snitch.
5
Replication dans Cassandra

 Utilisation de Snitch :
I Définition de la manière dont les nœuds sont
groupés dans un réseau ;
I Répartition des nœuds entre baies et Data-
Centers.

 Plusieurs types de Snitch :


- Simple Snitch : utilise la stratégie simple ;
- Rack-Inferring Snitch : détermine la topologie du réseau en analysant les adresses
IP : Second octet de l’adresse IP : Data-Center, Troisième octet de l’adresse IP :
Baie ;
- Property File Snitch : se base sur une description de l’utilisateur pour determiner
l’emplacement des nœuds (cassandra-topology.properties) ;
- EC2 (Elastic Compute Cloud) Snitch : pour déploiement dans Amazon EC2. Utilise
l’API AWS (Amazon Web Services) pour déterminer la topologie.
 Défini dans le fichier de configuration cassandra.yaml.

6
Consistance dans Cassandra
 P2P ⇒ on contacte n’importe quel nœud ;
 Nœud contacté = coordinateur ;
 Le coordinateur contacte les répliques ;
 Le client peut se connecter à n’importe
quel nœud, dans n’importe quel Data-
Center, et lire/écrire les données qu’il veut.

 Le consistency level est lié au replication factor. Il définit le nombre de nœuds devant se
synchroniser avant de répondre à une opération ;
 Ecriture :
I Données écrites d’abord dans un commit log pour la durabilité ;
I Ensuite, écriture en mémoire dans une MemTable ;
I Une fois la MemTable pleine, les données sont sauvegardées dans le disque, dans une
SSTable (Sorted Strings Table) ;
I Même si les transactions relationnelles (commits et rollbacks) ne sont pas supportées,
les écritures sont atomiques au niveau des colonnes.

7
Consistance dans Cassandra

Niveau de consistance : Combien de répliques doivent être écrites avec


succès avant de retourner acquittement au client.
 Consistance : à quel point est-ce qu’une donnée est à jour et synchronisée
sur toutes ses répliques ;
 Cassandra est la BD NOSQL la plus rapide en écriture ;
 Extension du concept de consistance éventuelle à une consistance ajustable ;
 Choix possible entre une consistance forte ou éventuelle selon les besoins ;
 Ce choix est fait par operation, ce n’est pas une stratégie globale pour la base
de données (ex, pour changer la stratégie de lecture en quorum) ;
 Consistance gérée à travers plusieurs data centers.

8
Consistance dans Cassandra
Stratégies d’écriture

Niveau de consistance : Combien de répliques doivent être écrites avec


succès avant de retourner acquittement au client.
 Any : une écriture doit réussir sur n’im-
porte quel nœud, au moins un.
- Offre la plus haute disponibilité,
mais la plus basse consistance.
 One (défaut dans CQL) : une écriture doit
réussir sur le commit log et la memtable
d’au moins une réplique.
 Quorum : une écriture doit réussir sur un certain pourcentage de répliques (pourcentage
=(facteur de replication/2)+1) ;
 Any : une écriture doit réussir sur n’importe quel nœud, au moins un.
- Meilleure alternative en terme de consistance et de disponibilité.
 Local-Quorum : une écriture doit réussir sur un certain pourcentage de nœuds répliques
sur le même Data-Center que le nœud coordinateur ;
 Each-Quorum : une écriture doit réussir sur un certain pourcentage de nœuds répliques
sur tous les Data-Centers ;
- Offre la plus haute consistance, mais la plus basse disponibilité.
9
Consistance dans Cassandra
Stratégies d’écriture

 Cassandra utilise les Hinted Handoffs ;


 Elle tente de modifier une colonne sur toutes les répliques ;
 Si certains des nœuds répliques ne sont pas disponibles, un indice
(hint) est sauvegardé sur l’un des nœuds répliques en marche, pour
mettre à jour tous les nœuds répliqués en panne une fois disponibles ;
 Si aucun nœud réplique n’est disponible, l’utilisation de la stratégie
ANY permettra au nœud coordinateur de stocker cet indice. Mais la
donnée ne sera lisible que quand l’un des nœuds est disponible de
nouveau.

10
Consistance dans Cassandra
Stratégies de lecture

 Niveau de consistance : combien de répliques doivent répondre avant de retourner le


résultat à l’application cliente ;
 Cassandra vérifie le nombre de répliques pour la donnée la plus récente pour satisfaire une
demande de lecture (basée sur le temps).
 One (défaut dans CQL) : obtention d’une réponse à partir de la réplique la plus proche
selon le Snitch.
- Offre la plus faible consistance, mais la plus haute disponibilité.
 Quorum : obtention du résultat le plus récent à partir d’un certain pourcentage de nœuds
répliques (pourcentage = (facteur de réplication/2)+1).
- Meilleure alternative en terme de consistance et de disponibilité.
 Local-Quorum : obtention du résultat le plus récent à partir d’un certain pourcentage de
nœuds répliques sur le même datacenter que le nœud coordinateur.
- Évite la latence due à la communication inter-Data-Centers.
 Each-Quorum : obtention du résultat le plus récent à partir d’un certain pourcentage de
nœuds répliques sur tous les Data-Centers.
 All : obtention du résultat le plus récent à partir de tous les nœuds répliques.
- Offre la plus haute consistance, mais la plus basse disponibilité.
11
Consistance dans Cassandra
Stratégies de lecture

 Pour réparer de l’inconsistance quand elle se produit (perte d’un nœud,...) :


- Hintend handoff : Quand un nœud n’est pas disponible, les insertions
sont envoyées à un autre nœud qui lui renverra quand le nœud redevien-
dra disponible.
- Read repair : En lecture, si les valeurs différents, les nœuds désynchro-
nisés sont réparés en insérant les nouvelles valeurs (basé sur le Times-
tamp).
- Cassandra assure que les données fréquem-
ment lues soient consistantes ;
- A` la lecture d’une donnée, le nœud coor-
dinateur compare toutes ses répliques en
arrière plan ;
- Si ces données ne sont pas consistantes,
envoie une demande d’écriture aux nœuds
réplicas pour mettre à jour leur donnée et
afficher la donnée la plus récente ;
- Read Repair peut être configuré par famille
de colonnes et est activé par défaut. 12
Gestion de données et des objets dans Cassandra
Cas pratiques - Client / API

 Cassandra-cli : Outil ligne de commande fourni par Cassandra permettant d’interroger


l’espace de stockage. Toutes les opérations de bases sont prévues :
Requêtage (get, list) ;
Création, Modification, Suppression d’objets de lignes, colonnes et Column-Family ;
Administration : Keyspace, Niveau de consistance, etc.
 CQL (Cassandra Query Language) : Est apparu à partir de la V0.8 pour harmoniser la
manière d’attaquer Cassandra avec tous les langages. Basé sur la syntaxe SQL. Hector en
est l’implementation Java :
- Utilisée pour créer/manipuler des données en utilisant un langage proche de SQL ;
- Objets tels que les keyspaces, familles de colonnes et index sont crées, modifiés et
supprimés avec les requêtes usuelles : CREATE, ALTER et DROP ;
- Données insérées, modifiées et supprimées avec INSERT, UPDATE et DELETE ;
Données lues avec SELECT ;
- Mais : Ne supporte pas des operations telles que GROUP BY, ORDER BY (sauf
pour les clés composées, et ordonnées seulement selon la deuxième clé primaire) ;
- Utiliser la clause USING CONSISTENCY pour déterminer le type de consistance forte
pour chaque opération de lecture et l’écriture (Any, One, Quorum,...).
 Object Mapping : Hector (Java), Pycassa (Python), PhpCassa (PHP) ;
 OPSCenter : Outil de management et monitoring.
13 /
DataStax - OPSCenter

14
Liens utiles
 Sites
• Documentation : http ://docs.datastax.com/en/archived/cassandra/1.0/docs/index.html
• I Planet Cassandra : www.planetcassandra.org
• I NOSQL : 5 minutes pour comprendre : http ://blog.neoxia.com/nosql-5-minutes-pour-comprendre/ NEOXIA
• I NOSQL Europe : Bases de données orientées colonnes et Cassandra :
• http ://blog.xebia.fr/2010/05/04/nosql-europe-bases-de-donnees-orientees-colonnes-et-cassandra/ XEBIA
• I Une base NOSQL, Cassandra :
• http ://www-igm.univ-mlv.fr/ ∼ dr/XPOSE2010/Cassandra/
• I Why NOSQL - Part 1 - CAP Theorem :
• http ://bigdatanerd.wordpress.com/2011/12/08/why-nosql-part-1-cap-theorem/ DATANERD
• I DataStax Cassandra Tutorials :
• http ://www.datastax.com/resources/tutorials/cassandra-overview DataStax

 Présentations :
Harri Kauhanen, NOSQL Databases, Futurice, Septembre 2010.
Lilia Sfaxi, Cours Big data, INSAT-Tunisie 2014

Livres Blanc
Top 5 Considerations when evaluating NOSQL Databases, MongoDB White Paper, Juin 2013
. Bernard ESPINASSE, Cours Introduction aux systèmes NoSQL , Ecole Polytechnique Universitaire de Marseille, Avril 2013

15

Vous aimerez peut-être aussi