Becoming Friends with Cassandra
-
Upload
datastax -
Category
Technology
-
view
208 -
download
0
Transcript of Becoming Friends with Cassandra
Cassandra, réplication et langage de requête
Jonathan Ellis
RDBMS & VOUS
SQLITE, PYTHON SCRIPTS, FICHIERS LOG
EXEMPLE ?
DONNÉES DE PETITE TAILLE
LA PLUPART DES SITES WEB
RDBMS
DONNÉES DE TAILLE MOYENNE
RDBMS CONVIENT-IL AUX DONNÉES MASSIVES ?
VOUS BIG DATA
SCALABILITÉ VERTICALE Taille des
données au démarrage
OH, WHOA, THINGS ARE KICKING UP
“ACID”, PAS TOUJOURS VRAIATOMICITÉ COHÉRENCE ISOLATION DURABILITÉ
Cohérence ?
RÉPLICATION ASYNCHRONE != COHÉRENCE
CLIENTMAITRE ESCLAVE
Délai de Réplication
NON! HUH?
LA 3ÈME FORME NORMALE NE SCALE PAS
HORRIBLE
▸ IMPRÉVISIBLE
▸ DONNÉES >>MÉMOIRE ?
▸ RECHERCHE SUR DISQUE —> LENT
▸ UTILISATEURS MÉCONTENTS
PARTITIONNER
CLIE
NTCAUCHEMAR
DISPONIBILITÉ?PAS AVEC CES
TÊTES DE MULE …
CONCLUSION: GESTION DE LA CROISSANCE DES DONNÉES, PAS SI SIMPLE …
VOTRE MEILLEUR AMI, CASSANDRA
ARCHITECTURE
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
RÉSULTAT ?SCALABILITÉ LINÉAIRE
HAUTE DISPONIBILITÉ
CLIENT
TOPOLOGIE
OPÉRATION
▸ 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
▸ 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
ARCHITECTURE
NIVEAUX DE COHÉRENCE AJUSTABLE ?▸ ONE
▸ QUORUM
▸ ALL
NOEUD 1
NOEUD 2
NOEUD 3
NOEUD 4
ONE
ARCHITECTURE
▸ Une seule copie acquitte
NOEUD 1
NOEUD 2
NOEUD 3
NOEUD 4
▸ Toutes les copies acquittent
ARCHITECTURE
ALL
NOEUD 1
NOEUD 2
NOEUD 3
NOEUD 4
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
PARAMÈTRES MULTI-DC▸QUORUL vs. LOCAL_QUORUM
▸ONE vs. LOCA_ONE
US-EAST FR-PARIS
PARTITIONER
CONSISTENT HASHINGComment les données sont elle réparties sur le cluster en réalité ?
LA MODÉLISATION DE DONNÉES AVEC CASSANDRA SEMBLE DIFFICILEPAS EXACTEMENT
KEYSPACE TABLE PARTITION LIGNE
STRUCTURE DE DONNÉES DANS CASSANDRA
CLÉ PRIMAIRE = CLÉ DE PARTITION + CLUSTERING COLUMNS
CLÉ DE PARTITION
SEULE MANIÈRE DE LOCALISER LA PARTITION SUR LE CLUSTER
CLUSTERING COLUMNS
POUR DÉFINIR LE TRI, L’ORDRE ET L’UNICITÉ
POURQUOI LES CLUSTERING COLUMNS SONT SI EFFICACES ?
UN EXEMPLE
CRÉER UN KEYSPACECREATE KEYSPACE test WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}; USE test;
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
EXEMPLE DE REQUÊTE D’INSERTIONinsert into timeline (user_id, tweet_id, tweet_author, tweet_body) values ('jbellis', now(), ‘Jonathan Ellis', 'Bonjour Paris!');
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
PARTITIONER
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?
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’;
MODÈLE DE DONNÉES ORIENTÉ REQUÊTE
LES RDBMS, C’ÉTAIT SI BIEN…
JE N’AVAIS PAS BESOIN DE DÉ-NORMALISER
MAIS N’OUBLIONS PAS QUE…
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 !
PAS DE PANIQUE!
ROULEMENT DE TAMBOUR …
MAINTENANT C’EST DUY HAI DOAN !