SlideShare une entreprise Scribd logo
1  sur  30
Télécharger pour lire hors ligne
www.cetic.be
Se noyer dans les yeux de Cassandre
1
Mathieu Goeminne
www.cetic.be
Au programme
• AP over C
• Les fondations
• Modèle de donnée et fonctionnalités
• Stockage de la donnée
• Réplication et cohérence
• Topologie des nœuds
• Quelques cas d’utilisation
2
www.cetic.be
AP over C
3
www.cetic.be
AP over C
• Propriétés CAP
• Consistency: une donnée n’a qu’un seul état visible.
• Availability: Tant que le système tourne, la donnée est
disponible.
• Partition Tolerance: Quel que soit le nombre de serveurs, toute
requête doit fournir un résultat correct.
• Théorème CAP
• Dans toute BDD distribuée, on ne peut avoir que 2 de ces 3
propriétés.
• En réalité, on est plus sur un continuum.
4
www.cetic.be
AP over C
5
www.cetic.be
Les fondations
6
www.cetic.be
Les fondations: Dynamo
• Projet d’Amazon (2004) pour un stockage distribué et décentralisé à
grande échelle.
• Tous les nœuds ont les mêmes responsabilités, pas de nœud
spécial pour la maîtrise ou servant de point d’entrée.
• Capacités de stockage et de traitement augmentées linéairement
par l’ajout de nœuds.
• À mi-chemin entre les bases de données et les tables de hashage
distribuées (DHTs): Réseau P2P
• Résilience aux défaillances: détection de différences entre les nœuds
par un arbre de Merkle.
• Gestion du cluster par un protocole Gossip: les nœuds en contact
s’échangent des « rumeurs » sur la disponibilité des autres nœuds.
• AWS DynamoDB est inspiré de ce projet, mais repose sur un nœud
maître.
7
www.cetic.be
Les fondations: Dynamo
• Projet d’Amazon (2004) pour un stockage distribué et décentralisé à
grande échelle.
• Tous les nœuds ont les mêmes responsabilités, pas de nœud
spécial pour la maîtrise ou servant de point d’entrée.
• Capacités de stockage et de traitement augmentées linéairement
par l’ajout de nœuds.
• À mi-chemin entre les bases de données et les tables de hashage
distribuées (DHTs): Réseau P2P
• Résilience aux défaillances: détection de différences entre les nœuds
par un arbre de Merkle.
• Gestion du cluster par un protocole Gossip: les nœuds en contact
s’échangent des « rumeurs » sur la disponibilité des autres nœuds.
• AWS DynamoDB est inspiré de ce projet, mais repose sur un nœud
maître.
7
?
?
?
www.cetic.be
Les fondations: Big Table
• Projet de Google (2014) pour une base de données distribuée
orientée « wide column store »
• [String, String, Timestamp] -> ByteArray
• Les tables sont divisées en tablets, sur base des clefs de colonnes.
1 tablet ~= 100 Mo => Distribution => Passage à l’échelle.
• Chez Google, repose sur GoogleFS (système de fichier distribué)
• A inspiré HBase, Hypertable et Cassandra.
8
www.cetic.be
Modèle de donnée et fonctionnalités
9
www.cetic.be
Modèle de donnée et fonctionnalités
• Tables de type Map[K1, SortedMap[K2, V]]
• Dictionnaire de dictionnaires (ordonnés) de valeurs.
• Coutisse/085 => Mme Hedwige => {42, Rue des Éléphants; 085/44.47.19}
• Pour accéder à la donnée, connaître K1 est obligatoire.
• Connaître K2 est théoriquement facultatif, mais en pratique nécessaire point
de vue perf.
• Besoin d’organiser les données en fonction des requêtes à venir
• Plusieurs organisations de la même donnée
• Vues matérialisées possibles
• Pas de clef étrangère, de contraintes sur les données.
• ~ Pas d’autres index.
• Pas de jointures (trop onéreuses dans un environnement distribué)
• Dénormalisation privilégiée (⚠ risque pour l’intégrité)
10
www.cetic.be
Modèle de donnée et fonctionnalités
11
www.cetic.be
Modèle de donnée et fonctionnalités
11
Clef primaire composée.
tag=clef de partition (de ligne)
time=clef de clustering
Pour chaque tag, les times sont
ordonnés.
www.cetic.be
Modèle de donnée et fonctionnalités
11
Clef primaire composée.
tag=clef de partition (de ligne)
time=clef de clustering
Pour chaque tag, les times sont
ordonnés.
tag time value quality
sensor1 t1 v1 q1
sensor1 t2 v2 q2
sensor2 t3 v3 q3
sensor2 t4 v4 q4
sensor1 t1 t2
value v1 value v2
quality q1 quality q2
sensor2 t3 t4
value v3 value v3
quality q3 quality q4
Ce qu’on voit Ce qui est stocké
www.cetic.be
Stockage de la donnée
12
www.cetic.be
Stockage de la donnée
13
www.cetic.be
Stockage de la donnée
13
Pour la durabilité.
Tri par ordre
d’arrivée
www.cetic.be
Stockage de la donnée
13
Pour la durabilité.
Tri par ordre
d’arrivée
Cache rapide.
Organisé par K1/K2
www.cetic.be
Stockage de la donnée
13
Pour la durabilité.
Tri par ordre
d’arrivée
Cache rapide.
Organisé par K1/K2
Immuables.
Log-structured merge (LSM) tree: indexation
rapide et pas chère.
Compaction: fusion de SStables
www.cetic.be
Réplication et cohérence
14
www.cetic.be
Réplication
• Chaque partition est dupliquée sur un nombre paramétrable de nœuds (RF =
Replication Factor).
• Si plusieurs DC, on peut spécifier un RF par DC.
• Typiquement RF=3, 5, …
• Affectation sur base de la clef de partition
• Les nœuds s’échangent des logs d’activité pour rester synchronisés
• La donnée survit à la défaillance de RF-1 nœuds.
• Répartition de charge
• Si le nombre de nœuds > RF, les nœuds se répartissent les partitions.
Passage à l’échelle.
• Normalement, RF nœuds peuvent répondre à une requête donnée.
15
www.cetic.be
Cohérence
• « Eventually Consistent »: Une donnée finit par n’avoir qu’un état.
Mais ça peut prendre du temps.
• On peut choisir le nombre de réplicats « confirmés » (CL) avant de
considérer un accès comme un succès: compromis C vs A
paramétrable par le client.
• ONE, QUORUM, ALL
• CL(W) + CL(R) > RF nécessaire pour garantir la cohérence à tout
moment.
16
www.cetic.be
CL et Disponibilité - Pourquoi un RF impair?
17
Nombre de nœuds à
atteindre
Disponibilité malgré la perte
de X nœuds (au moins)
RF ONE QUORUM ALL ONE QUORUM ALL
1 1 1 1 0 0 0
2 1 2 2 1 0 0
3 1 2 3 2 1 0
4 1 3 4 3 1 0
5 1 3 5 4 2 0
6 1 4 6 5 2 0
7 1 4 7 6 3 0
8 1 5 8 7 3 0
www.cetic.be
Topologie des nœuds
18
www.cetic.be
Topologie des nœuds
• L’espace de K1 est
composé de 264 (cst)
entrées.
• Entrées réparties
entre N (cst) nœuds
virtuels.
• VNodes pris en
charge par k
(dynamique) nœuds
« réels ».
19
264-1
264 / 4
264 / 2
www.cetic.be
Nœuds, Racks et Data Centers
20
• Nœud Rack Data
Center.
• C* tente de placer les
réplicats sur des racks et
des DC différents.
• Réplication asynchrone
automatique
∈ ∈
www.cetic.be
Quelques cas d'utilisation
21
www.cetic.be
Situation idéale pour Cassandra
• 0 downtime.
• Besoin de distribution pour l’effort et le stockage.
• BDD multi-site.
• Écriture massive, délai avant impact sur la lecture acceptable.
• Donnée rarement mise à jour.
• Accès à partir d’une clef primaire.
• Pas besoin de jointure ou d’agrégation.
22
www.cetic.be
Quelques cas d’utilisation
• Séries chronologiques, IoT, télémétrie
• Fonctionnalités TS à implémenter dans le client
• Mais le modèle de donnée s’y prête très bien
• Map[Capteur, SortedMap[Timestamp, Valeur]]
• Ex: Datadog (télémétrie d’infrastructure), Netflix (actions des utilisateurs),
TSorage
• Chat
• Map[Salon, SortedMap[Timestamp, Message]]
• Ex: Facebook Messenger (remplacé depuis)
• Suivi de status (Achats, colis, health tracker, …)
• Map[Item, SortedMap[EventID, Status]]
• Ex: Zalando (paniers d’achat, achats proprement dits)
23
www.cetic.be
Pour aller plus loin
24

