SlideShare une entreprise Scribd logo
Introduction à Apache Cassandra
Jérôme Mainaud
Ippon Technologies © 2017
Architecte logiciel chez Ippon Technologies
Manager Technique
@jxerome
jmainaud@ippon.fr
Jérôme Mainaud
Ippon Technologies © 2017
Ippon Technologies
Ippon Technologies © 2017
Acteur de l'innovation
Cassandra
Ippon Technologies © 2017
Cassandra
● Base de données
● No SQL
● Modèle Table partitionnée
➔ Autrefois : "Famille de colonnes"
● Projet Apache
Ippon Technologies © 2017
Inspiration
● Amazon Dynamo
➔ Architecture distribuée
➔ Anneau distribué
➔ Cohérence à terme (Eventual consistency)
● Google BigTable
➔ Modèle de stockage
➔ Famille de colonnes
Ippon Technologies © 2017
Ambitions
● Scalabilité linéaire
➔ Plus de perf ? → Ajouter un nœud
➔ Plus de volume ? → Ajouter un nœud
● Haute disponibilité
➔ Pas de SPOF
➔ Tous les nœuds sont équivalents
Ippon Technologies © 2017
Cluster
● Décentralisé (pair-à-pair)
➔ Pas de maître, ni d'esclave
● Multi-Datacenter
➔ Répartition géographique
➔ Ségrégation opérationnel / analytique
● Gossip Protocol
➔ Une fois par second
➔ échange des infos cluster
➔ avec trois nœuds tirés au sort
Quand utiliser Cassandra ?
Ippon Technologies © 2017
Ippon Technologies © 2017
Zero Downtime
Très Haute Disponibilité
Ippon Technologies © 2017
Ippon Technologies © 2017
● Transactions ACID
● Modèle de données inadapté
Quand ne pas utiliser Cassandra ?
Modèle de données
Ippon Technologies © 2017
Tables partitionnées
Ippon Technologies © 2017
Dimensionnement
● Dimension d’une table
➔ Aucune limite du nombre de partition dans une table
● Dimension d’une partition
➔ La partition doit tenir un seul nœud
➔ Max 2 milliards de cellules par partition (en pratique < 100 000)
➔ Max 2 Go par cellule (en pratique < 100 Mo par partition)
● A partir de la version 3.6
➔ Optimisation du fonctionnement des grandes partitions
➔ Limites à revoir à la hausse.
➔ Mais il faut toujours borner les partitions
Ippon Technologies © 2017
Clé primaire
Primary key = partition key + clustering columns
➔ Partition key → partition (obligatoire pour une requête)
➔ Clustering key → regroupe les colonnes en lignes (conservées classées)
PRIMARY KEY (invoice_id, item_id)
PRIMARY KEY ((customer_id, year), date, event_id)
Ippon Technologies © 2017
Type de données
● int, bigint, float, double, decimal, varint, smallint, tinyint
● text (utf-8), ascii, varchar
● boolean
● timestamp (millisecondes / epoch), date, time (nanoseconde / minuit)
● UUID, TimeUUID
● inet
● blob
● map (permet de retrouver les modèles dynamiques)
● set
● list
● counter (type très spécial)
● User Defined Type
CQL 3
Ippon Technologies © 2017
CQL 3
● Langage équivalent au SQL
● Géré directement par le driver
● Facilite la modélisation et l'utilisation de Cassandra
● cqlsh
➔ ligne de commande
Note: les exemples suivants sont inspirés de KillrVideo
https://killrvideo.github.io/
Ippon Technologies © 2017
Créer une table
CREATE TABLE IF NOT EXISTS videos (
videoid uuid,
userid uuid,
name text,
description text,
location text,
location_type int,
preview_image_location text,
tags set<text>,
added_date timestamp,
PRIMARY KEY (videoid)
);
✱ Create table
● « if not exist » facilite le
rejeu d'un script de
création
● Utilisation d'une
colonne multivaluée
(tags)
Ippon Technologies © 2017
Créer une table
CREATE TABLE IF NOT EXISTS user_videos (
userid uuid,
added_date timestamp,
videoid uuid,
name text,
preview_image_location text,
PRIMARY KEY (userid, added_date, videoid)
)
WITH CLUSTERING ORDER BY (added_date DESC, videoid ASC);
✱ Create table
● Relation 1-N
user → vidéo
● Les vidéos sont
classées dans l'ordre
antichronologique.
Ippon Technologies © 2017
Ajouter des données
insert into videos (
videoid,
userid,
added_date,
location,
location_type,
name,
tags
) values (
c211719c-ef66-b8a3-fa96-a05b6ed10e8e,
522b1fe2-2e36-4cef-a667-cd4237d08b89,
'1975-12-31 08:00:00+0000',
'http://www.youtube.com/watch?v=oI0yW4m9aaE',
0,
'Cassandra Crossing',
{'disaster movie', 'train'}
);
✱ Insert
● Command insert
● Les UUIDs s'écrivent
nativement
● Les ensembles (set)
avec des accolades
● La clé primaire doit être
renseignée
● Les écritures sont
atomiques
Ippon Technologies © 2017
Modifier des données
update user_videos
set
name = 'Cassandra Crossing'
where
userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
and added_date = '1975-12-31 08:00:00+0000'
and videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e;
insert into videos (
userid,
added_date,
videoid,
name
) values (
522b1fe2-2e36-4cef-a667-cd4237d08b89,
'1975-12-31 08:00:00+0000',
c211719c-ef66-b8a3-fa96-a05b6ed10e8e,
'Cassandra Crossing'
);
✱ Update
● Command update
● Insert et update sont
deux façons d'écrire la
même commande :
UPSERT
Ippon Technologies © 2017
Modifier des données
update videos
set tags = tags + { 'ovh', 'ippon' }
where
videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e;
select name,
tags
from videos
where videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e;
name | tags
--------------------+---------------------------------------------
Cassandra Crossing | {'disaster movie', 'ippon', 'ovh', 'train'}
(1 rows)
✱ Update
● UPDATE permet
d'ajouter ou de retirer
des éléments d'un
ensemble
● Les écritures sont
atomiques
Ippon Technologies © 2017
Lire les données
select name,
videoid,
userid,
added_date,
tags
from videos
where videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e;
@ Row 1
------------+--------------------------------------
name | Cassandra Crossing
videoid | c211719c-ef66-b8a3-fa96-a05b6ed10e8e
userid | 522b1fe2-2e36-4cef-a667-cd4237d08b89
added_date | 1975-12-31 08:00:00+0000
tags | {'disaster movie', 'train'}
(1 rows)
✱ Select
● La clé de partition doit
être indiquée
Ippon Technologies © 2017
select name,
added_date,
videoid
from user_videos
where userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
and added_date = '1975-12-31 08:00:00+0000';
select name,
added_date,
videoid
from user_videos
where userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89
and added_date >= '1970-01-01 00:00:00+0000'
and added_date < '1980-01-01 00:00:00+0000';
Lire les données
✱ Select
● Il est possible de
rajouter des critères sur
les clustering columns
● La clé de partition doit
être indiquée
● L'ordre des clustering
columns dans la clé est
importante
● Le critère de dernière
clustering column
indiqué peut être une
inégalité
Ippon Technologies © 2017
Vues matérialisées
✱ Vues
● Les requêtes possibles
sur une table restent
limitées
● Les données sont
dénormalisées pour
permettre les requêtes
nécessaires
● Les vues matérialisées
sont une aide pour la
dénormalisation
create materialized view if not exists video_by_name
as
select name,
videoid
from videos
where name is not null
and videoid is not null
primary key (name, videoid);
Architecture générale
Ippon Technologies © 2017
Cluster
● Nœud
➔ instance de Cassandra (JVM)
● Cluster
➔ ensemble de nœuds qui constituent une base de données
➔ un cluster constitue un anneau unique dans lequel se positionnent tous les nœuds
● Data center
➔ Un ensemble de nœuds associés assurant un niveau de réplication
➔ Permet la séparation de la charge de travail
➔ Peut correspondre à des datacenters réels ou virtuels
● Rack
➔ unité de disponibilité
➔ ensemble de nœud susceptibles de tomber en panne en même temps
Ippon Technologies © 2017
Répartition des données
Consistent Hashing
➔ Les données sont regroupées dans des partitions
identifiées par une clé de partition
➔ La clé de partition est hashée (Murmur3) → entier
sur 64 bits
➔ Chaque nœud est positionné sur l’anneaux des
valeurs (initial_token) et est responsable de la
plage antérieure
Token
ring
- 263
+ 263
0
- 262
+ 262
Ippon Technologies © 2017
Virtual Nodes — vnodes
● Plusieurs nœuds virtuels pour un même nœud physique
● Facilite le gestion de la montée en charge équilibrée des petits clusters
● Exemple
➔ cluster avec 6 nœuds
➔ 256 tokens par nœuds (num_token)
➔ 1536 segments
Ippon Technologies © 2017
● Réplication simple
➔ La donnée est répliquée sur les successeurs de la première réplique.
● Réplication avec prise en compte de la topologie
➔ Facteur de réplication paramétré pour chaque datacenter
➔ pour chaque datacenter, les données sont réparties dans les différents racks.
● Algorithme NetworkTopologyStrategy
➔ à la première réplique,
➔ à ses successeurs par ordre de token croissant tel que
○ répliquée sur les différents datacenters selon le taux configuré
○ répartie dans le plus grand nombre de racks possibles
Réplication
Ippon Technologies © 2017
Réplication — Coordinateur
DC - Ouest DC - Est
1
4
Rack1
Rack2
Client
Valeur
Coordinateur
35
26Rack3
1'
4'
RackA
RackB
3'5'
2'6'RackC
Coordinateur
distant
Ippon Technologies © 2017
Gossip
● Protocole de communication entre les nœuds
● Une fois par seconde, un nœud contacte entre un et trois nœuds tirés
au sort et échange avec eux les informations dont il dispose sur le
cluster
➔ État des nœuds
➔ Emplacement des nœuds (DC, rack)
➔ Les informations sont horodatées la plus récente et conservée
Ippon Technologies © 2017
Seeds
● Ajout d'un nouveau nœud
➔ Lorsqu’un nœud rejoint le cluster il contacte les serveurs de seed qui lui donnent les
informations sur le cluster et prend en compte sa présence
➔ La création du nouveau nœud est propagée aux autre nœuds par gossip
● Gossip
➔ Les nœuds seed interviennent plus souvent lors du gossip.
➔ Chaque nœud contacte au moins un seed à chaque tour
Ippon Technologies © 2017
Consistency level
● Niveau de cohérence réglable
➔ Écriture: nombre d'acquittements nécessaires pour l'acquittement de la requête
➔ Lecture: nombre de lectures effectuées
● Les niveaux
➔ ANY (écriture uniquement)
➔ ONE
➔ QUORUM
➔ LOCAL_ONE
➔ LOCAL_QUORUM
➔ EACH_QUORUM
➔ ALL
Le niveau est défini à
chaque requête
Ippon Technologies © 2017
Cohérence à terme — Eventual Consistency
Déploiement
Ippon Technologies © 2017
Versions
● 2.1 : Version en fin de vie (utilisée par DSE 4.x)
● 2.2 : version intermédiaire en fin de vie
● 3.0.x : version de maintenance
➔ version de base de DSE 5.0
● 3.x : Tick-Tock release
➔ 3.( 2i ) : version avec ajout de fonctionnalités
➔ 3.( 2i + 1 ): version corrective
● Versions actuelles (2017-02-21)
➔ 2.1.17
➔ 2.2.9
➔ 3.0.11
➔ 3.7
Utiliser la
dernière release
de la version 3.0
Ippon Technologies © 2017
Quelles instances ?
● 8 CPU
● 32 Go RAM
● 1 To SSD
➔ Si pas besoin de latence: 2 HDD (dont 1 petit pour les commit logs)
➔ RAID 0 sur disques données (JBOD si v > 3.2)
● 1 ou 2 cartes réseau min 1 Go
Proposition classique de départ à adapter aux besoins.
Doubler la mémoire si Spark est installé sur les mêmes machines.
Ippon Technologies © 2017
Serveur dédié Public Cloud Private Cloud
● EG-32
○ Intel Xeon E5-1630v3
○ 4c / 8t - 3,7 GHz / 3,8 GHz
○ 32 Go DDR4 ECC 2133 MHz
○ 3 * 600 Go HDD SAS 15k RAID 0
● EG-64
○ Intel Xeon E5-1630v3
○ 6c /12t - 3,5 GHz / 3,8 GHz
○ 64 Go DDR4 ECC 2133 MHz
○ 4 * 800 Go SSD RAID 0
● EG-16
○ Intel Xeon E5-1620v2
○ 4c / 8t - 3,7 GHz / 3,8 GHz
○ 32Go DDR3 ECC 1600 MHz
○ 2 * 480 Go SSD
● HG-30
○ 30 Go
○ 8 vCore
○ 800 Go
○ ou 400 Go SSD
● HG-15
○ 15 Go
○ 4 vCore
○ 400 Go
○ ou 200 Go SSD
À dimensionner sur
mesure
Chez OVH
Ippon Technologies © 2017
Exemple de cluster Cassandra sur OVH
✱ Points clés
● 2 DC
● 1 vRack cluster dédié
gossip
● Serveur applicatifs
répartis sur les deux
● LB IP pour répartition
charge et failover d'un
cluster
Ippon Technologies © 2017
Construire un cluster
1. Installer Cassandra sur tous les nœuds
2. Choisir les nœuds seed
3. Configurer les instances de Cassandra
4. Démarrer les nœuds un par un en commençant par les seeds
5. Mettre en place les traitements de maintenance
a. repair
b. sauvegardes
Procédure détaillée
http://docs.datastax.com/en/cassandra/3.0/cassandra/initialize/initMultipleDS.html
Blackfish
&
DataMC
Ippon Technologies © 2017
Présentation générale
Ippon Technologies © 2017
DataMC sur OVH
Ippon Technologies © 2017
Blackfish
https://gitlab.com/blackfish/blackfish
VM CoreOS
Swarm Cluster
Mozilla Public License 2.0
Ippon Technologies © 2017
Utiliser DataMC
1. Créer ou donner accès à un compte cloud public
a. OVH Public cloud
b. Cloud privé avec Openstack
c. Amazon
2. DataMC construit une infrastructure matérielle
3. DataMC donne l'accès à la console DataMC
4. Démarrer, gérer et arrêter les stacks selon les besoins
Le fonctionnement du système est supervisé par DataMC
Aller plus loin
http://datamc.io/
https://academy.datastax.com/
● DS101: Introduction to Apache Cassandra
● DS220: Data Modeling
● DS210: DataStax Enterprise Operations with Apache
Cassandra
PARIS
BORDEAUX
NANTES
LYON
MARRAKECH
WASHINGTON DC
NEW-YORK
RICHMOND
MELBOURNE
contact@ippon.fr
www.ippon.fr - www.ippon-hosting.com - www.ippon-digital.fr
@ippontech
-
01 46 12 48 48

