Gestion des transactions et propriétés ACID
Gestion des transactions et propriétés ACID
Requête Requête
SCN = 6
D = 15 SCN=1
Requête
SCN = 7
Données SCN = 7 C = 11 SCN=3
D = 15 SCN=1
SCN = 8 Transaction
SCN = 9 Données
SCN = 8 Transaction
SCN = 8
Ecriture A=20
Requête
SCN = 9 Écriture A=20
SCN = 9
Lecture A=10 Commit Lecture A=10
Requête
Commit
SCN = 9
A = 20 SCN=10
Requête
SCN = 10
A = 10 SCN=5 A = 20 SCN=10 A = 10 SCN=5
SCN = 10
B = 13 SCN=7 B = 13 SCN=7
Lecture A=10
SCN = 11
C = 11 SCN=3 Lecture A=10
C = 11 SCN=3
SCN = 11
D = 15 SCN=1 D = 15 SCN=1
Lecture A=20
Requête
SCN = 11
Requête
Lecture A=10
Chronologie
Chronologie
Écriture A=30 Données Images avant la transaction ne peut
Écriture A=30 Données Images avant
pas être sérialisée…
Commit
27 28
Cas Défavorable (1) Cas Défavorable (2)
COORDINATEUR
COORDINATEUR PARTICIPANT
PARTICIPANT
PARTICIPANT
PARTICIPANT
PREPARE PREPARE
PREPARE PREPARE READY READY
COMMIT COMMIT
ACK
READY KO
ABORT ABORT KO ou absence de ??
réponse après timeout COMMIT
ACK
sont traités uniformément ACK
ACK
P. Pucheral Modèles de transactions avancés - 37 P. Pucheral Modèles de transactions avancés - 38
Cas très défavorable (3)
COORDINATEUR
PARTICIPANT PARTICIPANT
Transactions dans les systèmes
PREPARE PREPARE
READY READY
NoSQL
?? ??
scalabilité au
détriment de la cohérence
En cas de panne du coordinateur pendant la phase d'incertitude
des participants (entre l'envoi du Ready et l'attente de la réponse),
les participants sont bloqués => protocole BLOQUANT
Standard OSI-TP : décision heuristique !
P. Pucheral Modèles de transactions avancés - 39 P. Pucheral Modèles de transactions avancés - 40
Atomicité globale
• Garantir qu'un ensemble de mises à jour sur plusieurs sites est
totalement exécuté ou pas du tout
• Nécessite un protocole de validation atomique (ACP)
• Exemple: transfert d'argent entre deux comptes gérés par
deux agences bancaires distinctes
Protocoles
Commit (Ti) site A
transactionnels distribués Serveur
DB
débit(C1,M) site B
Application crédit(C2,M)
DB
Serveur
Commit (Ti)
P. Pucheral Modèles de transactions avancés - 34
33
Validation à 2 Phases (2PC) Cas Favorable
Coordinateur :
COORDINATEUR
Le composant système du site qui centralise et pilote le protocole
PARTICIPANT PARTICIPANT
Participant :
Le composant système d'un site qui participe à l'exécution de la
transaction PREPARE PREPARE
... READY Sauvegarde des MAJ
READY de la transaction
Phase de vote : Le coordinateur demande à tous les participants s'ils dans un journal
COMMIT COMMIT
sont capables de valider la transaction
Phase de décision : Le coordinateur décide la validation si TOUS les ... ACK ACK
Validation des MAJ
participants votent OK. Il décide l'abandon sinon. de la transaction
dans la base de
données
Ce protocole doit être tolérant aux pannes
P. Pucheral Modèles de transactions avancés - 35 P. Pucheral Modèles de transactions avancés - 36
Propriétés BASE :
un compromis entre disponibilité et cohérence
Basically Available
Le système est toujours disponible (i.e., toutes les operations de
lecture/écriture aboutissent)
Soft state
L’état du système peut changer au cours du temps (i.e., même en
l’absence de mises à jour de l’observateur)
Eventual consistency
En l’absence de nouvelles mises à jour, les copies d’un même objet sur
l’ensemble des sites finissent par converger vers une même valeur
Se substituent aux propriétés ACID classiques
PS : 1 transaction = 1 lecture/écriture ‘unique’ sur
un ‘document’ unique
P. Pucheral Modèles de transactions avancés - 45 P. Pucheral Modèles de transactions avancés - 46
Sérialisabilité et convergence Propagation synchrone (Eager)
dépendent du modèle de réplication
• Les mises à jour sur un objet sont reportées dans la même
transaction, sur l'ensemble de ses réplicas
• 2 modes de propagation des mises à jour
– Synchrone (Eager) Transaction T
– Asynchrone (Lazy) site S1 site S2 site S3
• 2 modes de contrôle des copies write A1
write A2
– Symétrique (Update Everywhere) write A3
write B1
– Asymétrique (maître-esclave) write B2
write B3
• Donc, 4 modèles de réplication commit
commit
– synchrone/symétrique (SS) commit
– synchrone/asymétrique (SA)
– asynchrone/symétrique (AS) • Garantit la sérialisabilité à une copie (cohérence parfaite) mais
– asynchrone/asymétrique (AA)
• coût d’une validation atomique
• impose une connexion permanente à tous les sites
P. Pucheral Modèles de transactions avancés - 47 P. Pucheral Modèles de transactions avancés - 48
Théorème CAP [Brewer’00,Lynch&Gilbert’02] Démonstration
• Scalabilité des systèmes NoSQL nombre de sites
dynamique et grand, replication systématique
• Or un système distribué ne peut pas garantir en
même temps : 1
– Consistency
» Tous les sites voient le même état des données en même
temps
– Availability
» Toutes les requêtes de lecture et écriture aboutissent (avec
succès ou échec)
– Partition Tolerance
» Le système continue à fonctionner malgré des pertes de
message
P. Pucheral Modèles de transactions avancés - 41 P. Pucheral Modèles de transactions avancés - 42
Solutions possibles Réplication : no Single Point of Failure
(cf cours sur la cohérence)
Relational DBMSs
Dynamo
CouchDB
C: Consistency
A: Availability
P: Partition tolerance
P. Pucheral Modèles de transactions avancés - 43 P. Pucheral
BigTable HBASE Modèles de transactions avancés - 44
Réplication dans Cassandra Réplication dans Cassandra
• Modèle Symétrique / (A)synchrone
– Fonctionnement Pair-à-Pair pas de maître/esclave • Paramètres
– Mais on peut imposer un certain synchronisme entre replicas – RF: facteur de replication (du keyspace)
(i.e., plusieurs replicas doivent valider une /lecture/écriture
avant acquittement au client) – R: nb de replicas lus
– W: nb de replicas écrits
– Quorum Q = RF/2 + 1
• Différents choix possibles
– Exemple pour R (resp. W) = 1, on renvoit au client la 1ère
réponse reçue d’un replica
• W + R > RF garantit la cohérence
– R=1, W=RF (ROWA: Read Once Write All)
– R=RF, W=1
– R=Q, W=Q
P. Pucheral Modèles de transactions avancés - 53 P. Pucheral Modèles de transactions avancés - 54
Réplication dans Cassandra Réplication dans Cassandra
• Le niveau de cohérence souhaité peut être un
paramètre du keyspace ou de la requête de
mise à jour
Source : [Link]
P. Pucheral Modèles de transactions avancés - 55 P. Pucheral Modèles de transactions avancés - 56
Propagation asynchrone (Lazy) Contrôle symétrique vs. asymétrique
• Les mises à jour sur un objet sont reportées sur • Symétrique (update everywhere): tout site est
ses réplicas en mode différé, par le biais de autorisé à mettre à jour sa copie locale d'un objet
transactions indépendantes Update A Update A
T1 sur S1
write A1 A1 A2
write B1
commit T2 sur S2
Update A A3
write A2
write B2
commit • Asymétrique (primary copy): seule la copie maître peut
T3 sur S3
write A3
être mise à jour, les autres copies sont en lecture seule
write B3
Update A
commit Update A
Update A A1 A2
• La cohérence des copies dépend du mode de contrôle choisi
(symétrique ou asymétrique)
A3
P. Pucheral Modèles de transactions avancés - 49 P. Pucheral Modèles de transactions avancés - 50
Bilan (suite) Réplication dans MongoDB
• Modèle Asymétrique (maître-esclave) / Asynchrone
– S’applique à des Replica-Sets (ensembles de documents)
• 2 niveaux de cohérence possibles
– Cohérence forte : toutes les lectures sont dirigées vers le maître
– Cohérence à terme : lectures possibles sur les esclaves
• Envois de messages ‘heartbeat’ entre nœuds pour détecter les
pannes
– En cas de panne du maître, élection d’un nouveau maître
– Toute panne de nœud génère la création automatique d’un nouveau replica
Source Philippe Rigaux
P. Pucheral Modèles de transactions avancés - 51 P. Pucheral Modèles de transactions avancés - 52
Exemple avec RF = 3 et R = 3
Quelle est la valeur de W dans l’exemple ?
Le même résultat serait-il retourné avec :
- R=2?
- R = 2 et W = 2 ?
P. Pucheral Modèles de transactions avancés - 57