SlideShare uma empresa Scribd logo
1 de 18
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

Query Compilation in Impala
Query Compilation in ImpalaQuery Compilation in Impala
Query Compilation in ImpalaCloudera, Inc.
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6Amal Abid
 
Sharding Methods for MongoDB
Sharding Methods for MongoDBSharding Methods for MongoDB
Sharding Methods for MongoDBMongoDB
 
Cassandra internals
Cassandra internalsCassandra internals
Cassandra internalsnarsiman
 
Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Jeremy Schneider
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into CassandraBrent Theisen
 
Understanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraUnderstanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraDataStax
 
C* Summit 2013: How Not to Use Cassandra by Axel Liljencrantz
C* Summit 2013: How Not to Use Cassandra by Axel LiljencrantzC* Summit 2013: How Not to Use Cassandra by Axel Liljencrantz
C* Summit 2013: How Not to Use Cassandra by Axel LiljencrantzDataStax Academy
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overviewPritamKathar
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseenissoz
 
Best Practices for Using Apache Spark on AWS
Best Practices for Using Apache Spark on AWSBest Practices for Using Apache Spark on AWS
Best Practices for Using Apache Spark on AWSAmazon Web Services
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3Amal Abid
 
How to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryHow to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryDan Sullivan, Ph.D.
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Alexis Seigneurin
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basicsnickmbailey
 
Cassandra overview
Cassandra overviewCassandra overview
Cassandra overviewSean Murphy
 

Mais procurados (20)

Query Compilation in Impala
Query Compilation in ImpalaQuery Compilation in Impala
Query Compilation in Impala
 
Cours Big Data Chap6
Cours Big Data Chap6Cours Big Data Chap6
Cours Big Data Chap6
 
Sharding Methods for MongoDB
Sharding Methods for MongoDBSharding Methods for MongoDB
Sharding Methods for MongoDB
 
Cassandra internals
Cassandra internalsCassandra internals
Cassandra internals
 
The Impala Cookbook
The Impala CookbookThe Impala Cookbook
The Impala Cookbook
 
Cassandra Database
Cassandra DatabaseCassandra Database
Cassandra Database
 
Wait! What’s going on inside my database?
Wait! What’s going on inside my database?Wait! What’s going on inside my database?
Wait! What’s going on inside my database?
 
Deep Dive into Cassandra
Deep Dive into CassandraDeep Dive into Cassandra
Deep Dive into Cassandra
 
Understanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache CassandraUnderstanding Data Partitioning and Replication in Apache Cassandra
Understanding Data Partitioning and Replication in Apache Cassandra
 
C* Summit 2013: How Not to Use Cassandra by Axel Liljencrantz
C* Summit 2013: How Not to Use Cassandra by Axel LiljencrantzC* Summit 2013: How Not to Use Cassandra by Axel Liljencrantz
C* Summit 2013: How Not to Use Cassandra by Axel Liljencrantz
 
Cassandra an overview
Cassandra an overviewCassandra an overview
Cassandra an overview
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
 
Best Practices for Using Apache Spark on AWS
Best Practices for Using Apache Spark on AWSBest Practices for Using Apache Spark on AWS
Best Practices for Using Apache Spark on AWS
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
How to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQueryHow to Design a Modern Data Warehouse in BigQuery
How to Design a Modern Data Warehouse in BigQuery
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
noSQL
noSQLnoSQL
noSQL
 
Introduction to Cassandra Basics
Introduction to Cassandra BasicsIntroduction to Cassandra Basics
Introduction to Cassandra Basics
 
Cassandra overview
Cassandra overviewCassandra overview
Cassandra overview
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 

Semelhante a Cassandra

Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosqlInes Slimene
 
Les bases de donnees nosql
Les bases de donnees nosqlLes bases de donnees nosql
Les bases de donnees nosqlzied kallel
 
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETICNoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETICLa FeWeb
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : CassandraLilia Sfaxi
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudVictor Coustenoble
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandraDuyhai Doan
 
Apache cassandra introduction
Apache cassandra introductionApache cassandra introduction
Apache cassandra introductionzied kallel
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Microsoft Technet France
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KJulien Anguenot
 
Database/ Bases de données
Database/ Bases de donnéesDatabase/ Bases de données
Database/ Bases de donnéeszied kallel
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBRomain Cambien
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysVictor Coustenoble
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTCHAKER ALLAOUI
 
cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdfhbadir
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010JUG Lausanne
 

Semelhante a Cassandra (20)

Introduction nosql
Introduction nosqlIntroduction nosql
Introduction nosql
 
Presentation cassandra
Presentation cassandraPresentation cassandra
Presentation cassandra
 
Les bases de donnees nosql
Les bases de donnees nosqlLes bases de donnees nosql
Les bases de donnees nosql
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETICNoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
NoSQL: Quoi, quand et pour qui par Orlando Cassano du CETIC
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
Cache
CacheCache
Cache
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
 
Apache cassandra introduction
Apache cassandra introductionApache cassandra introduction
Apache cassandra introduction
 
Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...Monter en charge, tester et surveiller avec une application Windows Azure : l...
Monter en charge, tester et surveiller avec une application Windows Azure : l...
 
Architecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.KArchitecture Big Data open source S.M.A.C.K
Architecture Big Data open source S.M.A.C.K
 
Database/ Bases de données
Database/ Bases de donnéesDatabase/ Bases de données
Database/ Bases de données
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
DataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft TechdaysDataStax et Cassandra dans Azure au Microsoft Techdays
DataStax et Cassandra dans Azure au Microsoft Techdays
 
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoTBenchmarking NoSQL DataBase dans le cadre d'un projet IoT
Benchmarking NoSQL DataBase dans le cadre d'un projet IoT
 
cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdf
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 

Mais de Ines Slimene (14)

Spark
SparkSpark
Spark
 
Redis
RedisRedis
Redis
 
Crud
CrudCrud
Crud
 
Agregation
AgregationAgregation
Agregation
 
Pig
PigPig
Pig
 
Neo4j
Neo4jNeo4j
Neo4j
 
Mapreduce
MapreduceMapreduce
Mapreduce
 
Introduction
IntroductionIntroduction
Introduction
 
Intro mongodb
Intro mongodbIntro mongodb
Intro mongodb
 
Hive
HiveHive
Hive
 
Hdfs
HdfsHdfs
Hdfs
 
Hbase
HbaseHbase
Hbase
 
Hadoop
HadoopHadoop
Hadoop
 
Indexation
IndexationIndexation
Indexation
 

Último

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne FontaineTxaruka
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...Faga1939
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprisesMajdaKtiri2
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 

Último (13)

Bolero. pptx . Film de A nnne Fontaine
Bolero. pptx . Film   de  A nnne FontaineBolero. pptx . Film   de  A nnne Fontaine
Bolero. pptx . Film de A nnne Fontaine
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 
gestion des conflits dans les entreprises
gestion des  conflits dans les entreprisesgestion des  conflits dans les entreprises
gestion des conflits dans les entreprises
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Evaluación Alumnos de Ecole Victor Hugo
Evaluación Alumnos de Ecole  Victor HugoEvaluación Alumnos de Ecole  Victor Hugo
Evaluación Alumnos de Ecole Victor Hugo
 

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