Contenu connexe

Tendances

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
Victor Coustenoble
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
Alexander DEJANOVSKI
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
Gérald Quintana
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
ALTIC Altic
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Ippon
 
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
Julien Anguenot
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
acogoluegnes
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocutionParis_Storm_UG
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
Amal Abid
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
Florian Hussonnois
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
Michaël Morello
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
Damien Krotkine
 
Webinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud DatabasesWebinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud Databases
OVHcloud
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big data
acogoluegnes
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
Victor Coustenoble
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
GUSS
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
vberetti
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
Hervé Rivière
 
noSQL
noSQLnoSQL
noSQL
Klee Group
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
Mouna Torjmen
 

Tendances (20)

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
 
Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
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
 
NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
Paris stormusergroup intrudocution
Paris stormusergroup intrudocutionParis stormusergroup intrudocution
Paris stormusergroup intrudocution
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Paris Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & ArchitectureParis Kafka Meetup - Concepts & Architecture
Paris Kafka Meetup - Concepts & Architecture
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Riak introduction
Riak introductionRiak introduction
Riak introduction
 
Webinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud DatabasesWebinar - Enterprise Cloud Databases
Webinar - Enterprise Cloud Databases
 
Cartographie du big data
Cartographie du big dataCartographie du big data
Cartographie du big data
 
DataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoTDataStax et Apache Cassandra pour la gestion des flux IoT
DataStax et Apache Cassandra pour la gestion des flux IoT
 
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
 
noSQL
noSQLnoSQL
noSQL
 
Chapitre 3 spark
Chapitre 3 sparkChapitre 3 spark
Chapitre 3 spark
 

En vedette

Cassandra techniques de modelisation avancee
Cassandra techniques de modelisation avanceeCassandra techniques de modelisation avancee
Cassandra techniques de modelisation avancee
Duyhai Doan
 
Introduction à Cassandra - campus plex
Introduction à Cassandra - campus plexIntroduction à Cassandra - campus plex
Introduction à Cassandra - campus plex
jaxio
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec Cassandra
Julien Dubois
 
Dispatches From the New Economy: The On-Demand Workforce
Dispatches From the New Economy: The On-Demand WorkforceDispatches From the New Economy: The On-Demand Workforce
Dispatches From the New Economy: The On-Demand Workforce
Intuit Inc.
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015
Julien Dubois
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache Cassandra
Victor Coustenoble
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
Présentation des bases de données NoSql
Présentation des bases de données NoSqlPrésentation des bases de données NoSql
Présentation des bases de données NoSql
Sidi LEKHALIFA
 
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec CassandraBreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec CassandraMichaël Figuière
 
