Mots clés : transaction, duplication,
diffusion, tolérance aux défaillances .
Résumé :
La duplication augmente la disponibilité des données et
permet d'exécuter des transactions même en cas de
défaillances. Dans les systèmes transactionnels dupliqués,
au delà d'assurer l'isolation des transactions, la
duplication doit être rendue transparente à l'utilisateur,
et cela tout en tolérant les défaillances. En raison de la
distribution des données, on doit également mettre en
oeuvre une validation atomique répartie pour les
transactions. Par ailleurs, contrairement aux systèmes
non-dupliqués, les transactions impliquent des ressources
qui sont multipliées sur un système réparti et par
conséquent, elles sont plus sensibles aux problèmes
d'interblocage. Le traitement de ces problèmes s'avère
d'autant plus difficile que l'on se place dans le cadre des
systèmes répartis asynchrones.
Les primitives de diffusion peuvent y jouer un rÔle
déterminant dans la mesure où elles rendent les
défaillances et l'asynchronisme transparents à
l'application. Enfin, elles procurent des propriétés
d'ordre qui rendent l'implémentation du contrÔle de la
duplication plus simple.
La duplication de données a été utilisée depuis longtemps
pour assurer que les données accédées par des transactions
demeurent disponibles en dépit des défaillances. De nombreux
protocoles de contrÔle de duplication qui assurent la
``sérialisabilité à une copie'' (one-copy serializability)
des transactions ont été proposés. Ces protocoles tolèrent
différentes situations de défaillances (défaillances de
processus ou partitionnement du réseau, par exemple), mais
d'autre part, ils négligent d'autres aspects liés à la
vivacité des transactions. En l'occurrence, ni l'interblocage
de transactions ni la validation atomique non-bloquante de
celles-ci ne sont traités par ces protocoles. Certes, cela se
doit en grande partie au fait que l'on ne pose que des
hypothèses faibles concernant les propriétés des systèmes de
communication sous-jacents. Souvent, on ne considère que des
primitives de communication point-à-point, voire, sans
garantie de fiabilité de la livraison des messages. La
duplication s'avère encore plus difficile à gérer lorsque
l'on se place dans le cadre des systèmes répartis
asynchrones, dans lesquels aucune hypothèse sur les vitesses
des communications ou des processeurs n'est faite. Il est
connu que des problèmes d'accord concernant la validation
atomique et le verrouillage réparti sont impossibles à
résoudre dans les systèmes asynchrones.
À l'opposé des primitives de communication considérées par
les protocoles traditionnels, les systèmes de communication
de groupes procurent, entre autres, des primitives de
diffusion de messages avec des garanties fortes de fiabilité
et d'ordre de livraison. Par ailleurs, il existe des
protocoles qui implémentent ces primitives de diffusion dans
les systèmes asynchrones. Avec l'utilisation de tels services
de diffusion au sein des systèmes transactionnels dupliqués,
les aspects concernant le traitement d'interblocage et la
validation atomique ont pu être facilement incorporés aux
protocoles de contrÔle de duplication, et cela même dans un
cadre asynchrone.
Des travaux récents ont proposé cette intégration de la
communication de groupe avec la gestion de la duplication.
Pourtant, on y considère un modèle de duplication
complète, où chaque processus du système réparti
possède une copie complète d'une seule base de données.
Contrairement à cette duplication complète, nous considérons
un modèle de duplication partielle où chaque donnée
peut avoir des copies sur un nombre quelconque de processus.
Plus précisément, nous considérons que le système réparti est
structuré en plusieurs groupes de processus, chaque groupe
réalisant la duplication d'un objet particulier. Les
transactions peuvent donc accéder à des objets sur différents
groupes de processus. En conséquence, pour assurer les
propriétés transactionnelles, on doit mettre en oeuvre un
système de gestion de transactions réparti.
Dans la duplication complète on utilise un cas particulier
de diffusion, dans laquelle un message est destiné à tous les
processus du système réparti (``broadcast''). En revanche,
pour gérer de manière efficace la duplication partielle, les
messages doivent être diffusés vers des groupes de processus,
différents messages pouvant avoir des ensembles de groupes
destinataires distincts (``multicast''). Les primitives de
Diffusion fiable uniforme et de Diffusion fiable
totalement ordonnée (ou Diffusion atomique)
vers plusieurs groupes ont ces caractéristiques. La première
primitive implémente une propriété de fiabilité qui garantit
qu'un message est inéluctablement délivré par les processus
corrects des groupes destinataires si l'émetteur est correct,
ou si au moins l'un des processus a délivré ce message. La
deuxième met en oeuvre cette fiabilité et en plus assure que
les messages sont délivrés en respectant un ordre total.
Pour faire face aux systèmes répartis en grande échelle,
il est important par ailleurs que les protocoles de diffusion
réalisent la propriété de Minimalité. Cette propriété
garantit que seuls le processus émetteur et les processus des
groupes destinataires d'un message sont impliqués dans sa
diffusion et sa livraison.