SlideShare une entreprise Scribd logo
2
Plus lue
3
Plus lue
13
Plus lue
Mme Ines Slimene
Ines_slimene@yahoo.fr
Présentation
Base de données :
◦ Distribuée
◦ À haute performance
◦ Extrêmement évolutive
◦ Tolérante aux fautes (pas de SPOF)
Développé par Facebook en 2007 pour la messagerie interne.
En 2008, le projet est cédé à la fondation Apache et devient "top-level-project" à partir de 2010.
Cassandra est alors enrichie et de nouvelles fonctionnalités y sont ajoutées.
Cassandra est utilisée par NetFlix ou Cisco WebEx.
Cassandra reprend les concepts de 2 bases de données existantes :
◦ BigTable, créé par Google, pour son modèle de données orienté colonne et son mécanisme de persistance sur
disque
◦ Dynamo, créé par Amazon, pour son architecture distribuée sans nœud maître.
https://inesslimene.wixsite.com/moncours CASSANDRA 2
Architecture
Système distribué, P2P Composés de plusieurs nœuds identiques
(Pas de notion de master)
Les données sont partitionnées par défaut à travers les différents
nœuds du cluster
Les données sont répliquées pour assurer une tolérance aux fautes
maximale
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
◦ Échange de données entre les nœuds chaque seconde
Cluster
https://inesslimene.wixsite.com/moncours CASSANDRA 3
Partitionnement
Les nœuds sont structurés selon une topologie en anneaux
Partitionnement facile des données à travers les différents nœuds participants du cluster
Chaque nœud est responsable d’une partie de la base de données
Les données sont insérées par l’utilisateur dans une famille de colonnes
Elles sont ensuite placées sur un nœud, selon sa clé de colonne
Stratégies de partitionnement
◦ Partitionnement aléatoire
◦ Par défaut, recommandé
◦ Données partitionnée le plus équitablement possible à travers les différents nœuds
◦ Partitionnement ordonné
◦ Sauvegarde les clés de familles de colonnes par ordre à travers les nœuds d’un cluster
◦ Peut provoquer des problèmes, surtout pour la répartition des charges (des nœuds avec des données plus volumineuses que d’autres)
Si la stratégie d’une base est modifiée, il faut recharger toutes les données
https://inesslimene.wixsite.com/moncours CASSANDRA 4
Réplication
Pour assurer la tolérance aux fautes et pas de SPOF, il est possible de créer une ou plusieurs
copie(s) de chaque colonne à travers les nœuds participants
L’utilisateur spécifie le facteur de réplication désiré à la création du keyspace (base de données)
Les données sont insérées par l’utilisateur dans une famille de colonnes
La colonne est répliquée dans les nœuds du cluster selon le facteur de réplication
Si un des nœuds est en panne lors d'une écriture, alors la donnée à écrire va être gardée en
mémoire dans une table spéciale du système, appelé hints.
Une fois que le nœud redevient accessible, alors toutes les données en mémoire vont être
écrites dans le nœud, et supprimées de la table hints.
La table hints est elle même distribuée entre tous les nœuds du cluster.
https://inesslimene.wixsite.com/moncours CASSANDRA 5
Stratégies de réplication
Stratégie Simple : SimpleStrategy
◦ Utilisé lorsqu’il n’y a qu’un data center.
◦ La colonne originelle est placée sur un nœud déterminé par le partitionneur
◦ Les répliques seront placées sur les nœuds suivants de l’anneau (sens des aiguilles d’une montre)
Stratégie par topologie du réseau : NetworkTopologyStrategy
◦ à utiliser lorsque le cluster est déployé sur plusieurs data-centers.
◦ Cette stratégie permet de spécifier le nombre de copies voulu dans chaque datacenter,
◦ elle permet également de placer les copies sur des racks distincts.
◦ Plus de contrôle sur l’emplacement des répliques de colonnes
https://inesslimene.wixsite.com/moncours CASSANDRA 6
Consistance
Écriture :
◦ Données écrites d’abord dans un commit log pour la durabilité
◦ Ensuite, écriture en mémoire dans une MemTable
◦ Une fois la MemTable pleine, les données sont sauvegardées dans le disque, dans une SSTable (Sorted Strings
Table)
Même si les transactions relationnelles (commit et rollback) ne sont pas supportées, les écritures sont
atomiques au niveau des colonnes (Soit toutes les colonnes sont modifiées, soit aucune ne l’est )
Cassandra est la base de données NOSQL la plus rapide en écriture
https://inesslimene.wixsite.com/moncours CASSANDRA 7
Consistance
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 opération, ce n’est pas une stratégie globale pour la base de données
Exemple : pour changer la stratégie de lecture en quorum
◦ SELECT * FROM users USING CONSISTENCY QUORUM WHERE state=‘TX’;
Consistance gérée à travers plusieurs datacenters
https://inesslimene.wixsite.com/moncours CASSANDRA 8
Consistance : Stratégies d’Écriture
Nombre de répliques qui doivent être écrites avec succès avant de retourner un acquittement
au client :
Any une écriture doit réussir sur n’importe quel nœud, au moins un. Offre la plus haute
disponibilité, mais la plus basse consistance
One (défaut) 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 réplication/2)+1)
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 rack que le nœud coordinateur
Each-Quorum une écriture doit réussir sur un certain pourcentage de nœuds répliques sur tous les
racks.
All une écriture doit réussir sur tous les nœuds répliques d’une colonne. Offre la plus
haute consistance, mais la plus basse disponibilité
https://inesslimene.wixsite.com/moncours CASSANDRA 9
Stratégies de Lecture : Read Repair
Il y a trois types de requêtes de lecture que le coordinateur peut envoyer aux réplicas : Direct
request, Digest request et Read repair request.
◦ Pour un direct read request, le coordinateur contacte un seul réplica.
◦ Ensuite, le coordinateur envoie un digest request au nombre de réplicas spécifié par le niveau de
cohérence et vérifie que les données sont mises à jour.
◦ Finalement, le coordinateur envoie un digest request à tous les réplicas restants.
◦ Si l’un des nœuds n’est pas à jour, un background read repair request sera envoyé.
Cassandra assure que les données fréquemment lues soient consistantes
À la lecture d’une donnée, le nœud coordinateur 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.
https://inesslimene.wixsite.com/moncours CASSANDRA 10
Gestion des Données et Objets
Deux interfaces pour gérer les objets/données
◦ Cassandra CLI (Command Line Interface)
◦ CQL (Cassandra Query Language)
CLI : Interface originelle conçue pour créer des objets, entrées et manipuler les données
CQL : Utilisée pour créer/manipuler des données en utilisant un langage proche de SQL
https://inesslimene.wixsite.com/moncours CASSANDRA 11
Vocabulaire
◦ Keyspace (équivalent de database )
◦ Column Family (équivalent de table )
◦ Dans la nouvelle version du langage CQL, appelée Table
◦ Schéma plus flexible et dynamique qu’une table
◦ Colonne (équivalent à enregistrement )
◦ Indexée par une clef
◦ D’autres champs peuvent être également indexés, mais à la demande
https://inesslimene.wixsite.com/moncours CASSANDRA 12
Modélisation : Relation one to many
Un instrument a plusieurs catégories
Les jointures n'étant pas possible, on dénormalise la relation.
https://inesslimene.wixsite.com/moncours CASSANDRA 13
Modélisation : Relation many to many
Un utilisateurs peux commenter plusieurs livre, et un livre peut être commenté par plusieurs
utilisateurs.
On est obligé de dénormaliser et de faire deux tables.
https://inesslimene.wixsite.com/moncours CASSANDRA 14
Modélisation : Exemple
Soit le diagramme de classe suivant :
Traduire ce diagramme en une base de données orientée colonne, sachant que l'objectif de
l'application est de :
◦ Lister les factures d’un client du plus récent au plus ancien. Seul un résumé de la facture devra être
affiché.
◦ Charger le détail d’une facture à partir de l’identifiant de facture trouvé grâce à la première requête.
https://inesslimene.wixsite.com/moncours CASSANDRA 15
Gestion des Données et Objets : CQL
Objets tels que les keyspaces, familles de colonnes et index sont créés, 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 opérations telles que GROUP BY(fonctions d’agrégation ), JOIN, ORDER BY (sauf
pour les clefs composées, et ordonnées seulement selon la deuxième clef primaire)…
◦ Pas de filtres sur les colonnes sans la création d’un index.
https://inesslimene.wixsite.com/moncours CASSANDRA 16
CQL : les types de données
https://inesslimene.wixsite.com/moncours CASSANDRA 17
CQL : les Collections
CQL3 supporte les collections pour stocker des structures de données complexes.
• Set {value,…}
• List [value,…]
• Map {key:value,…}
cqlsh> CREATE TABLE sample(id int PRIMARY KEY,
string_set set<text>,
string_list list<text>,
string_map map<text, text>);
cqlsh> INSERT INTO sample (id, string_set, string_list, string_map)
VALUES (1,
{'text1','text2','text1'},
['text1','text2','text1'],
{'key1':'value1’});
cqlsh> SELECT * FROM sample;
id | string_list | string_map | string_set
----+-----------------------------+--------------------+--------------------
1 | ['text1', 'text2', 'text1'] | {'key1': 'value1'} | {'text1', 'text2'}
(1 rows)
https://inesslimene.wixsite.com/moncours CASSANDRA 18

Contenu connexe

PDF
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
PDF
BigData_Chp2: Hadoop & Map-Reduce
Lilia Sfaxi
 
PPTX
Presentation cassandra
fatima zahra FANDI
 
PDF
BigData_Chp4: NOSQL
Lilia Sfaxi
 
PDF
BigData_Chp3: Data Processing
Lilia Sfaxi
 
PDF
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
PDF
Chp5 - Les outils CASE
Lilia Sfaxi
 
PDF
BigData_TP3 : Spark
Lilia Sfaxi
 
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
BigData_Chp2: Hadoop & Map-Reduce
Lilia Sfaxi
 
Presentation cassandra
fatima zahra FANDI
 
BigData_Chp4: NOSQL
Lilia Sfaxi
 
BigData_Chp3: Data Processing
Lilia Sfaxi
 
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
Chp5 - Les outils CASE
Lilia Sfaxi
 
BigData_TP3 : Spark
Lilia Sfaxi
 

Tendances (20)

PDF
Cours Big Data Chap6
Amal Abid
 
PDF
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Hatim CHAHDI
 
PDF
Introduction aux SGBD
Christophe Vaudry
 
PDF
BigData_TP4 : Cassandra
Lilia Sfaxi
 
PDF
exercices base de données - sql
Yassine Badri
 
PDF
Tp Sql Server Integration Services 2008
Abdelouahed Abdou
 
PDF
Event B ( B événementiel )
Halima Bouabdelli
 
PPTX
Qlik Replicateでのレプリケーション・タスクの監視と制御
QlikPresalesJapan
 
PDF
Modélisation de données pour MongoDB
MongoDB
 
PDF
tutoriel sur la mise en place d'une politique de sécurité informatique
Manuel Cédric EBODE MBALLA
 
PPT
Soutenance De Stage
guesta3231e
 
PDF
TP1 Big Data - MapReduce
Amal Abid
 
PPTX
Introduction à la big data v3
Mehdi TAZI
 
PPTX
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
PDF
BigData_TP2: Design Patterns dans Hadoop
Lilia Sfaxi
 
PPTX
Présentation de Microsoft Azure
Christophe Peugnet
 
PDF
Retour d'expérience Power BI
Isabelle Van Campenhoudt
 
PPT
Résumé du parcours académique
cristinaciochina
 
PDF
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
Borel NZOGANG
 
PDF
Oracle Database Applianceのご紹介(詳細)
オラクルエンジニア通信
 
Cours Big Data Chap6
Amal Abid
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Hatim CHAHDI
 
Introduction aux SGBD
Christophe Vaudry
 
BigData_TP4 : Cassandra
Lilia Sfaxi
 
exercices base de données - sql
Yassine Badri
 
Tp Sql Server Integration Services 2008
Abdelouahed Abdou
 
Event B ( B événementiel )
Halima Bouabdelli
 
Qlik Replicateでのレプリケーション・タスクの監視と制御
QlikPresalesJapan
 
Modélisation de données pour MongoDB
MongoDB
 
tutoriel sur la mise en place d'une politique de sécurité informatique
Manuel Cédric EBODE MBALLA
 
Soutenance De Stage
guesta3231e
 
TP1 Big Data - MapReduce
Amal Abid
 
Introduction à la big data v3
Mehdi TAZI
 
大規模データ活用向けストレージレイヤソフトのこれまでとこれから(NTTデータ テクノロジーカンファレンス 2019 講演資料、2019/09/05)
NTT DATA Technology & Innovation
 
BigData_TP2: Design Patterns dans Hadoop
Lilia Sfaxi
 
Présentation de Microsoft Azure
Christophe Peugnet
 
Retour d'expérience Power BI
Isabelle Van Campenhoudt
 
Résumé du parcours académique
cristinaciochina
 
ETUDE ET MISE EN PLACE D'UNE SOLUTION DE CLOUD COMPUTING PRIVÉ BASÉE SUR UN ...
Borel NZOGANG
 
Oracle Database Applianceのご紹介(詳細)
オラクルエンジニア通信
 
Publicité

Similaire à Cassandra (20)

PPTX
Webinar Degetel DataStax
Victor Coustenoble
 
PPTX
noSQL
Klee Group
 
PPTX
DataStax et Cassandra dans Azure au Microsoft Techdays
Victor Coustenoble
 
PDF
Le futur d'apache cassandra
Duyhai Doan
 
PDF
Becoming Friends with Cassandra
DataStax
 
PDF
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
CHAKER ALLAOUI
 
PDF
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
 
PPTX
Cassandra pour les développeurs java
Jérémy Sevellec
 
PDF
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
La FeWeb
 
PDF
Introduction nosql
Ines Slimene
 
ODP
Base NoSql et Python
yboussard
 
PDF
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
Cédrick Lunven
 
PPTX
Apache cassandra introduction
zied kallel
 
PPTX
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
MongoDB
 
PPTX
Cours 3 big data de donnes non sql for studets
blacktools2
 
PPTX
Xebicon2019 m icroservices
Cédrick Lunven
 
PPTX
result_b0XKKUdgN60FJduy1eRpdesfytres.pptx
thiombianoeulalie
 
PDF
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Jérôme Mainaud
 
PDF
Intro mongodb
Ines Slimene
 
PPTX
Base de données NoSQL
Oussama ARBI
 
Webinar Degetel DataStax
Victor Coustenoble
 
noSQL
Klee Group
 
DataStax et Cassandra dans Azure au Microsoft Techdays
Victor Coustenoble
 
Le futur d'apache cassandra
Duyhai Doan
 
Becoming Friends with Cassandra
DataStax
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
CHAKER ALLAOUI
 
No Sql - Olivier Mallassi - September 2010
JUG Lausanne
 
Cassandra pour les développeurs java
Jérémy Sevellec
 
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
La FeWeb
 
Introduction nosql
Ines Slimene
 
Base NoSql et Python
yboussard
 
BigData Paris 2022 - Innovations récentes et futures autour du NoSQL Apache ...
Cédrick Lunven
 
Apache cassandra introduction
zied kallel
 
Webinaire 1 de la série Retour aux fondamentaux : Introduction à NoSQL
MongoDB
 
Cours 3 big data de donnes non sql for studets
blacktools2
 
Xebicon2019 m icroservices
Cédrick Lunven
 
result_b0XKKUdgN60FJduy1eRpdesfytres.pptx
thiombianoeulalie
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Jérôme Mainaud
 
Intro mongodb
Ines Slimene
 
Base de données NoSQL
Oussama ARBI
 
Publicité

Plus de Ines Slimene (13)

PDF
Spark
Ines Slimene
 
PDF
Redis
Ines Slimene
 
PDF
Crud
Ines Slimene
 
PDF
Agregation
Ines Slimene
 
PDF
Pig
Ines Slimene
 
PDF
Neo4j
Ines Slimene
 
PDF
Mapreduce
Ines Slimene
 
PDF
Introduction
Ines Slimene
 
PDF
Hive
Ines Slimene
 
PDF
Hdfs
Ines Slimene
 
PDF
Hbase
Ines Slimene
 
PDF
Hadoop
Ines Slimene
 
PDF
Indexation
Ines Slimene
 
Agregation
Ines Slimene
 
Mapreduce
Ines Slimene
 
Introduction
Ines Slimene
 
Hadoop
Ines Slimene
 
Indexation
Ines Slimene
 

Dernier (20)

PDF
Sécurité des réseaux et data center .pdf
HadadMoussaMalan
 
PDF
Collaborative Projects An Interdisciplinary Study Andy Blunden
mztwduixs3969
 
PDF
Contemporary Cultural Theory Andrew Milner
oridivxanx5712
 
PDF
Model selection and model averaging 1st Edition Gerda Claeskens
mblowtxej8697
 
PPTX
Les-Principales METHODES-PEDAGOGIQUES.pptx
OUEDRAOGOISSIAKA1
 
PDF
Echinoderms Munchen Proceedings of the 11th International Echinoderm Conferen...
vkyfdcwdm7300
 
PDF
🎓 Le Secret des Profs Captivants - 💡 Enseigner, c’est parler - Introduction_v2
Julien Doureve
 
PPTX
Florence Delay.pptx Écrivaine française née à bayonne
Txaruka
 
PDF
Historical Dictionary of Lesotho Scott Rosenberg
cecxtgo350
 
PDF
Catalogue Formations et Conseil : INPED 2025 2026
INPEDMkt
 
PDF
SEANCE_1_securite informatique des reserau.pdf
HadadMoussaMalan
 
PPTX
4.1 EXEMPLES DE NICHES sur les réseaux.pptx.pptx
Hulda14
 
PPTX
Introduction à la gestion des projets et au suivi
PapeSanogo
 
PPTX
3.1 COMPRENDRE LES NICHES sur les réseaux.pptx.pptx
Hulda14
 
PPTX
Le tableau volé.pptx Film françaisde pascal Bonitzer
Txaruka
 
PPTX
L'évaluation-Pédagogique pour enseignants.pptx
OUEDRAOGOISSIAKA1
 
PPT
CARIOLOGIE - Copie.ppt pour les étudiants
jeanmariekayembe40
 
PPTX
VOCABULAIRE AU PRESCOLAIRE SENEGAL1.pptx
diopalidiop
 
PDF
The Scientists Price Warriors Book 1 L P Peace
zyvcdfdfj114
 
PPTX
Le tableau volé.pptx Film français
Txaruka
 
Sécurité des réseaux et data center .pdf
HadadMoussaMalan
 
Collaborative Projects An Interdisciplinary Study Andy Blunden
mztwduixs3969
 
Contemporary Cultural Theory Andrew Milner
oridivxanx5712
 
Model selection and model averaging 1st Edition Gerda Claeskens
mblowtxej8697
 
Les-Principales METHODES-PEDAGOGIQUES.pptx
OUEDRAOGOISSIAKA1
 
Echinoderms Munchen Proceedings of the 11th International Echinoderm Conferen...
vkyfdcwdm7300
 
🎓 Le Secret des Profs Captivants - 💡 Enseigner, c’est parler - Introduction_v2
Julien Doureve
 
Florence Delay.pptx Écrivaine française née à bayonne
Txaruka
 
Historical Dictionary of Lesotho Scott Rosenberg
cecxtgo350
 
Catalogue Formations et Conseil : INPED 2025 2026
INPEDMkt
 
SEANCE_1_securite informatique des reserau.pdf
HadadMoussaMalan
 
4.1 EXEMPLES DE NICHES sur les réseaux.pptx.pptx
Hulda14
 
Introduction à la gestion des projets et au suivi
PapeSanogo
 
3.1 COMPRENDRE LES NICHES sur les réseaux.pptx.pptx
Hulda14
 
Le tableau volé.pptx Film françaisde pascal Bonitzer
Txaruka
 
L'évaluation-Pédagogique pour enseignants.pptx
OUEDRAOGOISSIAKA1
 
CARIOLOGIE - Copie.ppt pour les étudiants
jeanmariekayembe40
 
VOCABULAIRE AU PRESCOLAIRE SENEGAL1.pptx
diopalidiop
 
The Scientists Price Warriors Book 1 L P Peace
zyvcdfdfj114
 
Le tableau volé.pptx Film français
Txaruka
 

Cassandra

  • 2. Présentation Base de données : ◦ Distribuée ◦ À haute performance ◦ Extrêmement évolutive ◦ Tolérante aux fautes (pas de SPOF) Développé par Facebook en 2007 pour la messagerie interne. En 2008, le projet est cédé à la fondation Apache et devient "top-level-project" à partir de 2010. Cassandra est alors enrichie et de nouvelles fonctionnalités y sont ajoutées. Cassandra est utilisée par NetFlix ou Cisco WebEx. Cassandra reprend les concepts de 2 bases de données existantes : ◦ BigTable, créé par Google, pour son modèle de données orienté colonne et son mécanisme de persistance sur disque ◦ Dynamo, créé par Amazon, pour son architecture distribuée sans nœud maître. https://inesslimene.wixsite.com/moncours CASSANDRA 2
  • 3. Architecture Système distribué, P2P Composés de plusieurs nœuds identiques (Pas de notion de master) Les données sont partitionnées par défaut à travers les différents nœuds du cluster Les données sont répliquées pour assurer une tolérance aux fautes maximale 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 ◦ Échange de données entre les nœuds chaque seconde Cluster https://inesslimene.wixsite.com/moncours CASSANDRA 3
  • 4. Partitionnement Les nœuds sont structurés selon une topologie en anneaux Partitionnement facile des données à travers les différents nœuds participants du cluster Chaque nœud est responsable d’une partie de la base de données Les données sont insérées par l’utilisateur dans une famille de colonnes Elles sont ensuite placées sur un nœud, selon sa clé de colonne Stratégies de partitionnement ◦ Partitionnement aléatoire ◦ Par défaut, recommandé ◦ Données partitionnée le plus équitablement possible à travers les différents nœuds ◦ Partitionnement ordonné ◦ Sauvegarde les clés de familles de colonnes par ordre à travers les nœuds d’un cluster ◦ Peut provoquer des problèmes, surtout pour la répartition des charges (des nœuds avec des données plus volumineuses que d’autres) Si la stratégie d’une base est modifiée, il faut recharger toutes les données https://inesslimene.wixsite.com/moncours CASSANDRA 4
  • 5. Réplication Pour assurer la tolérance aux fautes et pas de SPOF, il est possible de créer une ou plusieurs copie(s) de chaque colonne à travers les nœuds participants L’utilisateur spécifie le facteur de réplication désiré à la création du keyspace (base de données) Les données sont insérées par l’utilisateur dans une famille de colonnes La colonne est répliquée dans les nœuds du cluster selon le facteur de réplication Si un des nœuds est en panne lors d'une écriture, alors la donnée à écrire va être gardée en mémoire dans une table spéciale du système, appelé hints. Une fois que le nœud redevient accessible, alors toutes les données en mémoire vont être écrites dans le nœud, et supprimées de la table hints. La table hints est elle même distribuée entre tous les nœuds du cluster. https://inesslimene.wixsite.com/moncours CASSANDRA 5
  • 6. Stratégies de réplication Stratégie Simple : SimpleStrategy ◦ Utilisé lorsqu’il n’y a qu’un data center. ◦ La colonne originelle est placée sur un nœud déterminé par le partitionneur ◦ Les répliques seront placées sur les nœuds suivants de l’anneau (sens des aiguilles d’une montre) Stratégie par topologie du réseau : NetworkTopologyStrategy ◦ à utiliser lorsque le cluster est déployé sur plusieurs data-centers. ◦ Cette stratégie permet de spécifier le nombre de copies voulu dans chaque datacenter, ◦ elle permet également de placer les copies sur des racks distincts. ◦ Plus de contrôle sur l’emplacement des répliques de colonnes https://inesslimene.wixsite.com/moncours CASSANDRA 6
  • 7. Consistance Écriture : ◦ Données écrites d’abord dans un commit log pour la durabilité ◦ Ensuite, écriture en mémoire dans une MemTable ◦ Une fois la MemTable pleine, les données sont sauvegardées dans le disque, dans une SSTable (Sorted Strings Table) Même si les transactions relationnelles (commit et rollback) ne sont pas supportées, les écritures sont atomiques au niveau des colonnes (Soit toutes les colonnes sont modifiées, soit aucune ne l’est ) Cassandra est la base de données NOSQL la plus rapide en écriture https://inesslimene.wixsite.com/moncours CASSANDRA 7
  • 8. Consistance 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 opération, ce n’est pas une stratégie globale pour la base de données Exemple : pour changer la stratégie de lecture en quorum ◦ SELECT * FROM users USING CONSISTENCY QUORUM WHERE state=‘TX’; Consistance gérée à travers plusieurs datacenters https://inesslimene.wixsite.com/moncours CASSANDRA 8
  • 9. Consistance : Stratégies d’Écriture Nombre de répliques qui doivent être écrites avec succès avant de retourner un acquittement au client : Any une écriture doit réussir sur n’importe quel nœud, au moins un. Offre la plus haute disponibilité, mais la plus basse consistance One (défaut) 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 réplication/2)+1) 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 rack que le nœud coordinateur Each-Quorum une écriture doit réussir sur un certain pourcentage de nœuds répliques sur tous les racks. All une écriture doit réussir sur tous les nœuds répliques d’une colonne. Offre la plus haute consistance, mais la plus basse disponibilité https://inesslimene.wixsite.com/moncours CASSANDRA 9
  • 10. Stratégies de Lecture : Read Repair Il y a trois types de requêtes de lecture que le coordinateur peut envoyer aux réplicas : Direct request, Digest request et Read repair request. ◦ Pour un direct read request, le coordinateur contacte un seul réplica. ◦ Ensuite, le coordinateur envoie un digest request au nombre de réplicas spécifié par le niveau de cohérence et vérifie que les données sont mises à jour. ◦ Finalement, le coordinateur envoie un digest request à tous les réplicas restants. ◦ Si l’un des nœuds n’est pas à jour, un background read repair request sera envoyé. Cassandra assure que les données fréquemment lues soient consistantes À la lecture d’une donnée, le nœud coordinateur 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. https://inesslimene.wixsite.com/moncours CASSANDRA 10
  • 11. Gestion des Données et Objets Deux interfaces pour gérer les objets/données ◦ Cassandra CLI (Command Line Interface) ◦ CQL (Cassandra Query Language) CLI : Interface originelle conçue pour créer des objets, entrées et manipuler les données CQL : Utilisée pour créer/manipuler des données en utilisant un langage proche de SQL https://inesslimene.wixsite.com/moncours CASSANDRA 11
  • 12. Vocabulaire ◦ Keyspace (équivalent de database ) ◦ Column Family (équivalent de table ) ◦ Dans la nouvelle version du langage CQL, appelée Table ◦ Schéma plus flexible et dynamique qu’une table ◦ Colonne (équivalent à enregistrement ) ◦ Indexée par une clef ◦ D’autres champs peuvent être également indexés, mais à la demande https://inesslimene.wixsite.com/moncours CASSANDRA 12
  • 13. Modélisation : Relation one to many Un instrument a plusieurs catégories Les jointures n'étant pas possible, on dénormalise la relation. https://inesslimene.wixsite.com/moncours CASSANDRA 13
  • 14. Modélisation : Relation many to many Un utilisateurs peux commenter plusieurs livre, et un livre peut être commenté par plusieurs utilisateurs. On est obligé de dénormaliser et de faire deux tables. https://inesslimene.wixsite.com/moncours CASSANDRA 14
  • 15. Modélisation : Exemple Soit le diagramme de classe suivant : Traduire ce diagramme en une base de données orientée colonne, sachant que l'objectif de l'application est de : ◦ Lister les factures d’un client du plus récent au plus ancien. Seul un résumé de la facture devra être affiché. ◦ Charger le détail d’une facture à partir de l’identifiant de facture trouvé grâce à la première requête. https://inesslimene.wixsite.com/moncours CASSANDRA 15
  • 16. Gestion des Données et Objets : CQL Objets tels que les keyspaces, familles de colonnes et index sont créés, 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 opérations telles que GROUP BY(fonctions d’agrégation ), JOIN, ORDER BY (sauf pour les clefs composées, et ordonnées seulement selon la deuxième clef primaire)… ◦ Pas de filtres sur les colonnes sans la création d’un index. https://inesslimene.wixsite.com/moncours CASSANDRA 16
  • 17. CQL : les types de données https://inesslimene.wixsite.com/moncours CASSANDRA 17
  • 18. CQL : les Collections CQL3 supporte les collections pour stocker des structures de données complexes. • Set {value,…} • List [value,…] • Map {key:value,…} cqlsh> CREATE TABLE sample(id int PRIMARY KEY, string_set set<text>, string_list list<text>, string_map map<text, text>); cqlsh> INSERT INTO sample (id, string_set, string_list, string_map) VALUES (1, {'text1','text2','text1'}, ['text1','text2','text1'], {'key1':'value1’}); cqlsh> SELECT * FROM sample; id | string_list | string_map | string_set ----+-----------------------------+--------------------+-------------------- 1 | ['text1', 'text2', 'text1'] | {'key1': 'value1'} | {'text1', 'text2'} (1 rows) https://inesslimene.wixsite.com/moncours CASSANDRA 18