Cassandra Presentation

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 42

LP Big Data

Réalisé par
● Med-Amine LAHMAM
● Bahae Eddine HALIM
● Chihab Eddine Tai
● Soufiane Nougah
● Ayoub Lakhdar

Encadré par Un guide d’utilisation du système de base de


Mr KARRA Rachid données distribuée très puissant Apache Cassandra
Plan
1-Introduction

2-Acid-vs-cap

3-Installation

4-Principes-architecture

5-cqlsh intro

6- Petite manipulation de cqlsh

7- CQL, premières commandes

8- Data Modeling

9- Cluster

10- Manipulation
1- Introduction
Apache Cassandra est un système de gestion de base de données de type
NoSQL conçu pour gérer des quantités massives de données sur un grand
nombre de serveurs, assurant une haute disponibilité

Initialement développée par Facebook, l'application a été mise à disposition en


logiciel libre en 2008, et rapidement adopté par des entreprises gérant
d'importants volumes de données, telles Twitter, Netflix, ou Spotify.
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.
Quand utiliser Cassandra ?

Il est pertinent d'utiliser Cassandra pour un système :


●Décentralisé
●Tolérant aux pannes
●Hautement Disponible

Exemples d'entreprises utilisant Cassandra:

●Apple, avec plus de 75 000 noeuds, et 10 PB de données


●Netflix, avec 2 500 noeuds, 420 TB de données, et 1000 milliards de requêtes
par jour.
●Ebay, 100 noeuds, 250 TB de données.
2- ACID vs CAP
ACID
ACID est un acronyme désignant les termes : Atomicité,
Cohérence, Isolation et Durabilité.

● Atomicité : tout changement effectué doit être accompli jusqu’au bout.


● Cohérence : garantir qu’une transaction n’enfreigne les contraintes
d’intégrité des données fixées pour une database
● Isolation : les transactions surviennent dans un ordre successif, plutôt que
d’être effectuées en une fois.
● Durabilité : assurer que tout changement apporté à la base de
données soit permanent, même en cas de panne du système.
Le théorème CAP
Ce théorème établit 3 paramètres sur lesquels on
peut jouer pour configurer une base de données
distribuée :

● La cohérence
● La disponibilité
● La tolérance aux pannes et aux coupures
réseaux
Le théorème CAP
Le théorème postule que pour toute base de données distribuée, on ne peut choisir
que 2 de ces 3 paramètres, jamais les 3 en même temps. En théorie, on peut
donc choisir les couples suivants :
● Cohérence disponibilité (CA) donc non résistante aux pannes ( P)
● Cohérence et tolérance aux pannes (CP) donc non disponible à 100% (A)
● Disponibilité et tolérance aux pannes (AP) donc non cohérente à 100% (C)
3- Installation via
Docker
4- Principes et
Architecture

On vas voir dans cette partie le principe d'écriture de lecture


et quelque définitions importante .
Cassandra : Architecture

Principe d’écriture Principe de lecture

Requête >> Commitlog (disk) Requête >> memtables / SSTable

>> memtables (mem)

>> flush async sur SSTable

>> compactions ponctuelles


Définitions
● Datacenter : groupe de réplication, découpage physique (dc, rack...) ou logique
● Node/Peer : serveur membre d'un cluster (single ou non)
● Keyspaces : équivalent d'une database, regroupement de 1/plusieurs tables
● Tables : table composée de lignes et colonnes ou on stocke les données.
● Users : comptes avec des accès, login/password
● Commitlog : écriture sur disque des requêtes , recovery
● Memtables : écriture en mémoire des datas (table de mémoire alimenté par la
JVM)
● SSTables : datafiles où les données sont écrites sur disque
5-Introduction au
Cqlsh

Cassandra query language shell


Des commandes importantes à connaître

nodetool status / nodetool info : nous donne des informations et l'état de notre
cluster .

cassandra -v / cqlsh -e "SHOW version;" / nodetool version : Afficher la version .

Quelques options : * -h : help * -C : mode couleur * -u : utilisateur * -p : password *


-k : keyspace * -f : commandes via un fichier cql * -e : cql via la ligne de commande
bash * --debug : mode debug
6-Une petite
manipulation en
cqlsh
CREATE KEYSPACE MonEspaceDeCle

WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

USE MonEspaceDeCle;

CREATE COLUMNFAMILY MesColonnes (id text, Nom text, Prenom text, PRIMARY KEY(id));

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('1', ‘tai’, 'Chihab eddine');

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('2', 'LAHMAM', 'Amine');

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('3', 'Halim', 'Bahae');

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('4', 'Lekhdar', 'Ayoub');

INSERT INTO MesColonnes (id, Nom, Prenom) VALUES ('5', 'Nougah', 'Soufiane');

SELECT * FROM MesColonnes;


7- CQL, premières
commandes
CQL: Cassandra Query Language (CQL) est un langage de requête pour la base de
données Apache Cassandra. C’est un Langage de requête

Keyspaces (databases/schema) : conteneur de tables / objets

● Replication factor
● strategie de réplication / SimpleStrategy (NetworkTopologyStrategy)

Tables : mise en forme des données lignes/colonnes - create/drop/alter/insert

Colonnes (champs) : caractéristiques d'une lignes avec un type (int, text...)