Contenu connexe

Similaire à Se noyer dans les yeux de Cassandre

Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Mathias Kluba
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Terracotta jug
Terracotta jugTerracotta jug
Terracotta jugZenika
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystMathieu Goeminne
 
Pourquoi les coûts de Windows Azure seront toujours les plus bas
Pourquoi les coûts de Windows Azure seront toujours les plus basPourquoi les coûts de Windows Azure seront toujours les plus bas
Pourquoi les coûts de Windows Azure seront toujours les plus basMicrosoft Technet France
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
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
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandraDuyhai Doan
 
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...Duyhai Doan
 
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...Paris Open Source Summit
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesXavier MARIN
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra
 
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackMicrosoft Décideurs IT
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech
 
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdfDilanTiobou
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésMathieu Elie
 

Similaire à Se noyer dans les yeux de Cassandre (20)

Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...Analytics et Big Data, une histoire de cubes...
Analytics et Big Data, une histoire de cubes...
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Terracotta jug
Terracotta jugTerracotta jug
Terracotta jug
 
Spark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et CatalystSpark - au dela du dataframe avec Tungsten et Catalyst
Spark - au dela du dataframe avec Tungsten et Catalyst
 
Pourquoi les coûts de Windows Azure seront toujours les plus bas
Pourquoi les coûts de Windows Azure seront toujours les plus basPourquoi les coûts de Windows Azure seront toujours les plus bas
Pourquoi les coûts de Windows Azure seront toujours les plus bas
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
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...
 
