Becoming Friends with Cassandra

46
Cassandra, réplication et langage de requête Jonathan Ellis

Transcript of Becoming Friends with Cassandra

Page 1: Becoming Friends with Cassandra

Cassandra, réplication et langage de requête

Jonathan Ellis

Page 2: Becoming Friends with Cassandra

RDBMS & VOUS

Page 3: Becoming Friends with Cassandra

SQLITE, PYTHON SCRIPTS, FICHIERS LOG

EXEMPLE ?

DONNÉES DE PETITE TAILLE

Page 4: Becoming Friends with Cassandra

LA PLUPART DES SITES WEB

RDBMS

DONNÉES DE TAILLE MOYENNE

Page 5: Becoming Friends with Cassandra

RDBMS CONVIENT-IL AUX DONNÉES MASSIVES ?

VOUS BIG DATA

Page 6: Becoming Friends with Cassandra

SCALABILITÉ VERTICALE Taille des

données au démarrage

OH, WHOA, THINGS ARE KICKING UP

Page 7: Becoming Friends with Cassandra

“ACID”, PAS TOUJOURS VRAIATOMICITÉ COHÉRENCE ISOLATION DURABILITÉ

Page 8: Becoming Friends with Cassandra

Cohérence ?

RÉPLICATION ASYNCHRONE != COHÉRENCE

CLIENTMAITRE ESCLAVE

Délai de Réplication

NON! HUH?

Page 9: Becoming Friends with Cassandra

LA 3ÈME FORME NORMALE NE SCALE PAS

HORRIBLE

▸ IMPRÉVISIBLE

▸ DONNÉES >>MÉMOIRE ?

▸ RECHERCHE SUR DISQUE —> LENT

▸ UTILISATEURS MÉCONTENTS

Page 10: Becoming Friends with Cassandra

PARTITIONNER

CLIE

NTCAUCHEMAR

Page 11: Becoming Friends with Cassandra

DISPONIBILITÉ?PAS AVEC CES

TÊTES DE MULE …

Page 12: Becoming Friends with Cassandra

CONCLUSION: GESTION DE LA CROISSANCE DES DONNÉES, PAS SI SIMPLE …

Page 13: Becoming Friends with Cassandra

VOTRE MEILLEUR AMI, CASSANDRA

Page 14: Becoming Friends with Cassandra

ARCHITECTURE

Page 15: Becoming Friends with Cassandra

ARCHITECTURE

PEER TO PEER

▸ Cassandra, architecture Masterless: ni Maître ni Esclave

▸ Chaque noeud gère lui-même ses données

▸ Comment est-ce possible ?

▸ Réplication

▸ Niveau de cohérence

NOEUD1

NOEUD2

NOEUD3

NOEUD4

Page 16: Becoming Friends with Cassandra

RÉSULTAT ?SCALABILITÉ LINÉAIRE

HAUTE DISPONIBILITÉ

Page 17: Becoming Friends with Cassandra

CLIENT

TOPOLOGIE

OPÉRATION

Page 18: Becoming Friends with Cassandra

▸ Le “facteur de réplication” définit le nombre de “copies”

ARCHITECTURE

CASSANDRA DISTRIBUE ET RÉPLIQUE LES DONNÉES

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 19: Becoming Friends with Cassandra

▸ Les copies acquittent auprès du coordinateur;

▸ le coordinateur acquitte auprès du client

ARCHITECTURE

COMMENT ACQUITTE T-ON LES ÉCRITURES ?

COORDINATEUR

ack

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 20: Becoming Friends with Cassandra

ARCHITECTURE

NIVEAUX DE COHÉRENCE AJUSTABLE ?▸ ONE

▸ QUORUM

▸ ALL

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 21: Becoming Friends with Cassandra

ONE

ARCHITECTURE

▸ Une seule copie acquitte

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 22: Becoming Friends with Cassandra

▸ Toutes les copies acquittent

ARCHITECTURE

ALL

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 23: Becoming Friends with Cassandra

ARCHITECTURE

QUORUM▸ Quorum = (somme du facteur de réplication / 2) + 1

▸ Question: combien de copies doivent-ils acquitter si le facteur de réplication est 3 & on veut du quorum?

NOEUD 1

NOEUD 2

NOEUD 3

NOEUD 4

