Introduction à Cassandra

35
Introduction à Cassandra Big data & NoSQL 1 / 35

Transcript of Introduction à Cassandra

Introduction à CassandraBig data & NoSQL

1 / 35

1.  Big Data2.  NoSQL3.  Architecture de Cassandra4.  Développer avec CQL

Objectifs

2 / 35

Big DataBig data is high­volume, high­velocity and high­variety informationassets that demand cost­effective, innovative forms of informationprocessing for enhanced insight and decision making.

Gartner

3 / 35

Big DataTraitements en Batch ou FluxForts volumesPerformancesHaute­disponibilité

4 / 35

SQL or NoSQL?Not using the relational model (nor the SQL language).Open source.Designed to run on large clustersBased on the needs of 21st century web propertiesNo schema, allowing fields to be added to any record without controls

http://martinfowler.com/bliki/NosqlDefinition.html

5 / 35

Relationnel

Clé­Valeur

Document

Colonnes Cassandra

Graphe

Mixte

Modèles de données

6 / 35

ACID

AtomicityCohérenceIsolationDurability

BASE

Basically AvailableSoft stateEventual consistency

ACID ou BASE?

7 / 35

ConsistencyAvailabilityPartition tolerance

CAP

8 / 35

CAP

9 / 35

Cassandra en résuméDistribuéeMasterless: pas de SPOFScalabilité linéaireTolérance aux pannes: 100% uptimePerformancesConsistance réglableMulti­datacenterSimplicité opérationnelle

10 / 35

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∈DatacenterDecoupage

GéographiqueLogique

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églableNiveau 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'écritureAppend only + compactionPas de disk seek

Pour la lectureRéplication & Load balancingModélisation adaptée → AccèsdirectCaches par table

Performances

26 / 35

Simplicité opérationnelleInstallation

Linux, Java, Python, NTPPackaging: .tar, .rpm, .deb, .exe2­3 fichiers de configuration1 seul processus1 seul type de noeud

Monitoringnodetool, JMX, OpsCenter

27 / 35

Simplicité pour le développementCQL = SQL simplifiécqlshDevCenterCCM, un cluster en local

28 / 35

CQLCREATE 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','journaliste'});

SELECT * FROM utilisateur WHERE id_utilisateur='abc123...';

29 / 35

Modèle orienté colonne

Table utilisateur 

30 / 35

CQL Grandes lignesCREATE TABLE message( id_utilisateur UUID, id_message TIMEUUID, message VARCHAR, PRIMARY KEY (id_utilisateur, id_message));

INSERT INTO message(id_utilisateur, id_message) VALUES ('abc123...', now(),'Vive Cassandra');

SELECT * FROM utilisateur WHERE id_utilisateur='abc123...';SELECT message FROM utilisateur WHERE id_utilisateur='abc123...' AND id_message='cde456...';

31 / 35

Modèle orienté colonne

Table utilisateur 

Table message 

Map<RowKey, SortedMap<ColumnKey, ColumnValue>>

32 / 35

ModélisationDénormaliser!Besoin → Requête → TableAdapter les données aux requêtes (pas l'inverse)

33 / 35

Driver

Load balancing, tolérance aux pannes, découverteSynchrone ou asynchrone (réactive programming)Librairies Java:

ObjectMapper, Achilles, Spring Data Cassandra...Cassandra Unit, Stubbed Cassandra

34 / 35

Questions

35 / 35