Le futur d'apache cassandra
Le futur d'apache cassandraLe futur d'apache cassandra
Le futur d'apache cassandra
 
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés d...
 
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
#OSSPARIS19 - Stream processing : de la base de données classique au streamin...
 
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseriesBreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
BreizhCamp 2019 - IoT et open source hardware pour la collecte de timeseries
 
Zimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and CephZimbra Forum France 2016 - Beezim and Ceph
Zimbra Forum France 2016 - Beezim and Ceph
 
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure PackLe cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
Le cloud-in-a-box avec Cloud Platform System (CPS) et Windows Azure Pack
 
Inf208
Inf208Inf208
Inf208
 
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
Valtech - NoSQL, solution alternative ou complémentaire aux bases de données ...
 
REX Storm Redis
REX Storm RedisREX Storm Redis
REX Storm Redis
 
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf
1-12_Introduction_aux_reseaux_de_stockage_SAN.pdf
 
Elasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautésElasticsearch 5.0 les nouveautés
Elasticsearch 5.0 les nouveautés
 

Plus de Mathieu Goeminne

Utilisation de l’IA dans le manufacturing - Retour d'expérience
Utilisation de l’IA dans le manufacturing - Retour d'expérienceUtilisation de l’IA dans le manufacturing - Retour d'expérience
Utilisation de l’IA dans le manufacturing - Retour d'expérienceMathieu Goeminne
 
SMACK : Une pile logicielle open source pour le traitement big data
SMACK : Une pile logicielle open source pour le traitement big dataSMACK : Une pile logicielle open source pour le traitement big data
SMACK : Une pile logicielle open source pour le traitement big dataMathieu Goeminne
 
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...Du capteur à l'amélioration de procédés - Opportunités du machine learning po...
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...Mathieu Goeminne
 
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...Mathieu Goeminne
 
L'intelligence artificielle au sein des entreprises wallonnes
L'intelligence artificielle au sein des entreprises wallonnesL'intelligence artificielle au sein des entreprises wallonnes
L'intelligence artificielle au sein des entreprises wallonnesMathieu Goeminne
 
Intelligence artificielle : la situation dans les entreprises wallonnes
Intelligence artificielle : la situation dans les entreprises wallonnesIntelligence artificielle : la situation dans les entreprises wallonnes
Intelligence artificielle : la situation dans les entreprises wallonnesMathieu Goeminne
 
Introduction au Machine Learning
Introduction au Machine LearningIntroduction au Machine Learning
Introduction au Machine LearningMathieu Goeminne
 
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...Mathieu Goeminne
 

Plus de Mathieu Goeminne (8)

Utilisation de l’IA dans le manufacturing - Retour d'expérience
Utilisation de l’IA dans le manufacturing - Retour d'expérienceUtilisation de l’IA dans le manufacturing - Retour d'expérience
Utilisation de l’IA dans le manufacturing - Retour d'expérience
 
SMACK : Une pile logicielle open source pour le traitement big data
SMACK : Une pile logicielle open source pour le traitement big dataSMACK : Une pile logicielle open source pour le traitement big data
SMACK : Une pile logicielle open source pour le traitement big data
 
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...Du capteur à l'amélioration de procédés - Opportunités du machine learning po...
Du capteur à l'amélioration de procédés - Opportunités du machine learning po...
 
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...
De la collecte des données à l’exploitation de modèles -- Utilisation de SMAC...
 
