Introduction à Cassandra
Big data & NoSQL
1 / 35
1.  Big Data
2.  NoSQL
3.  Architecture de Cassandra
4.  Développer avec CQL
Objectifs
2 / 35
Big Data
Big data is high­volume, high­velocity and high­variety information
assets that demand cost­effective, innovative...
Big Data
Traitements en Batch ou Flux
Forts volumes
Performances
Haute­disponibilité
4 / 35
SQL or NoSQL?
Not using the relational model (nor the SQL language).
Open source.
Designed to run on large clusters
Based ...
Relationnel
Clé­Valeur
Document
Colonnes Cassandra
Graphe
Mixte
Modèles de données
6 / 35
ACID
Atomicity
Cohérence
Isolation
Durability
BASE
Basically Available
Soft state
Eventual consistency
ACID ou BASE?
7 / 35
Consistency
Availability
Partition tolerance
CAP
8 / 35
CAP
9 / 35
Cassandra en résumé
Distribuée
Masterless: pas de SPOF
Scalabilité linéaire
Tolérance aux pannes: 100% uptime
Performances...
Les origines
11 / 35
Plage de Tokens
Distribution
12 / 35
Hachage consistant
Distribution
13 / 35
Réplication
14 / 35
Scalabilité
15 / 35
Scalabilité linéaire
http://techblog.netflix.com/2011/11/benchmarking­cassandra­scalability­on.html
16 / 35
Noeuds virtuels
17 / 35
Node∈Rack∈Datacenter
Decoupage
Géographique
Logique
Cloud
Multi-datacenter
18 / 35
Coordinateur
19 / 35
Timestamp par cellule
Consistance ALL: Ecriture
20 / 35
Tolérance aux pannes
Hinted Handoff
Consistance ONE: Ecriture
21 / 35
Last write wins
Read repair
Consistance ALL: Lecture
22 / 35
Eventual consistency
Consistance ONE: Lecture
23 / 35
Consistance réglable
Niveau de consistance par requête
24 / 35
Consistance immédiate
R + W > RF
Consistance au final
R + W ≤ RF
Consistance: le bilan
25 / 35
Pour l'écriture
Append only + compaction
Pas de disk seek
Pour la lecture
Réplication & Load balancing
Modélisation adapté...
Simplicité opérationnelle
Installation
Linux, Java, Python, NTP
Packaging: .tar, .rpm, .deb, .exe
2­3 fichiers de configur...
Simplicité pour le développement
CQL = SQL simplifié
cqlsh
DevCenter
CCM, un cluster en local
28 / 35
CQL
CREATETABLEutilisateur(
id_utilisateurUUID,
loginVARCHAR,
date_naissanceTIMESTAMP,
rolesSET<VARCHAR>,
PRIMARYKEY(id_ut...
Modèle orienté colonne
Table utilisateur 
30 / 35
CQL Grandes lignes
CREATETABLEmessage(
id_utilisateurUUID,
id_messageTIMEUUID,
messageVARCHAR,
PRIMARYKEY(id_utilisateur,i...
Modèle orienté colonne
Table utilisateur 
Table message 
Map<RowKey, SortedMap<ColumnKey, ColumnValue>>
32 / 35
Modélisation
Dénormaliser!
Besoin → Requête → Table
Adapter les données aux requêtes (pas l'inverse)
33 / 35
Driver
Load balancing, tolérance aux pannes, découverte
Synchrone ou asynchrone (réactive programming)
Librairies Java:
Ob...
Questions
35 / 35
Prochain SlideShare
Chargement dans…5
×

Introduction à Cassandra

399 vues

Publié le

Intr

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
399
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
12
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Introduction à Cassandra

  1. 1. Introduction à Cassandra Big data & NoSQL 1 / 35
  2. 2. 1.  Big Data 2.  NoSQL 3.  Architecture de Cassandra 4.  Développer avec CQL Objectifs 2 / 35
  3. 3. Big Data Big data is high­volume, high­velocity and high­variety information assets that demand cost­effective, innovative forms of information processing for enhanced insight and decision making. Gartner 3 / 35
  4. 4. Big Data Traitements en Batch ou Flux Forts volumes Performances Haute­disponibilité 4 / 35
  5. 5. SQL or NoSQL? Not using the relational model (nor the SQL language). Open source. Designed to run on large clusters Based on the needs of 21st century web properties No schema, allowing fields to be added to any record without controls http://martinfowler.com/bliki/NosqlDefinition.html 5 / 35
  6. 6. Relationnel Clé­Valeur Document Colonnes Cassandra Graphe Mixte Modèles de données 6 / 35
  7. 7. ACID Atomicity Cohérence Isolation Durability BASE Basically Available Soft state Eventual consistency ACID ou BASE? 7 / 35
  8. 8. Consistency Availability Partition tolerance CAP 8 / 35
  9. 9. CAP 9 / 35
  10. 10. Cassandra en résumé Distribuée Masterless: pas de SPOF Scalabilité linéaire Tolérance aux pannes: 100% uptime Performances Consistance réglable Multi­datacenter Simplicité opérationnelle 10 / 35
  11. 11. Les origines 11 / 35
  12. 12. Plage de Tokens Distribution 12 / 35
  13. 13. Hachage consistant Distribution 13 / 35
  14. 14. Réplication 14 / 35
  15. 15. Scalabilité 15 / 35
  16. 16. Scalabilité linéaire http://techblog.netflix.com/2011/11/benchmarking­cassandra­scalability­on.html 16 / 35
  17. 17. Noeuds virtuels 17 / 35
  18. 18. Node∈Rack∈Datacenter Decoupage Géographique Logique Cloud Multi-datacenter 18 / 35
  19. 19. Coordinateur 19 / 35
  20. 20. Timestamp par cellule Consistance ALL: Ecriture 20 / 35
  21. 21. Tolérance aux pannes Hinted Handoff Consistance ONE: Ecriture 21 / 35
  22. 22. Last write wins Read repair Consistance ALL: Lecture 22 / 35
  23. 23. Eventual consistency Consistance ONE: Lecture 23 / 35
  24. 24. Consistance réglable Niveau de consistance par requête 24 / 35
  25. 25. Consistance immédiate R + W > RF Consistance au final R + W ≤ RF Consistance: le bilan 25 / 35
  26. 26. Pour l'écriture Append only + compaction Pas de disk seek Pour la lecture Réplication & Load balancing Modélisation adaptée → Accès direct Caches par table Performances 26 / 35
  27. 27. Simplicité opérationnelle Installation Linux, Java, Python, NTP Packaging: .tar, .rpm, .deb, .exe 2­3 fichiers de configuration 1 seul processus 1 seul type de noeud Monitoring nodetool, JMX, OpsCenter 27 / 35
  28. 28. Simplicité pour le développement CQL = SQL simplifié cqlsh DevCenter CCM, un cluster en local 28 / 35
  29. 29. CQL CREATETABLEutilisateur( id_utilisateurUUID, loginVARCHAR, date_naissanceTIMESTAMP, rolesSET<VARCHAR>, PRIMARYKEY(id_utilisateur) ); INSERTINTOutilisateur(id_utilisateur,login, date_naissance,roles) VALUES('abc123...','jdoe', '1978-04-06',{'blogger','journaliste'}); SELECT*FROMutilisateur WHEREid_utilisateur='abc123...'; 29 / 35
  30. 30. Modèle orienté colonne Table utilisateur  30 / 35
  31. 31. CQL Grandes lignes CREATETABLEmessage( id_utilisateurUUID, id_messageTIMEUUID, messageVARCHAR, PRIMARYKEY(id_utilisateur,id_message) ); INSERTINTOmessage(id_utilisateur,id_message) VALUES('abc123...',now(),'ViveCassandra'); SELECT*FROMutilisateur WHEREid_utilisateur='abc123...'; SELECTmessageFROMutilisateur WHEREid_utilisateur='abc123...'ANDid_message='cde456...'; 31 / 35
  32. 32. Modèle orienté colonne Table utilisateur  Table message  Map<RowKey, SortedMap<ColumnKey, ColumnValue>> 32 / 35
  33. 33. Modélisation Dénormaliser! Besoin → Requête → Table Adapter les données aux requêtes (pas l'inverse) 33 / 35
  34. 34. Driver Load balancing, tolérance aux pannes, découverte Synchrone ou asynchrone (réactive programming) Librairies Java: ObjectMapper, Achilles, Spring Data Cassandra... Cassandra Unit, Stubbed Cassandra 34 / 35
  35. 35. Questions 35 / 35

×