Introduction à Cassandra

402 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
402
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
13
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

×