• Aucun résultat trouvé

I. Etat de l'Art 5

I.2 Le modele Transactionnel 23

2.5 Transactions distribuees



EES 33

{ A la validation, la nouvelle table valide est reconstituee: les parties de la table ombre pointant sur des donnees modi ees par la transaction font dorenavant parties de la table courante, et les parties contenant les donnees initiales sont maintenant dans table ombre.

{ En cas d'annulation, la table d'indirection virtuelle valide n'est pas modi ee (les donnees pointees par la page ombre sont donc perdues).

Ce mecanisme est tres simple d'utilisation et d'implantation pour un systeme executant tres peu de transactions simultanement. Il devient moins ecace que la journalisation pour des systemes transactionnels plus evolues.

2.5 Transactions distribuees

Le modele transactionnel est un modele de tolerance aux pannes dans les envi-ronnements distribues. Dans cette partie, nous allons voir au travers d'un exemple ce qu'implique la distribution pour le modele transactionnel.

Debit (int montant) solde = solde-Montant Credit(int montant) solde = solde+montant Serveur Banque 1 Serveur Banque 2 Begin_Transaction() Cpte2.credit(100) Commit_Transaction() Cpte1.debit(100) Client

Fig. I.2.3 - Exemple simple de transaction distribuee

L'exemple choisit est celui d'un virement bancaire entre deux banques (cf. -gure I.2.3). Dans une architecture distribuee, chaque site est responsable du respect des acces a ses donnees. Cela signi e que chaque site doit implanter un systeme transactionnel pour assurer le maintien des proprietes ACID.

Cependant, le caractere distribue de l'application a des consequences sur les mecanismes de maintien des proprietes ACID. Nous allons tout d'abord etudier l'in uence de la distribution sur les mecanismes de contr^ole de concurrence, puis sur les mecanismes de reprise sur panne. En n, nous etudierons les problemes de validation distribuee des transactions.

2.5.1 Implication sur le contr^ole de concurrence

Les mecanismes de contr^ole de concurrence appliques dans le cadre des transac-tions simples peuvent ^etre utilises tels quels dans le cas des transactransac-tions distribuees

(sous reserve que les sites utilisent tous la m^eme methode ,et qu'ils ne privilegient pas les transactions locales).

Cependant, les problemes poses dans le cadre d'une utilisation simple des tran-sactions (c'est-a-dire sur un seul site) sont aggraves par le contexte distribue. Pre-nons, par exemple, les mecanismes de verrouillage. La principale diculte liee a leur utilisation est le risque d'interblocage. Ce risque devient beaucoup plus dicile a detecter dans le cadre d'une transaction distribuee sur plusieurs sites.

2.5.2 Implication sur la reprise sur panne

Dans le cas des systemes distribues, un nouveau type de panne peut appara^tre (en plus des trois precedemment cites). Il s'agit d'une panne du reseau de communi-cation entre les di erents sites (Remarque: il n'est pas toujours facile de distinguer une panne de site, d'une panne de communication).

Cependant, les techniques de reprise sur panne etudiees dans le cadre des sactions pour une architecture centralisee sont transposables dans le cadre des tran-sactions distribuees.

Chaque site doit implanter son propre mecanisme de reprise sur panne. Le pro-bleme est de decider si le site doit valider ou abandonner une transaction distribuee. En e et, il est tout a fait possible qu'un site ait reussi a executer correctement une transaction, mais qu'un autre participant ait echoue. Dans ce cas, la propriete d'Atomicite impose un abandon de la transaction par tous les sites. Ce probleme est traite dans la partie suivante.

2.5.3 Validation de la Transaction Distribuee

De par la propriete d'Atomicite, a la n d'une transaction distribuee, tous les participants doivent decider uniformement de valider ou d'abandonner la transac-tion. Cela oblige a synchroniser la prise de decision, car tous les participants ne terminent pas l'execution de la transaction simultanement. La solution consiste a utiliser un Coordinateur, qui, en suivant un algorithme de validation, va ordonner aux Participants de valider, ou bien d'abandonner, la transaction.

Dans un premier temps, nous allons approfondir le r^ole de ce coordinateur, pour ensuite etudier divers algorithmes de validation de transaction distribuee (dont le plus couramment utilise: l'algorithme de validation a deux phases

[G81]

).

2.5.3.1 Coordination de la validation

Les protocoles de validations atomiques sont bases sur le vote des participants pour la validation de la transaction. La transaction ne sera validee que si tous les participants votent pour la validation.

Le coordinateur de la transaction10 (ou gestionnaire de transaction11) recoit tous les votes des participants et prend la decision de validation ou d'abandon de la transaction.

10:Coordinator en Anglais

2.5. TRANSACTIONSDISTRIBU 

EES 35

Le coordinateur peut ^etre un des participants de la transaction, ou un site a part. Certains algorithmes (appeles algorithmes bloquants) sont bloques si le coordinateur est en panne (c'est le cas notammentdu protocole de validation a deux phases). Nous verrons qu'il existe des algorithmes non bloquants, mais qui, la plupart du temps, s'averent plus co^uteux en nombre de messages.

2.5.3.2 Le protocole de Validation a deux phases

Comme son nom l'indique, le protocole de validation a deux phases se deroule en deux parties (cf. gure I.2.4):

{ Pendant la premiere phase, le coordinateur recolte l'etat de tous les parti-cipants mis en oeuvre par la transaction, de maniere a pouvoir prendre la decision de validation ou bien d'annulation (c'est la phase depreparation). { La seconde phase consiste a appliquer a tous les participants, soit la decision de

COMMIT (validation), soit de ABORT (annulation) de la transaction. Cette decision doit ^etre appliquee de maniere able (resistante aux pannes).

Décision de validation

Participant 2 Coordinateur

Coordinateur Participant 1 Participant 2 Participant 1

Décision d’annulation

prepare

prepare Begin prepare

End End End rollback prepare ready Begin End End End ready commit Ack Ack ready commit rollback

Fig. I.2.4 - Protocole de Validation a 2 phases

De nombreuses strategies d'optimisation en fonction de la topologie de reseau existent

[T91]

. Cependant, le principal probleme de cet algorithme est qu'il est bloquant: si le coordinateur tombe en panne entre la phase de vote et de decision, les participants qui ont vote la validation de la transaction se retrouvent bloques: ils ne savent pas quoi decider (ceux qui ont vote l'annulation savent que la transaction va ^etre abandonnee). Les donnees manipulees sur les participants par la transaction bloquee restent donc inaccessibles.

Pour eviter cela, il existe d'autres algorithmes, dits ((non bloquants)), que nous allons maintenant etudier.

2.5.3.3 Les protocoles non bloquants

Le protocole de validation non bloquant le plus repandu est le protocole de vali-dation a trois phases

[S81]

, qui en cas de panne du coordinateur, permet l'election d'un nouveau coordinateur. Un des defauts de cet algorithme est d'^etre tres co^uteux en nombre de messages.

D'autre part, cet algorithme ne supporte pas les panne de support de commu-nication. Dans le cas ou le coordinateur tombe en panne, le protocole est bien non bloquant. Mais dans le cas ou la panne est due a un probleme de communication, il faut qu'il soit bloquant pour assurer la coherence de la validation.

Des optimisations de ce protocole ont ete proposees

[GLS96]

.

D'autres protocoles non bloquants, bases sur des protocoles de validation a une seule phase, et sur les caracteristiques des systemes de communications synchrones voient le jour

[AP97]

. Le protocole de validation peut ^etre realise en une seule phase par elimination de la phase de vote du protocole de validation a deux phases. Pour cela, ces protocoles partent du principe que les participants utilisent un contr^ole de concurrence pessimiste (de type verrouillage a 2 phases rigoureux), ce qui signi e qu'une transaction qui a execute ses actions ne peut pas ^etre abandonnee par un probleme d'acces concurrent.