gestão de dados partilhados em ambientes de computação móvel
gestão de dados partilhados em ambientes de computação móvel gestão de dados partilhados em ambientes de computação móvel
182 CAPÍTULO 11. TRABALHO RELACIONADO presente num cliente. Primeiro, abordamos o problema da propagação entre réplicas principais. Nos sistemas de replicação síncrona [114], as modificações executadas numa réplica são propagadas imediatamente de forma sín- crona para todas (ou para um quorum de) as outras réplicas. Esta solução tem dificuldade em lidar com as falhas e apenas pode ser usada com um número reduzido de réplicas. Para que o sistema suporte um elevado número de elementos é necessário que a propagação das modificações seja efectuada de forma assíncrona (como acontece sempre nos sistema de replicação optimista). Uma aproximação simples consiste na utilização dum esquema lazy master, no qual apenas um ser- vidor recebe as modificações que propaga assincronamente para as outras réplicas. Outra aproximação consiste na utilização de técnicas de propagação epidémica em que uma réplica propaga todas as modi- ficações conhecidas independentemente da réplica em que tiveram origem. Vários algoritmos e sistemas usam esta aproximação [38, 57, 84, 101, 66, 122], nos quais se podem encontrar várias soluções para a escolha do parceiro e momento da sessão de propagação epidémica (topologias fixas – anel, árvore, etc. – ou variáveis – o parceiro é escolhido aleatoriamente), para determinar quais as modificações que devem ser propagadas e para o protocolo de propagação (unidireccional ou bidireccional). A solução ideal para cada sistema depende da topologia da rede de comunicações e da estratégia de reconciliação implementada. No sistema DOORS, a propagação é epidémica uni ou bidireccional e usam-se vectores-versão para determinar de forma exacta quais as operações que necessitam de ser propagadas. A topologia, momento das sessões de propagação e coobjectos envolvidos, pode ser definida pelo administrador do sistema de forma específica para cada volume. Na propagação das modificações de uma réplica secundária para uma réplica primária existem, pelo menos, três possibilidades. Primeiro, o cliente entrega a modificação a uma só réplica principal. Esta é a aproximação usual (adoptada nos sistemas implementados nesta dissertação). Segundo, o cliente propaga de forma coordenada a modificação para mais do que uma réplica. Por exemplo, no sistema Coda [87] um cliente instala uma nova versão de um ficheiro em vários servidores simultaneamente. Esta aproximação também pode ser usada para tolerar falhas bizantinas [28]. Terceiro, um cliente propaga de forma não coordenada uma modificação para mais do que uma réplica. Neste caso, é, em geral, necessário detectar a igualdade das modificações recorrendo a informação criada no cliente. Por exemplo, o sistema lazy replication [93] mantém identificadores únicos para cada operação. Quando as réplicas principais são modificadas, os clientes têm de invalidar a cópias locais e obter no- vas cópias. Para tal, existem duas aproximações. Primeiro, o cliente verifica (periodicamente ou quando acede aos dados) se a sua cópia permanece actual. Segundo, o servidor informa os clientes das modi- ficações. Esta informação pode conter os novos dados ou apenas informação sobre a sua modificação
11.1. REPLICAÇÃO 183 e ser propagado individualmente para cada cliente [107] ou disseminado através dum canal (físico) de difusão de mensagens [14]. Este problema está fora do âmbito do trabalho desta dissertação, tendo-se implementado a solução mais simples nos protótipos do sistema DOORS e Mobisnap: o cliente verifica periodicamente a validade das cópias locais. 11.1.9 Reconciliação A reconciliação consiste em unificar as modificações executadas sem coordenação em duas (ou mais) réplicas de um objecto. Este mecanismo elementar é usado num protocolo de reconciliação, o qual deve, em geral, garantir a convergência final das várias réplicas, i.e., garantir que após um período de tempo finito após a última modificação executada, as várias réplicas são iguais. De seguida abordam-se as téc- nicas de reconciliação elementares baseadas na utilização do estado das várias réplicas e na propagação das operações efectuadas. 11.1.9.1 Utilização do estado das réplicas Nesta subsecção abordam-se as técnicas de reconciliação baseadas na utilização do estado das várias réplicas. Estas técnicas de reconciliação determinam, em cada réplica, qual o novo estado da réplica que resulta da unificação do estado de duas réplicas. O primeiro tipo de aproximação consiste em, dado um conjunto de réplicas divergentes, seleccionar uma réplica como resultado da reconciliação. Usando a regra de escrita de Thomas [163], cada réplica tem associada uma estampilha temporal (sobre as quais se define uma ordem total) atribuída aquando da sua mais recente modificação. O resultado da reconciliação consiste em seleccionar a réplica com maior estampilha temporal. Vários sistemas [80, 155] usam esta aproximação. Uma estratégia alternativa consiste em permitir ao utilizador seleccionar qual o valor que deve ser mantido. Por exemplo, na sincronização de PDAs [117] é usual poder seleccionar-se qual o valor a manter: o valor do computador fixo ou o valor do dispositivo portátil. A verificação da validade das transacções usando os conjuntos de leitura e escrita [60] pode ser considerada uma extensão desta aproximação, em que se usam objectos de reduzidas dimensões, se seleccionam as modificações mais antigas e se detectam adicionalmente conflitos leitura/escrita. O segundo tipo de aproximação que vamos considerar consiste na criação e manutenção de versões: duas réplicas de um objecto modificadas concorrentemente dão origem a duas versões, mantidas em cada uma das réplicas. Os utilizadores podem, posteriormente, unificar essas versões. Deve notar-se que, neste caso, a existência de várias versões de um objecto não é considerado um erro, decorrendo do modo de funcionamento normal do sistema. O sistema Lotus Notes [101] é um exemplo típico do uso desta aproximação.
- Page 149 and 150: Capítulo 9 Avaliação do modelo b
- Page 151 and 152: 9.1. APLICAÇÕES 133 1 ------ REMO
- Page 153 and 154: 9.2. RESERVAS 135 dentemente em dif
- Page 155 and 156: 9.2. RESERVAS 137 seguinte forma. P
- Page 157 and 158: 9.2. RESERVAS 139 Commit (% total)
- Page 159 and 160: 9.2. RESERVAS 141 Commit (% total)
- Page 161 and 162: 9.2. RESERVAS 143 Commit (% total)
- Page 163 and 164: 9.2. RESERVAS 145 Commit (% total)
- Page 165 and 166: 9.2. RESERVAS 147 Por exemplo, no c
- Page 167 and 168: Capítulo 10 Sistema de reconcilia
- Page 169 and 170: 10.2. RELAÇÕES ESTÁTICAS 151 10.
- Page 171 and 172: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 173 and 174: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 175 and 176: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 177 and 178: 10.4. OPTIMIZAÇÃO DA RECONCILIAÇ
- Page 179 and 180: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 181 and 182: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 183 and 184: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 185 and 186: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 187 and 188: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 189 and 190: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 191 and 192: Capítulo 11 Trabalho relacionado A
- Page 193 and 194: 11.1. REPLICAÇÃO 175 11.1.2 Arqui
- Page 195 and 196: 11.1. REPLICAÇÃO 177 a unidade de
- Page 197 and 198: 11.1. REPLICAÇÃO 179 O mecanismo
- Page 199: 11.1. REPLICAÇÃO 181 dade 3 . Est
- Page 203 and 204: 11.1. REPLICAÇÃO 185 ordem de exe
- Page 205 and 206: 11.1. REPLICAÇÃO 187 execução d
- Page 207 and 208: 11.2. INFORMAÇÃO SOBRE A EVOLUÇ
- Page 209 and 210: 11.3. INTEGRAÇÃO DE SESSÕES SÍN
- Page 211 and 212: Capítulo 12 Conclusões A generali
- Page 213 and 214: 12.1. SUMÁRIO 195 é executado no
- Page 215 and 216: Apêndice A DOORS Este apêndice ap
- Page 217 and 218: A.1. FILIAÇÃO 199 A operação de
- Page 219 and 220: A.1. FILIAÇÃO 201 anterior à de
- Page 221 and 222: A.1. FILIAÇÃO 203 associados e o
- Page 223 and 224: A.1. FILIAÇÃO 205 Actualização
- Page 225 and 226: A.1. FILIAÇÃO 207 • Periodicame
- Page 227 and 228: A.1. FILIAÇÃO 209 estas situaçõ
- Page 229 and 230: A.1. FILIAÇÃO 211 2. Um servidor
- Page 231 and 232: A.2. SINCRONIZAÇÃO EPIDÉMICA 213
- Page 233 and 234: A.2. SINCRONIZAÇÃO EPIDÉMICA 215
- Page 235 and 236: A.2. SINCRONIZAÇÃO EPIDÉMICA 217
- Page 237 and 238: A.2. SINCRONIZAÇÃO EPIDÉMICA 219
- Page 239 and 240: Apêndice B Mobisnap B.1 Transacç
- Page 241 and 242: Bibliografia [1] S. Agarwal, D. Sta
- Page 243 and 244: BIBLIOGRAFIA 225 [22] Michael J. Ca
- Page 245 and 246: BIBLIOGRAFIA 227 [45] Sérgio Duart
- Page 247 and 248: BIBLIOGRAFIA 229 [67] Jörg M. Haak
- Page 249 and 250: BIBLIOGRAFIA 231 [92] David Lacey,
182 CAPÍTULO 11. TRABALHO RELACIONADO<br />
presente num cliente.<br />
Primeiro, abordamos o probl<strong>em</strong>a da propagação entre réplicas principais. Nos sist<strong>em</strong>as <strong>de</strong> replicação<br />
síncrona [114], as modificações executadas numa réplica são propagadas imediatamente <strong>de</strong> forma sín-<br />
crona para todas (ou para um quorum <strong>de</strong>) as outras réplicas. Esta solução t<strong>em</strong> dificulda<strong>de</strong> <strong>em</strong> lidar com<br />
as falhas e apenas po<strong>de</strong> ser usada com um número reduzido <strong>de</strong> réplicas. Para que o sist<strong>em</strong>a suporte um<br />
elevado número <strong>de</strong> el<strong>em</strong>entos é necessário que a propagação das modificações seja efectuada <strong>de</strong> forma<br />
assíncrona (como acontece s<strong>em</strong>pre nos sist<strong>em</strong>a <strong>de</strong> replicação optimista).<br />
Uma aproximação simples consiste na utilização dum esqu<strong>em</strong>a lazy master, no qual apenas um ser-<br />
vidor recebe as modificações que propaga assincronamente para as outras réplicas. Outra aproximação<br />
consiste na utilização <strong>de</strong> técnicas <strong>de</strong> propagação epidémica <strong>em</strong> que uma réplica propaga todas as modi-<br />
ficações conhecidas in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente da réplica <strong>em</strong> que tiveram orig<strong>em</strong>. Vários algoritmos e sist<strong>em</strong>as<br />
usam esta aproximação [38, 57, 84, 101, 66, 122], nos quais se po<strong>de</strong>m encontrar várias soluções para<br />
a escolha do parceiro e momento da sessão <strong>de</strong> propagação epidémica (topologias fixas – anel, árvore,<br />
etc. – ou variáveis – o parceiro é escolhido aleatoriamente), para <strong>de</strong>terminar quais as modificações que<br />
<strong>de</strong>v<strong>em</strong> ser propagadas e para o protocolo <strong>de</strong> propagação (unidireccional ou bidireccional). A solução<br />
i<strong>de</strong>al para cada sist<strong>em</strong>a <strong>de</strong>pen<strong>de</strong> da topologia da re<strong>de</strong> <strong>de</strong> comunicações e da estratégia <strong>de</strong> reconciliação<br />
impl<strong>em</strong>entada.<br />
No sist<strong>em</strong>a DOORS, a propagação é epidémica uni ou bidireccional e usam-se vectores-versão para<br />
<strong>de</strong>terminar <strong>de</strong> forma exacta quais as operações que necessitam <strong>de</strong> ser propagadas. A topologia, momento<br />
das sessões <strong>de</strong> propagação e coobjectos envolvidos, po<strong>de</strong> ser <strong>de</strong>finida pelo administrador do sist<strong>em</strong>a <strong>de</strong><br />
forma específica para cada volume.<br />
Na propagação das modificações <strong>de</strong> uma réplica secundária para uma réplica primária exist<strong>em</strong>, pelo<br />
menos, três possibilida<strong>de</strong>s. Primeiro, o cliente entrega a modificação a uma só réplica principal. Esta é a<br />
aproximação usual (adoptada nos sist<strong>em</strong>as impl<strong>em</strong>entados nesta dissertação). Segundo, o cliente propaga<br />
<strong>de</strong> forma coor<strong>de</strong>nada a modificação para mais do que uma réplica. Por ex<strong>em</strong>plo, no sist<strong>em</strong>a Coda [87] um<br />
cliente instala uma nova versão <strong>de</strong> um ficheiro <strong>em</strong> vários servidores simultaneamente. Esta aproximação<br />
também po<strong>de</strong> ser usada para tolerar falhas bizantinas [28]. Terceiro, um cliente propaga <strong>de</strong> forma não<br />
coor<strong>de</strong>nada uma modificação para mais do que uma réplica. Neste caso, é, <strong>em</strong> geral, necessário <strong>de</strong>tectar<br />
a igualda<strong>de</strong> das modificações recorrendo a informação criada no cliente. Por ex<strong>em</strong>plo, o sist<strong>em</strong>a lazy<br />
replication [93] mantém i<strong>de</strong>ntificadores únicos para cada operação.<br />
Quando as réplicas principais são modificadas, os clientes têm <strong>de</strong> invalidar a cópias locais e obter no-<br />
vas cópias. Para tal, exist<strong>em</strong> duas aproximações. Primeiro, o cliente verifica (periodicamente ou quando<br />
ace<strong>de</strong> aos <strong>dados</strong>) se a sua cópia permanece actual. Segundo, o servidor informa os clientes das modi-<br />
ficações. Esta informação po<strong>de</strong> conter os novos <strong>dados</strong> ou apenas informação sobre a sua modificação