L'intelligence artificielle au sein des entreprises wallonnes
L'intelligence artificielle au sein des entreprises wallonnesL'intelligence artificielle au sein des entreprises wallonnes
L'intelligence artificielle au sein des entreprises wallonnes
 
Intelligence artificielle : la situation dans les entreprises wallonnes
Intelligence artificielle : la situation dans les entreprises wallonnesIntelligence artificielle : la situation dans les entreprises wallonnes
Intelligence artificielle : la situation dans les entreprises wallonnes
 
Introduction au Machine Learning
Introduction au Machine LearningIntroduction au Machine Learning
Introduction au Machine Learning
 
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...
Co-Evolving Code-Related and Database-related Changes in Data Intensive Softw...
 

Se noyer dans les yeux de Cassandre

  • 1. www.cetic.be Se noyer dans les yeux de Cassandre 1 Mathieu Goeminne
  • 2. www.cetic.be Au programme • AP over C • Les fondations • Modèle de donnée et fonctionnalités • Stockage de la donnée • Réplication et cohérence • Topologie des nœuds • Quelques cas d’utilisation 2
  • 4. www.cetic.be AP over C • Propriétés CAP • Consistency: une donnée n’a qu’un seul état visible. • Availability: Tant que le système tourne, la donnée est disponible. • Partition Tolerance: Quel que soit le nombre de serveurs, toute requête doit fournir un résultat correct. • Théorème CAP • Dans toute BDD distribuée, on ne peut avoir que 2 de ces 3 propriétés. • En réalité, on est plus sur un continuum. 4
  • 7. www.cetic.be Les fondations: Dynamo • Projet d’Amazon (2004) pour un stockage distribué et décentralisé à grande échelle. • Tous les nœuds ont les mêmes responsabilités, pas de nœud spécial pour la maîtrise ou servant de point d’entrée. • Capacités de stockage et de traitement augmentées linéairement par l’ajout de nœuds. • À mi-chemin entre les bases de données et les tables de hashage distribuées (DHTs): Réseau P2P • Résilience aux défaillances: détection de différences entre les nœuds par un arbre de Merkle. • Gestion du cluster par un protocole Gossip: les nœuds en contact s’échangent des « rumeurs » sur la disponibilité des autres nœuds. • AWS DynamoDB est inspiré de ce projet, mais repose sur un nœud maître. 7
  • 8. www.cetic.be Les fondations: Dynamo • Projet d’Amazon (2004) pour un stockage distribué et décentralisé à grande échelle. • Tous les nœuds ont les mêmes responsabilités, pas de nœud spécial pour la maîtrise ou servant de point d’entrée. • Capacités de stockage et de traitement augmentées linéairement par l’ajout de nœuds. • À mi-chemin entre les bases de données et les tables de hashage distribuées (DHTs): Réseau P2P • Résilience aux défaillances: détection de différences entre les nœuds par un arbre de Merkle. • Gestion du cluster par un protocole Gossip: les nœuds en contact s’échangent des « rumeurs » sur la disponibilité des autres nœuds. • AWS DynamoDB est inspiré de ce projet, mais repose sur un nœud maître. 7 ? ? ?
  • 9. www.cetic.be Les fondations: Big Table • Projet de Google (2014) pour une base de données distribuée orientée « wide column store » • [String, String, Timestamp] -> ByteArray • Les tables sont divisées en tablets, sur base des clefs de colonnes. 1 tablet ~= 100 Mo => Distribution => Passage à l’échelle. • Chez Google, repose sur GoogleFS (système de fichier distribué) • A inspiré HBase, Hypertable et Cassandra. 8
  • 10. www.cetic.be Modèle de donnée et fonctionnalités 9
  • 11. www.cetic.be Modèle de donnée et fonctionnalités • Tables de type Map[K1, SortedMap[K2, V]] • Dictionnaire de dictionnaires (ordonnés) de valeurs. • Coutisse/085 => Mme Hedwige => {42, Rue des Éléphants; 085/44.47.19} • Pour accéder à la donnée, connaître K1 est obligatoire. • Connaître K2 est théoriquement facultatif, mais en pratique nécessaire point de vue perf. • Besoin d’organiser les données en fonction des requêtes à venir • Plusieurs organisations de la même donnée • Vues matérialisées possibles • Pas de clef étrangère, de contraintes sur les données. • ~ Pas d’autres index. • Pas de jointures (trop onéreuses dans un environnement distribué) • Dénormalisation privilégiée (⚠ risque pour l’intégrité) 10
  • 12. www.cetic.be Modèle de donnée et fonctionnalités 11
  • 13. www.cetic.be Modèle de donnée et fonctionnalités 11 Clef primaire composée. tag=clef de partition (de ligne) time=clef de clustering Pour chaque tag, les times sont ordonnés.
  • 14. www.cetic.be Modèle de donnée et fonctionnalités 11 Clef primaire composée. tag=clef de partition (de ligne) time=clef de clustering Pour chaque tag, les times sont ordonnés. tag time value quality sensor1 t1 v1 q1 sensor1 t2 v2 q2 sensor2 t3 v3 q3 sensor2 t4 v4 q4 sensor1 t1 t2 value v1 value v2 quality q1 quality q2 sensor2 t3 t4 value v3 value v3 quality q3 quality q4 Ce qu’on voit Ce qui est stocké
  • 17. www.cetic.be Stockage de la donnée 13 Pour la durabilité. Tri par ordre d’arrivée
  • 18. www.cetic.be Stockage de la donnée 13 Pour la durabilité. Tri par ordre d’arrivée Cache rapide. Organisé par K1/K2
  • 19. www.cetic.be Stockage de la donnée 13 Pour la durabilité. Tri par ordre d’arrivée Cache rapide. Organisé par K1/K2 Immuables. Log-structured merge (LSM) tree: indexation rapide et pas chère. Compaction: fusion de SStables
  • 21. www.cetic.be Réplication • Chaque partition est dupliquée sur un nombre paramétrable de nœuds (RF = Replication Factor). • Si plusieurs DC, on peut spécifier un RF par DC. • Typiquement RF=3, 5, … • Affectation sur base de la clef de partition • Les nœuds s’échangent des logs d’activité pour rester synchronisés • La donnée survit à la défaillance de RF-1 nœuds. • Répartition de charge • Si le nombre de nœuds > RF, les nœuds se répartissent les partitions. Passage à l’échelle. • Normalement, RF nœuds peuvent répondre à une requête donnée. 15
  • 22. www.cetic.be Cohérence • « Eventually Consistent »: Une donnée finit par n’avoir qu’un état. Mais ça peut prendre du temps. • On peut choisir le nombre de réplicats « confirmés » (CL) avant de considérer un accès comme un succès: compromis C vs A paramétrable par le client. • ONE, QUORUM, ALL • CL(W) + CL(R) > RF nécessaire pour garantir la cohérence à tout moment. 16
  • 23. www.cetic.be CL et Disponibilité - Pourquoi un RF impair? 17 Nombre de nœuds à atteindre Disponibilité malgré la perte de X nœuds (au moins) RF ONE QUORUM ALL ONE QUORUM ALL 1 1 1 1 0 0 0 2 1 2 2 1 0 0 3 1 2 3 2 1 0 4 1 3 4 3 1 0 5 1 3 5 4 2 0 6 1 4 6 5 2 0 7 1 4 7 6 3 0 8 1 5 8 7 3 0
  • 25. www.cetic.be Topologie des nœuds • L’espace de K1 est composé de 264 (cst) entrées. • Entrées réparties entre N (cst) nœuds virtuels. • VNodes pris en charge par k (dynamique) nœuds « réels ». 19 264-1 264 / 4 264 / 2
  • 26. www.cetic.be Nœuds, Racks et Data Centers 20 • Nœud Rack Data Center. • C* tente de placer les réplicats sur des racks et des DC différents. • Réplication asynchrone automatique ∈ ∈
  • 28. www.cetic.be Situation idéale pour Cassandra • 0 downtime. • Besoin de distribution pour l’effort et le stockage. • BDD multi-site. • Écriture massive, délai avant impact sur la lecture acceptable. • Donnée rarement mise à jour. • Accès à partir d’une clef primaire. • Pas besoin de jointure ou d’agrégation. 22
  • 29. www.cetic.be Quelques cas d’utilisation • Séries chronologiques, IoT, télémétrie • Fonctionnalités TS à implémenter dans le client • Mais le modèle de donnée s’y prête très bien • Map[Capteur, SortedMap[Timestamp, Valeur]] • Ex: Datadog (télémétrie d’infrastructure), Netflix (actions des utilisateurs), TSorage • Chat • Map[Salon, SortedMap[Timestamp, Message]] • Ex: Facebook Messenger (remplacé depuis) • Suivi de status (Achats, colis, health tracker, …) • Map[Item, SortedMap[EventID, Status]] • Ex: Zalando (paniers d’achat, achats proprement dits) 23