Page 24: Becoming Friends with Cassandra

PARAMÈTRES MULTI-DC▸QUORUL vs. LOCAL_QUORUM

▸ONE vs. LOCA_ONE

US-EAST FR-PARIS

Page 25: Becoming Friends with Cassandra

PARTITIONER

CONSISTENT HASHINGComment les données sont elle réparties sur le cluster en réalité ?

Page 26: Becoming Friends with Cassandra

LA MODÉLISATION DE DONNÉES AVEC CASSANDRA SEMBLE DIFFICILEPAS EXACTEMENT

Page 27: Becoming Friends with Cassandra

KEYSPACE TABLE PARTITION LIGNE

STRUCTURE DE DONNÉES DANS CASSANDRA

Page 28: Becoming Friends with Cassandra

CLÉ PRIMAIRE = CLÉ DE PARTITION + CLUSTERING COLUMNS

Page 29: Becoming Friends with Cassandra

CLÉ DE PARTITION

SEULE MANIÈRE DE LOCALISER LA PARTITION SUR LE CLUSTER

Page 30: Becoming Friends with Cassandra

CLUSTERING COLUMNS

POUR DÉFINIR LE TRI, L’ORDRE ET L’UNICITÉ

Page 31: Becoming Friends with Cassandra

POURQUOI LES CLUSTERING COLUMNS SONT SI EFFICACES ?

Page 32: Becoming Friends with Cassandra

UN EXEMPLE

Page 33: Becoming Friends with Cassandra

CRÉER UN KEYSPACECREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; USE test;

Page 34: Becoming Friends with Cassandra

CRÉER UNE TABLECREATE TABLE timeline (  user_id text,  tweet_id timeuuid,  tweet_author text, tweet_body text,  PRIMARY KEY (user_id, tweet_id));

CLÉ PRIMAIRE EN BLANC

Page 35: Becoming Friends with Cassandra

EXEMPLE DE REQUÊTE D’INSERTIONinsert into timeline (user_id, tweet_id, tweet_author, tweet_body) values ('jbellis', now(), ‘Jonathan Ellis', 'Bonjour Paris!');

Page 36: Becoming Friends with Cassandra

CRÉER UNE TABLECREATE TABLE timeline (  user_id text,  tweet_id timeuuid,  tweet_author text, tweet_body text,  PRIMARY KEY (user_id, tweet_id));

LA CLÉ DE PARTITION PERMET LE ROUTAGE

Page 37: Becoming Friends with Cassandra

PARTITIONER

Page 38: Becoming Friends with Cassandra

CRÉER UNE TABLECREATE TABLE timeline (  user_id text,  tweet_id timeuuid,  tweet_author text, tweet_body text,  PRIMARY KEY (user_id, tweet_id));

QU’EN EST-IL DES CLUSTERING COLUMNS?

Page 39: Becoming Friends with Cassandra

user_id tweet_id _author _body

jbellis 3290f9da.. rbranson loremjbellis 3895411a.. tjake ipsum... ... ...

driftx 3290f9da.. rbranson loremdriftx 71b46a84.. yzhang dolor... ... ...

yukim 3290f9da.. rbranson loremyukim e451dd42.. tjake amet... ... ...

SELECT * FROM timelineWHERE user_id = ’driftx’;

Page 40: Becoming Friends with Cassandra

MODÈLE DE DONNÉES ORIENTÉ REQUÊTE

Page 41: Becoming Friends with Cassandra

LES RDBMS, C’ÉTAIT SI BIEN…

JE N’AVAIS PAS BESOIN DE DÉ-NORMALISER

Page 42: Becoming Friends with Cassandra

MAIS N’OUBLIONS PAS QUE…

Page 43: Becoming Friends with Cassandra

LA 3ÈME FORME NORMALE NE SCALE PAS!

HORRIBLE

▸ LES TRIS GLOBAUX SONT COUTEUX

▸ LES JOINTURES MULTI-MACHINES SONT ENCORE PLUS COUTEUSES

▸ UTILISATEURS MÉCONTENTS !

Page 44: Becoming Friends with Cassandra

PAS DE PANIQUE!

Page 45: Becoming Friends with Cassandra

ROULEMENT DE TAMBOUR …

Page 46: Becoming Friends with Cassandra

MAINTENANT C’EST DUY HAI DOAN !