Cassandra
Qui suis je?
@gerald_quintana
Zenika Lyon
Cassandra Trainer
En quelques mots
● Distribuée
● Master-less
● Scalabilité linéaire
● Tolérance aux pannes
● Performances
● Consistance rég...
Cas d’utilisations
Distribution
Distribution
Réplication
Elasticité
Virtual nodes
Scalabilité linéaire
http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html
Coordination
Multi-datacenter
Consistance
Consistance
Consistance
Consistance
Consistance
Modèle orienté colonnes
CQL
CREATE TABLE utilisateur(
id_utilisateur UUID,
login VARCHAR,
date_naissance TIMESTAMP,
roles SET<VARCHAR>,
PRIMARY KE...
Modèle orienté colonnes
Map<PartitionKey, SortedMap<ColumnKey, ColumnValue>>
CQL
CREATE TABLE message(
id_utilisateur UUID,
id_message TIMEUUID,
message VARCHAR,
PRIMARY KEY (id_utilisateur, id_messa...
Performances
● Ecriture : Append-only + Compaction
● Lecture : Modélisation, Réplication, Cache
Installation
● Pré-requis: Linux, Java, Python, NTP
● 1 seul process, 1 seul type de noeud
Cassandra et DataStax
● Apache Cassandra 2.1.6
● DataStax Community 2.1.6
+ Intégration OpsCenter Community
+ Package RPM,...
Prochain SlideShare
Chargement dans…5
×

Cassandra Lyon JUG

919 vues

Publié le

Présentation Cassandra au Lyon JUG le 15/06/2015

0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

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

Aucune remarque pour cette diapositive
  • Distribué = cluster, != si vos données tiennent dans un smartphone
    Masterless ~= peer to peer, décentralisée, pas d’élection de maître
  • Grosse structures/Startup Local/International
    Catalogues, collections, playlist
    Recommandation, personnalisation
    Détection de fraude
    Messagerie
    Objets connectés, capteurs

  • Distribution ou partitionning
    On ne configure pas un nombre de partition/shards
    Token: entier 128bits
    Plage de tokens: disjointes et contigües

  • Les données sont distribuées de manière homogène
  • Tolérance aux pannes
    Distribution de la charge
    Rack-awereness
  • Adapter la taille en fonction de la charge
  • Différent d'un master
    Load balancing et failover de la charge de coordination
    Load balancing et failover pour l’accès aux réplicas
  • Découpage Géographique ou Logique
    Placement des réplicas et Facteur de réplication
    Cloud: Google, Amazon , CloudStack

  • Write CL ALL
    Concurrence Last Write Wins
  • Write CL ONE
    Hinted handoff
  • Read CL ALL
    Read repair
  • Read CL ONE
  • En pratique One est un bon choix
    Consistance par requête et par datacenter
  • Create: type composite, pas de contrainte
    Insert: pas de contrainte, CAS
    Select: pas de join/group by/like, alternatives dénormaliser, SolR, Spark SQL
  • Ecritures disque séquentielle vs aléatoire
    Pas de Read-before-Write
  • Cassandra Lyon JUG

    1. 1. Cassandra
    2. 2. Qui suis je? @gerald_quintana Zenika Lyon Cassandra Trainer
    3. 3. En quelques mots ● Distribuée ● Master-less ● Scalabilité linéaire ● Tolérance aux pannes ● Performances ● Consistance réglable ● Multi-datacenter
    4. 4. Cas d’utilisations
    5. 5. Distribution
    6. 6. Distribution
    7. 7. Réplication
    8. 8. Elasticité
    9. 9. Virtual nodes
    10. 10. Scalabilité linéaire http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html
    11. 11. Coordination
    12. 12. Multi-datacenter
    13. 13. Consistance
    14. 14. Consistance
    15. 15. Consistance
    16. 16. Consistance
    17. 17. Consistance
    18. 18. Modèle orienté colonnes
    19. 19. CQL CREATE TABLE utilisateur( id_utilisateur UUID, login VARCHAR, date_naissance TIMESTAMP, roles SET<VARCHAR>, PRIMARY KEY (id_utilisateur) ); INSERT INTO utilisateur(id_utilisateur, login, date_naissance, roles) VALUES ('abc123...', 'jdoe', '1978-04-06',{'blogger','geek'}); SELECT * FROM utilisateur WHERE id_utilisateur='abc123...';
    20. 20. Modèle orienté colonnes Map<PartitionKey, SortedMap<ColumnKey, ColumnValue>>
    21. 21. CQL CREATE TABLE message( id_utilisateur UUID, id_message TIMEUUID, message VARCHAR, PRIMARY KEY (id_utilisateur, id_message) ); INSERT INTO message(id_utilisateur, id_message, message) VALUES ('abc123...', now(),'Vive Cassandra'); SELECT * FROM message WHERE id_utilisateur='abc123...'; SELECT message FROM message WHERE id_utilisateur='abc123...' AND id_message='cde456...';
    22. 22. Performances ● Ecriture : Append-only + Compaction ● Lecture : Modélisation, Réplication, Cache
    23. 23. Installation ● Pré-requis: Linux, Java, Python, NTP ● 1 seul process, 1 seul type de noeud
    24. 24. Cassandra et DataStax ● Apache Cassandra 2.1.6 ● DataStax Community 2.1.6 + Intégration OpsCenter Community + Package RPM, DEB, MSI ● DataStax Enterprise 4.7 + Intégration Hadoop & Spark + Intégration SolR + Sécurité avancée : Kerberos, cryptage... + In memory + Support

    ×