Devoxx france 2014 compteurs de perf
Devoxx france 2014 compteurs de perfDevoxx france 2014 compteurs de perf
Devoxx france 2014 compteurs de perf
Jean-Philippe BEMPEL
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
Christophe Willemsen
 
Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014
vberetti
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
Henri Gomez
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcatCERTyou Formation
 
Formation Flash
Formation FlashFormation Flash
Formation Flash
jplesault
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
Roberto Barros De Sousa
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
Mathieu DESPRIEE
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corpGeoffray Gruel
 
Cobbler puppet
Cobbler puppetCobbler puppet
Cobbler puppet
Fedora-Fr
 

En vedette (20)

Cassandra techniques de modelisation avancee
Cassandra techniques de modelisation avanceeCassandra techniques de modelisation avancee
Cassandra techniques de modelisation avancee
 
Introduction à Cassandra - campus plex
Introduction à Cassandra - campus plexIntroduction à Cassandra - campus plex
Introduction à Cassandra - campus plex
 
Requêtes multi-critères avec Cassandra
Requêtes multi-critères avec CassandraRequêtes multi-critères avec Cassandra
Requêtes multi-critères avec Cassandra
 
Dispatches From the New Economy: The On-Demand Workforce
Dispatches From the New Economy: The On-Demand WorkforceDispatches From the New Economy: The On-Demand Workforce
Dispatches From the New Economy: The On-Demand Workforce
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
BI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache CassandraBI, Reporting and Analytics on Apache Cassandra
BI, Reporting and Analytics on Apache Cassandra
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Présentation des bases de données NoSql
Présentation des bases de données NoSqlPrésentation des bases de données NoSql
Présentation des bases de données NoSql
 
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec CassandraBreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
BreizhCamp (Jun 2011) - Haute disponibilité et élasticité avec Cassandra
 
Devoxx france 2014 compteurs de perf
Devoxx france 2014 compteurs de perfDevoxx france 2014 compteurs de perf
Devoxx france 2014 compteurs de perf
 
Moteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareRecoMoteurs de recommendation avec Neo4j et GraphAwareReco
Moteurs de recommendation avec Neo4j et GraphAwareReco
 
Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014Ippevent - Regarde les instances tomber - 20 mai 2014
Ippevent - Regarde les instances tomber - 20 mai 2014
 
20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif20120110 paris jug-packaging-natif
20120110 paris jug-packaging-natif
 
Ux076 formation-administration-tomcat
Ux076 formation-administration-tomcatUx076 formation-administration-tomcat
Ux076 formation-administration-tomcat
 
Formation Flash
Formation FlashFormation Flash
Formation Flash
 
Présentation devops&puppet 04112014
Présentation devops&puppet 04112014 Présentation devops&puppet 04112014
Présentation devops&puppet 04112014
 
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
[USI] Lambda-Architecture : comment réconcilier BigData et temps-réel
 
2010 presentation ippon_corp
2010 presentation ippon_corp2010 presentation ippon_corp
2010 presentation ippon_corp
 
Cobbler puppet
Cobbler puppetCobbler puppet
Cobbler puppet
 

Similaire à Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02

NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler Softeam
TelecomValley
 
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Julien Anguenot
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
Julien Maitrehenry
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Modern Data Stack France
 
[SINS] Présentation de Nagios
[SINS] Présentation de Nagios[SINS] Présentation de Nagios
[SINS] Présentation de Nagiosjeyg
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
Noël Bardelot
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de Cassandre
Mathieu Goeminne
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
Duyhai Doan
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
Laurent Broudoux
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
univalence
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
PALO IT
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
Olivier BAZOUD
 
Introduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - EnsimIntroduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - Ensim
Laurent Broudoux
 