Architecture générale d'un cluster
8- Data Modeling
Avantages / Inconvénients
Tolérance aux pannes (grâce
01 aux mécanismes de réplication 01 Pas d'interface graphique
de données)
Décentralisé
02 02 Difficultés à l'utilisation

Élastique
03 03 Limitation de la taille des données

Haute disponibilité
04

05 Open source
Data modeling = modélisation de données
Différence importante entre sql et nosql → modélisation/conception différente

DUPLICATION/DENORMALIZATION ???

● normalisation >> dénormalisation


○ classement par objets >> requêtes/interrogations
○ logique métier (users/factures...) >> logique applicative
○ liens forts entre eux >> pas de lien (pas de jointure)
○ voir stocker des éléments calculés

● unicité >> duplication


○ tables de références / clefs étrangère/externes >> pas de lien
○ plusieurs tables peuvent disposer de la même info réparties différemment
POURQUOI ?

● hardware >> coûts sont faibles (iops / volumes / performances /


carte réseau... )

● simplification de la conception
● simplification de la maintenance
● moins de relations = plus de performances
● microservices >> le relationnel se fait au niveau des applicatifs

EVOLUTION DES ENJEUX


● sql => moins d'écritures / pas de duplication
● cassandra => optimisation de la distribution / partitionnement large
pour faciliter la lecture
● anticipation des requêtes (filtre = where, tri = group/sort)
SQL: Relational model database
sql : tables users + factures + commandes >> requête factures par users / commandes par users

Cassandra model database


cassandra : TABLE des factures par utilisateurs / TABLE des commandes par users
9- Cluster
Cluster

Quand on parle de Cassandra,


on parle souvent de cluster.
Un cluster est un regroupement de
plusieurs nœuds (serveur physique)
qui communiquent entre eux pour la
gestion de données.
Architecture générale d'un cluster
● Un nœud (node) : il s'agit de la plus petite entité du cluster. C'est un
serveur physique qui contiendra les différentes données de la base.
● Un centre de données (Data-Center) : c'est un ensemble de nœuds qui
sont dans un environnement géographique proche. Logiquement parlant,
les nœuds peuvent communiquer plus facilement car ils sont censés être
sur un réseau local.
● Un cluster : le cluster est un ensemble de data-centers où seront copiées
les différentes données du système.

En général, on ne définit qu'un seul keyspace par cluster.

(le keyspace est l'équivalent du schéma en base de données relationnelle)


Architecture générale d'un
cluster
Un cluster composé de plusieurs
data-centers
Mise en place du cluster / Changement de
nom du cluster
● nosql distribué = cluster facile à mettre en place (cf elasticsearch
également)
● attention : installation par défaut > listen sur 127.0.0.1/localhost
● peu recommandé de listen sur 0.0.0.0
● modification du seed provider
● penser aux ouvertures de ports si nécessaires : * 9042 : client cqlsh *
9160 : protocol Thrift, ancien mode de communication * 7000 :
communication entre les noeuds * 7001 : com internode TLS * 7199 :
monitoring JMX

● configuration du cluster/nodes

/etc/cassandra/cassandra.yml
changement de nom de cluster après premier démarrage

● option 1 : via la conf de fichiers

sudo service cassandra stop


sudo rm -rf /var/lib/cassandra/data/system/*
sudo vim /etc/cassandra/cassandra.yaml
sudo service cassandra start
nodetool status

● option 2 ! via le cqlsh

cqlsh> UPDATE system.local SET cluster_name = 'test' where key='local';


nodetool flush (system)
vim /etc/cassandra/cassandra.yml
MANIPULATION
Création d'un keyspace

DESCRIBE KEYSPACES;

CREATE KEYSPACE myks


WITH REPLICATION = { 'class' :
'SimpleStrategy',
'replication_factor' : 2 };

DESCRIBE KEYSPACE myks ;


Insertion de données
DESCRIBE TABLES;

INSERT INTO mytb (id, name)


VALUES (1, 'xavier');

INSERT INTO mytb (id, name)


VALUES (2, 'pierre');

Requête
SELECT * FROM mytb;
Se positionner dans un keyspace
use <keyspace_name> ;

use myks ;

Supprimer un keyspace
DROP KEYSPACE <keyspace_name> ;

DROP KEYSPACE myks;


Création d'une column family avec une clé primaire naturelle

CREATE TABLE livre (


isbn varchar,
titre varchar,
PRIMARY KEY(isbn));

Création d'une column family avec une clé primaire artificielle

CREATE TABLE livre (


id uuid,
isbn varchar,
titre varchar,
PRIMARY KEY(id));
Manipulation sur les colonnes

Ajouter une colonne


ALTER TABLE livre ADD auteur VARCHAR ;

Supprimer une colonne


ALTER TABLE livre DROP auteur VARCHAR ;
Manipulation sur les lignes
Insérer une ligne
INSERT INTO livre (isbn, titre) VALUES ('12548-5698', 'Le joueur d'échec');

Supprimer une ligne


DELETE FROM livre WHERE isbn = '1258-5874';

Modifier une ligne


UPDATE livre SET titre = 'Le rouge et le noir' WHERE isbn = '1258-5874';

Effectuer une requete


SELECT <key_column> FROM <table>;
Création d'une table

USE myks;
CREATE TABLE mytb (id int
PRIMARY KEY, name text);
DESCRIBE TABLES
Merci pour votre attention

Vous aimerez peut-être aussi

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy