Professional Documents
Culture Documents
innovation ?
Sommaire
• Introduction
• Théorème CAP
• NoSQL (principes, mécanismes,
démos,...)
• Ce que nous avons constaté
• Recommandations
• Conclusion
2
Octobre 2011
Introduction
Columnus
Primum Relationalus
IBM LOTUS NoSQLausis KeyValueraptor
Adabasolite databasauris
Dominosaurus Armageddon NoSQLausis
2.0
Graphosis
NoSQLausis
Documentaris
!!! N'ont pas disparu et NoSQLausis
ne disparaîtront pas !!!
Smalsopithecus
4
Octobre 2011
5
Octobre 2011
• Facebook:
− Pic de 13 000 000 req db/sec
− 690 milliards de pages vues/mois
− 300 To de données… en cache mémoire
− 25 To de logs par jour
− 1 ingénieur/1,1 millions d’utilisateurs
6
Octobre 2011
Théorème CAP
• Consistency,
Availability,
Partition tolerant
• Conjecture, démontrée A
en 1992 pour les
systèmes distribués CA AP
asynchrones
Choisissez-en deux C P
CP
7
Octobre 2011
Tous les
utilisateurs ont
toujours la même
vue sur toutes les
données
8
Octobre 2011
Est-il toujours
possible de lire
des données et
d'en écrire ?
9
Octobre 2011
L'application peut-
elle survivre à un
partitionnement
du réseau ?
10
Octobre 2011
Théorème CAP
C : OK
A – P : Redondants ?
11
Octobre 2011
Théorème CAP
Ex : PA/EL
12
Octobre 2011
VS
CAP PACELC
Simple Complexe
Flou Clair
© http://buzzworld.fr/
Deux manières différentes pour exprimer la
même chose.
13
Octobre 2011
14
Octobre 2011
• Souvent
− très scalables
− non-relationnelles
− très spécifiques
− sans schéma
15
Octobre 2011
NoSQL : Et ça marche ?
• Oui mais…
18
Octobre 2011
NoSQL : Et ça marche ?
• Oui mais…
• … pas une solution miracle
• Plusieurs mécanismes (souvent
simples) pour améliorer la scalabilité
et/ou la haute disponibilité
19
Octobre 2011
Partitionnement
Réplication (+ Quorum)
20
Octobre 2011
• Découpage des
données en vue de
les distribuer
• Pas nouveau
• Mais… différentes
manières de procéder
21
Octobre 2011
• Au moins deux
instances de chaque
donnée
• Pas nouveau
• Mais… différentes
manières de procéder
22
Octobre 2011
23
Octobre 2011
24
Octobre 2011
• Consistent hashing
N1-1
C A
N2-1 B
25
Octobre 2011
N8- N3-
N7- N3- 1 1
1 1
N7- N4-
N6- N4- 1 1
1 1
N5- N6- N5-
1 1 1
26
Octobre 2011
N1-1
N1-1
C A C A
N3-2 N2-1
N2-1 B B
27
Octobre 2011
• Consistent hashing +
N1-1
réplication
A
• Relativement simple
G C B
• Chaque nœud sait B D
où se trouve
N4-1 N2-1
chaque donnée F A E C
G F
E D
N3-1
28
Octobre 2011
Inst 2 Inst 5
Inst 3 Inst 6
29
Octobre 2011
SE = 3 SL = 2
Inst 1 Inst 1
Inst 2 Inst 2
Inst 3 Inst 3
Inst 4 Inst 4
Inst 5 Inst 5
Inst 6 Inst 6
30
Octobre 2011
X
SL + SE
Performances Consistance
SE Ecritures rapides
X
SL Lectures rapides
32
Octobre 2011
33
Octobre 2011
• Vector clocks
• …
• Laissons cela en
annexe
34
Octobre 2011
GG 0A
FF 8Z
TT 4P
NN 5M
35
Octobre 2011
• Clé / Valeur
− (K/V)
• Orientées colonnes
− (COL)
• Orientées documents
− (DOC)
• Orientées graphes
− (GR) K/V COL
DOC GR
© http://www.paramount.com/ 36
Octobre 2011
NoSQL : caractérisation
REL = RDBMS
37
Octobre 2011
NoSQL : caractérisation
http://blog.nahurst.com/visual-guide-to-nosql-systems
Tokyo Cabinet
FlockDB Riak
K/V COL
SimpleDB
REL
DOC GR
NoSQL : caractérisation
• CA – AP – CP
• 12 types de DB…
• … diverses architectures et modes © http://www.paramount.com/
39
Octobre 2011
NoSQL : caractérisation
Tokyo Cabinet
FlockDB Riak
K/V COL
SimpleDB
REL
DOC GR
NoSQL : caractérisation
Tokyo Cabinet
Cassandra
NEO4J
CouchDB
DOC GR
Redis
41
Octobre 2011
NoSQL : Clé-Valeur
Key Value
42
Octobre 2011
NoSQL : Clé-Valeur
• Caractéristiques :
− Simples
− Interface pauvre (peu de commandes)
− Très performantes
• Remarques :
− Partitionnement des données pas toujours pris
en charge par la DB
43
Octobre 2011
NoSQL : Clé-Valeur
44
Octobre 2011
NoSQL : Clé-Valeur
• DEMOS
Tokyo Cabinet
K/V COL
DOC GR
MemcacheDB
Redis
45
Octobre 2011
K1 C1 : V C2 : V C3 : V
K2 C1 : V C3 : V C6 : V C8 : V
46
Octobre 2011
K C1 : V C2 : V C3 : V C4 : V C5 : V
47
Octobre 2011
• Caractéristiques :
− Gestion d'un très grand nombre de colonnes
(plusieurs millions)
− Requêtes minimalistes
• Remarques :
− Absolument pas prévu pour le relationnel
difficile à exploiter pour les gens habitués aux
RDBMS
48
Octobre 2011
• DEMOS
Cassandra
K/V COL
DOC GR
Hypertable
50
Octobre 2011
Pause
A := #persons_before_pause
B := #persons_after_pause
IF A > B THEN
presentation_quality := bad
ELSE
presentation_quality := normal
IF B > A THEN
attenders_punctuality := bad
51
Octobre 2011
F = Field
Documents structurés sans
schémas prédéfinis V = Value
K = Key
F1 : V
F1 : V
F2 : V, V, V
F2 : V
F3 : V
K K F3 : V, V
F4 : V, V
F4 : V
F5 : V
F5 : V
F6 : V
52
Octobre 2011
• Caractéristiques :
− Très flexibles
− Syntaxe parfois très riche
− Bien adapté au monde du Web
53
Octobre 2011
• DEMOS
CouchDB
K/V COL
DOC GR
MongoDB
55
Octobre 2011
N = Noeud
Graphes orientés
N2
N1 N3
N5 N4
56
Octobre 2011
• Caractéristiques
− Parfois optimisées pour la résolution de
problèmes complexes et non pour les
performances
• Remarque
− Peu de solutions intéressantes à ce jour
57
Octobre 2011
• DEMOS
NEO4J
DOC GR
59
Octobre 2011
NoSQL : Récapitulatif
K/V COL
Key Value K1 C1 : V C2 : V C3 : V
F1 : V N2
F2 : V, V, V
F3 : V N1 N3
K
F4 : V, V
F5 : V
F6 : V N5 N4
DOC GR
60
Octobre 2011
NoSQL : Récapitulatif
K/V COL
Données chronologiques
Cache site Web
(log système, dossier
Stockage données
médical)
élémentaires
Relations One-to-Many
NoSQL : Récapitulatif
Tokyo Cabinet
FlockDB Riak
K/V COL
SimpleDB
REL
DOC GR
63
Octobre 2011
64
Octobre 2011
65
Octobre 2011
• Incompréhension • Réticence
66
Octobre 2011
Recommandations
Recommandations
68
Octobre 2011
FlockDB Riak
K/V COL
SimpleDB
REL
DOC GR
Conclusion
70
Octobre 2011
Conclusion
71
Octobre 2011
Conclusion
• Hype et innovation
72
Octobre 2011
Questions ?
73