Mongo DB
Mongo DBMongo DB
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
Christophe Villeneuve
 
Les secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquenceLes secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquence
OCTO Technology
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservices
Cédrick Lunven
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
Christophe Villeneuve
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
Rachid Zarouali
 

Similaire à Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02 (20)

NoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler SofteamNoSQL panorama - Jean Seiler Softeam
NoSQL panorama - Jean Seiler Softeam
 
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
Traitement temps réel de flux réseaux IPFIX/Netflow avec PySpark, Kafka et Ca...
 
Retour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de logRetour d'expérience sur notre stack de log
Retour d'expérience sur notre stack de log
 
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
Hug france - Administration Hadoop et retour d’expérience BI avec Impala, lim...
 
[SINS] Présentation de Nagios
[SINS] Présentation de Nagios[SINS] Présentation de Nagios
[SINS] Présentation de Nagios
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de Cassandre
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
 
Introduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudouxIntroduction NoSql 201406 - lbroudoux
Introduction NoSql 201406 - lbroudoux
 
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017) Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
Spark-adabra, Comment Construire un DATALAKE ! (Devoxx 2017)
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
WS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - XebiaWS User Group - Spring Batch - Xebia
WS User Group - Spring Batch - Xebia
 
Introduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - EnsimIntroduction NoSQL 201401 - Ensim
Introduction NoSQL 201401 - Ensim
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
Ocs
OcsOcs
Ocs
 
Mariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDCMariadb pour les developpeurs - OSDC
Mariadb pour les developpeurs - OSDC
 
Les secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquenceLes secrets de la JVM pour les algos à haute fréquence
Les secrets de la JVM pour les algos à haute fréquence
 
Xebicon2019 m icroservices
Xebicon2019   m icroservicesXebicon2019   m icroservices
Xebicon2019 m icroservices
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Les containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicienLes containers docker vu par un chef cuisinier et un mécanicien
Les containers docker vu par un chef cuisinier et un mécanicien
 

Dernier

Actualisation estimation élections européennes 2024
Actualisation estimation élections européennes 2024Actualisation estimation élections européennes 2024
Actualisation estimation élections européennes 2024
contact Elabe
 
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
contact Elabe
 
Deuxième actualisation estimation élections européennes 2024
Deuxième actualisation estimation élections européennes 2024Deuxième actualisation estimation élections européennes 2024
Deuxième actualisation estimation élections européennes 2024
contact Elabe
 
Estimation élections européennes 2024 ELABE
Estimation élections européennes 2024 ELABEEstimation élections européennes 2024 ELABE
Estimation élections européennes 2024 ELABE
contact Elabe
 
L'Observatoire politique ELABE pour Les Echos - Juin 2024
L'Observatoire politique ELABE pour Les Echos - Juin 2024L'Observatoire politique ELABE pour Les Echos - Juin 2024
L'Observatoire politique ELABE pour Les Echos - Juin 2024
contact Elabe
 
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
contact Elabe
 
Comprendre le vote aux élections européennes du 9 juin 2024
Comprendre le vote aux élections européennes du 9 juin 2024Comprendre le vote aux élections européennes du 9 juin 2024
Comprendre le vote aux élections européennes du 9 juin 2024
contact Elabe
 
Estimations ELABE BFMTV ABSTENTION élections européennes 2024
Estimations ELABE BFMTV ABSTENTION élections européennes 2024Estimations ELABE BFMTV ABSTENTION élections européennes 2024
Estimations ELABE BFMTV ABSTENTION élections européennes 2024
contact Elabe
 
Les Français et les élections législatives
Les Français et les élections législativesLes Français et les élections législatives
Les Français et les élections législatives
contact Elabe
 
Webinaire_les aides aux investissements.pptx
Webinaire_les aides aux investissements.pptxWebinaire_les aides aux investissements.pptx
Webinaire_les aides aux investissements.pptx
Institut de l'Elevage - Idele
 
Productivité et politique industrielles: deux défis à relever conjointement
Productivité et politique industrielles: deux défis à relever conjointementProductivité et politique industrielles: deux défis à relever conjointement
Productivité et politique industrielles: deux défis à relever conjointement
La Fabrique de l'industrie
 

Dernier (11)

Actualisation estimation élections européennes 2024
Actualisation estimation élections européennes 2024Actualisation estimation élections européennes 2024
Actualisation estimation élections européennes 2024
 
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
Sondage ELABE pour Les Echos et l'Institut Montaigne -Les Français et la guer...
 
Deuxième actualisation estimation élections européennes 2024
Deuxième actualisation estimation élections européennes 2024Deuxième actualisation estimation élections européennes 2024
Deuxième actualisation estimation élections européennes 2024
 
Estimation élections européennes 2024 ELABE
Estimation élections européennes 2024 ELABEEstimation élections européennes 2024 ELABE
Estimation élections européennes 2024 ELABE
 
L'Observatoire politique ELABE pour Les Echos - Juin 2024
L'Observatoire politique ELABE pour Les Echos - Juin 2024L'Observatoire politique ELABE pour Les Echos - Juin 2024
L'Observatoire politique ELABE pour Les Echos - Juin 2024
 
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
Etat de l’opinion - Journée CCR CAT « Protégeons l’assurabilité »
 
Comprendre le vote aux élections européennes du 9 juin 2024
Comprendre le vote aux élections européennes du 9 juin 2024Comprendre le vote aux élections européennes du 9 juin 2024
Comprendre le vote aux élections européennes du 9 juin 2024
 
Estimations ELABE BFMTV ABSTENTION élections européennes 2024
Estimations ELABE BFMTV ABSTENTION élections européennes 2024Estimations ELABE BFMTV ABSTENTION élections européennes 2024
Estimations ELABE BFMTV ABSTENTION élections européennes 2024
 
Les Français et les élections législatives
Les Français et les élections législativesLes Français et les élections législatives
Les Français et les élections législatives
 
Webinaire_les aides aux investissements.pptx
Webinaire_les aides aux investissements.pptxWebinaire_les aides aux investissements.pptx
Webinaire_les aides aux investissements.pptx
 
Productivité et politique industrielles: deux défis à relever conjointement
Productivité et politique industrielles: deux défis à relever conjointementProductivité et politique industrielles: deux défis à relever conjointement
Productivité et politique industrielles: deux défis à relever conjointement
 

Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02

  • 1. Introduction à Apache Cassandra Jérôme Mainaud
  • 2. Ippon Technologies © 2017 Architecte logiciel chez Ippon Technologies Manager Technique @jxerome jmainaud@ippon.fr Jérôme Mainaud
  • 3. Ippon Technologies © 2017 Ippon Technologies
  • 4. Ippon Technologies © 2017 Acteur de l'innovation
  • 5.
  • 7. Ippon Technologies © 2017 Cassandra ● Base de données ● No SQL ● Modèle Table partitionnée ➔ Autrefois : "Famille de colonnes" ● Projet Apache
  • 8. Ippon Technologies © 2017 Inspiration ● Amazon Dynamo ➔ Architecture distribuée ➔ Anneau distribué ➔ Cohérence à terme (Eventual consistency) ● Google BigTable ➔ Modèle de stockage ➔ Famille de colonnes
  • 9. Ippon Technologies © 2017 Ambitions ● Scalabilité linéaire ➔ Plus de perf ? → Ajouter un nœud ➔ Plus de volume ? → Ajouter un nœud ● Haute disponibilité ➔ Pas de SPOF ➔ Tous les nœuds sont équivalents
  • 10. Ippon Technologies © 2017 Cluster ● Décentralisé (pair-à-pair) ➔ Pas de maître, ni d'esclave ● Multi-Datacenter ➔ Répartition géographique ➔ Ségrégation opérationnel / analytique ● Gossip Protocol ➔ Une fois par second ➔ échange des infos cluster ➔ avec trois nœuds tirés au sort
  • 13. Ippon Technologies © 2017 Zero Downtime Très Haute Disponibilité
  • 15. Ippon Technologies © 2017 ● Transactions ACID ● Modèle de données inadapté Quand ne pas utiliser Cassandra ?
  • 17. Ippon Technologies © 2017 Tables partitionnées
  • 18. Ippon Technologies © 2017 Dimensionnement ● Dimension d’une table ➔ Aucune limite du nombre de partition dans une table ● Dimension d’une partition ➔ La partition doit tenir un seul nœud ➔ Max 2 milliards de cellules par partition (en pratique < 100 000) ➔ Max 2 Go par cellule (en pratique < 100 Mo par partition) ● A partir de la version 3.6 ➔ Optimisation du fonctionnement des grandes partitions ➔ Limites à revoir à la hausse. ➔ Mais il faut toujours borner les partitions
  • 19. Ippon Technologies © 2017 Clé primaire Primary key = partition key + clustering columns ➔ Partition key → partition (obligatoire pour une requête) ➔ Clustering key → regroupe les colonnes en lignes (conservées classées) PRIMARY KEY (invoice_id, item_id) PRIMARY KEY ((customer_id, year), date, event_id)
  • 20. Ippon Technologies © 2017 Type de données ● int, bigint, float, double, decimal, varint, smallint, tinyint ● text (utf-8), ascii, varchar ● boolean ● timestamp (millisecondes / epoch), date, time (nanoseconde / minuit) ● UUID, TimeUUID ● inet ● blob ● map (permet de retrouver les modèles dynamiques) ● set ● list ● counter (type très spécial) ● User Defined Type
  • 21. CQL 3
  • 22. Ippon Technologies © 2017 CQL 3 ● Langage équivalent au SQL ● Géré directement par le driver ● Facilite la modélisation et l'utilisation de Cassandra ● cqlsh ➔ ligne de commande Note: les exemples suivants sont inspirés de KillrVideo https://killrvideo.github.io/
  • 23. Ippon Technologies © 2017 Créer une table CREATE TABLE IF NOT EXISTS videos ( videoid uuid, userid uuid, name text, description text, location text, location_type int, preview_image_location text, tags set<text>, added_date timestamp, PRIMARY KEY (videoid) ); ✱ Create table ● « if not exist » facilite le rejeu d'un script de création ● Utilisation d'une colonne multivaluée (tags)
  • 24. Ippon Technologies © 2017 Créer une table CREATE TABLE IF NOT EXISTS user_videos ( userid uuid, added_date timestamp, videoid uuid, name text, preview_image_location text, PRIMARY KEY (userid, added_date, videoid) ) WITH CLUSTERING ORDER BY (added_date DESC, videoid ASC); ✱ Create table ● Relation 1-N user → vidéo ● Les vidéos sont classées dans l'ordre antichronologique.
  • 25. Ippon Technologies © 2017 Ajouter des données insert into videos ( videoid, userid, added_date, location, location_type, name, tags ) values ( c211719c-ef66-b8a3-fa96-a05b6ed10e8e, 522b1fe2-2e36-4cef-a667-cd4237d08b89, '1975-12-31 08:00:00+0000', 'http://www.youtube.com/watch?v=oI0yW4m9aaE', 0, 'Cassandra Crossing', {'disaster movie', 'train'} ); ✱ Insert ● Command insert ● Les UUIDs s'écrivent nativement ● Les ensembles (set) avec des accolades ● La clé primaire doit être renseignée ● Les écritures sont atomiques
  • 26. Ippon Technologies © 2017 Modifier des données update user_videos set name = 'Cassandra Crossing' where userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89 and added_date = '1975-12-31 08:00:00+0000' and videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e; insert into videos ( userid, added_date, videoid, name ) values ( 522b1fe2-2e36-4cef-a667-cd4237d08b89, '1975-12-31 08:00:00+0000', c211719c-ef66-b8a3-fa96-a05b6ed10e8e, 'Cassandra Crossing' ); ✱ Update ● Command update ● Insert et update sont deux façons d'écrire la même commande : UPSERT
  • 27. Ippon Technologies © 2017 Modifier des données update videos set tags = tags + { 'ovh', 'ippon' } where videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e; select name, tags from videos where videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e; name | tags --------------------+--------------------------------------------- Cassandra Crossing | {'disaster movie', 'ippon', 'ovh', 'train'} (1 rows) ✱ Update ● UPDATE permet d'ajouter ou de retirer des éléments d'un ensemble ● Les écritures sont atomiques
  • 28. Ippon Technologies © 2017 Lire les données select name, videoid, userid, added_date, tags from videos where videoid = c211719c-ef66-b8a3-fa96-a05b6ed10e8e; @ Row 1 ------------+-------------------------------------- name | Cassandra Crossing videoid | c211719c-ef66-b8a3-fa96-a05b6ed10e8e userid | 522b1fe2-2e36-4cef-a667-cd4237d08b89 added_date | 1975-12-31 08:00:00+0000 tags | {'disaster movie', 'train'} (1 rows) ✱ Select ● La clé de partition doit être indiquée
  • 29. Ippon Technologies © 2017 select name, added_date, videoid from user_videos where userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89 and added_date = '1975-12-31 08:00:00+0000'; select name, added_date, videoid from user_videos where userid = 522b1fe2-2e36-4cef-a667-cd4237d08b89 and added_date >= '1970-01-01 00:00:00+0000' and added_date < '1980-01-01 00:00:00+0000'; Lire les données ✱ Select ● Il est possible de rajouter des critères sur les clustering columns ● La clé de partition doit être indiquée ● L'ordre des clustering columns dans la clé est importante ● Le critère de dernière clustering column indiqué peut être une inégalité
  • 30. Ippon Technologies © 2017 Vues matérialisées ✱ Vues ● Les requêtes possibles sur une table restent limitées ● Les données sont dénormalisées pour permettre les requêtes nécessaires ● Les vues matérialisées sont une aide pour la dénormalisation create materialized view if not exists video_by_name as select name, videoid from videos where name is not null and videoid is not null primary key (name, videoid);
  • 32. Ippon Technologies © 2017 Cluster ● Nœud ➔ instance de Cassandra (JVM) ● Cluster ➔ ensemble de nœuds qui constituent une base de données ➔ un cluster constitue un anneau unique dans lequel se positionnent tous les nœuds ● Data center ➔ Un ensemble de nœuds associés assurant un niveau de réplication ➔ Permet la séparation de la charge de travail ➔ Peut correspondre à des datacenters réels ou virtuels ● Rack ➔ unité de disponibilité ➔ ensemble de nœud susceptibles de tomber en panne en même temps
  • 33. Ippon Technologies © 2017 Répartition des données Consistent Hashing ➔ Les données sont regroupées dans des partitions identifiées par une clé de partition ➔ La clé de partition est hashée (Murmur3) → entier sur 64 bits ➔ Chaque nœud est positionné sur l’anneaux des valeurs (initial_token) et est responsable de la plage antérieure Token ring - 263 + 263 0 - 262 + 262
  • 34. Ippon Technologies © 2017 Virtual Nodes — vnodes ● Plusieurs nœuds virtuels pour un même nœud physique ● Facilite le gestion de la montée en charge équilibrée des petits clusters ● Exemple ➔ cluster avec 6 nœuds ➔ 256 tokens par nœuds (num_token) ➔ 1536 segments
  • 35. Ippon Technologies © 2017 ● Réplication simple ➔ La donnée est répliquée sur les successeurs de la première réplique. ● Réplication avec prise en compte de la topologie ➔ Facteur de réplication paramétré pour chaque datacenter ➔ pour chaque datacenter, les données sont réparties dans les différents racks. ● Algorithme NetworkTopologyStrategy ➔ à la première réplique, ➔ à ses successeurs par ordre de token croissant tel que ○ répliquée sur les différents datacenters selon le taux configuré ○ répartie dans le plus grand nombre de racks possibles Réplication
  • 36. Ippon Technologies © 2017 Réplication — Coordinateur DC - Ouest DC - Est 1 4 Rack1 Rack2 Client Valeur Coordinateur 35 26Rack3 1' 4' RackA RackB 3'5' 2'6'RackC Coordinateur distant
  • 37. Ippon Technologies © 2017 Gossip ● Protocole de communication entre les nœuds ● Une fois par seconde, un nœud contacte entre un et trois nœuds tirés au sort et échange avec eux les informations dont il dispose sur le cluster ➔ État des nœuds ➔ Emplacement des nœuds (DC, rack) ➔ Les informations sont horodatées la plus récente et conservée
  • 38. Ippon Technologies © 2017 Seeds ● Ajout d'un nouveau nœud ➔ Lorsqu’un nœud rejoint le cluster il contacte les serveurs de seed qui lui donnent les informations sur le cluster et prend en compte sa présence ➔ La création du nouveau nœud est propagée aux autre nœuds par gossip ● Gossip ➔ Les nœuds seed interviennent plus souvent lors du gossip. ➔ Chaque nœud contacte au moins un seed à chaque tour
  • 39. Ippon Technologies © 2017 Consistency level ● Niveau de cohérence réglable ➔ Écriture: nombre d'acquittements nécessaires pour l'acquittement de la requête ➔ Lecture: nombre de lectures effectuées ● Les niveaux ➔ ANY (écriture uniquement) ➔ ONE ➔ QUORUM ➔ LOCAL_ONE ➔ LOCAL_QUORUM ➔ EACH_QUORUM ➔ ALL Le niveau est défini à chaque requête
  • 40. Ippon Technologies © 2017 Cohérence à terme — Eventual Consistency
  • 42. Ippon Technologies © 2017 Versions ● 2.1 : Version en fin de vie (utilisée par DSE 4.x) ● 2.2 : version intermédiaire en fin de vie ● 3.0.x : version de maintenance ➔ version de base de DSE 5.0 ● 3.x : Tick-Tock release ➔ 3.( 2i ) : version avec ajout de fonctionnalités ➔ 3.( 2i + 1 ): version corrective ● Versions actuelles (2017-02-21) ➔ 2.1.17 ➔ 2.2.9 ➔ 3.0.11 ➔ 3.7 Utiliser la dernière release de la version 3.0
  • 43. Ippon Technologies © 2017 Quelles instances ? ● 8 CPU ● 32 Go RAM ● 1 To SSD ➔ Si pas besoin de latence: 2 HDD (dont 1 petit pour les commit logs) ➔ RAID 0 sur disques données (JBOD si v > 3.2) ● 1 ou 2 cartes réseau min 1 Go Proposition classique de départ à adapter aux besoins. Doubler la mémoire si Spark est installé sur les mêmes machines.
  • 44. Ippon Technologies © 2017 Serveur dédié Public Cloud Private Cloud ● EG-32 ○ Intel Xeon E5-1630v3 ○ 4c / 8t - 3,7 GHz / 3,8 GHz ○ 32 Go DDR4 ECC 2133 MHz ○ 3 * 600 Go HDD SAS 15k RAID 0 ● EG-64 ○ Intel Xeon E5-1630v3 ○ 6c /12t - 3,5 GHz / 3,8 GHz ○ 64 Go DDR4 ECC 2133 MHz ○ 4 * 800 Go SSD RAID 0 ● EG-16 ○ Intel Xeon E5-1620v2 ○ 4c / 8t - 3,7 GHz / 3,8 GHz ○ 32Go DDR3 ECC 1600 MHz ○ 2 * 480 Go SSD ● HG-30 ○ 30 Go ○ 8 vCore ○ 800 Go ○ ou 400 Go SSD ● HG-15 ○ 15 Go ○ 4 vCore ○ 400 Go ○ ou 200 Go SSD À dimensionner sur mesure Chez OVH
  • 45. Ippon Technologies © 2017 Exemple de cluster Cassandra sur OVH ✱ Points clés ● 2 DC ● 1 vRack cluster dédié gossip ● Serveur applicatifs répartis sur les deux ● LB IP pour répartition charge et failover d'un cluster
  • 46. Ippon Technologies © 2017 Construire un cluster 1. Installer Cassandra sur tous les nœuds 2. Choisir les nœuds seed 3. Configurer les instances de Cassandra 4. Démarrer les nœuds un par un en commençant par les seeds 5. Mettre en place les traitements de maintenance a. repair b. sauvegardes Procédure détaillée http://docs.datastax.com/en/cassandra/3.0/cassandra/initialize/initMultipleDS.html
  • 48. Ippon Technologies © 2017 Présentation générale
  • 49. Ippon Technologies © 2017 DataMC sur OVH
  • 50. Ippon Technologies © 2017 Blackfish https://gitlab.com/blackfish/blackfish VM CoreOS Swarm Cluster Mozilla Public License 2.0
  • 51. Ippon Technologies © 2017 Utiliser DataMC 1. Créer ou donner accès à un compte cloud public a. OVH Public cloud b. Cloud privé avec Openstack c. Amazon 2. DataMC construit une infrastructure matérielle 3. DataMC donne l'accès à la console DataMC 4. Démarrer, gérer et arrêter les stacks selon les besoins Le fonctionnement du système est supervisé par DataMC
  • 52. Aller plus loin http://datamc.io/ https://academy.datastax.com/ ● DS101: Introduction to Apache Cassandra ● DS220: Data Modeling ● DS210: DataStax Enterprise Operations with Apache Cassandra
  • 53. PARIS BORDEAUX NANTES LYON MARRAKECH WASHINGTON DC NEW-YORK RICHMOND MELBOURNE contact@ippon.fr www.ippon.fr - www.ippon-hosting.com - www.ippon-digital.fr @ippontech - 01 46 12 48 48