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

asc.di.fct.unl.pt
from asc.di.fct.unl.pt More from this publisher
11.04.2013 Views

180 CAPÍTULO 11. TRABALHO RELACIONADO Na propagação de operações é necessário interceptar e armazenar conjuntamente com os dados as ope- rações executadas. Na propagação do estado apenas é necessário manter a réplica do objecto. Assim, a propagação de operações é mais complexa. Terceiro, deve ter-se em consideração a informação disponível para o processo de reconciliação. A propagação de operações permite que o mecanismo de reconciliação utilize a informação semântica asso- ciada às operações executadas. Em ambos os casos é possível utilizar a informação semântica associada ao tipo de dados. Assim, a propagação de operações permite soluções potencialmente mais eficazes, embora dependa do mecanismo de reconciliação explorar ou não a informação adicional disponível. Nos sistemas apresentados nesta dissertação utilizaram-se as duas aproximação. A propagação de operações (com compressão) é usada para transmitir para os servidores as modificações executadas pelos utilizadores, que se assume serem em pequeno número. Assim, maximiza-se a informação disponível para os mecanismos de reconciliação. A propagação do estado (utilizando objectos tendencialmente de pequenas dimensões) é usada para actualizar as réplicas dos objectos nos clientes. Neste caso, como o número de operações a enviar se assume ser grande é razoável usar esta técnica. No sistema DOORS é possível utilizar também a propagação de operações para actualizar as cópias dos clientes no caso de o número de operações a enviar ser reduzido. No sistema Mobisnap exclui-se esta hipótese por ser muito complexo manter a sequência das operações executadas (que incluem as operações executadas directamente por clientes legados). 11.1.7 Detecção das modificações Para sincronizar duas réplicas é necessário compará-las para determinar se e como foram modificadas. Uma aproximação possível consiste em comparar os seus valores. Como esta operação deve ser eficiente, a comparação integral das réplicas é inaceitável. Assim, é necessário definir um modo de identificar univocamente o valor de uma réplica. Para tal, pode calcular-se um identificador (quase) único a partir do estado do objecto utilizando, por exemplo, uma função de dispersão segura (SHA-1, MD5) 2 . Esta solução permite verificar a igualdade ao nível do conteúdo do objecto, mas não permite inferir qualquer informação sobre a evolução dos objectos. Assim, as soluções usadas nos sistemas de replicação privilegiam a obtenção de informação sobre a evolução das réplicas (em detrimento da informação exacta sobre a igualdade dos seus valores, porque se assume que a probabilidade de duas réplicas evoluirem concorrentemente para o mesmo estado é reduzido). A utilização de relógios escalares (físicos ou lógicos [94]) para identificar os valores de uma réplica (ou operações) permite definir uma ordem total entre esses valores (ou operações) que respeita a causali- 2 Esta aproximação é usada frequentemente para atribuir identificadores únicos a objectos imutáveis [29, 143].

11.1. REPLICAÇÃO 181 dade 3 . Esta técnica permite verificar a desigualdade entre duas réplicas e identificar aquela que pode ser causalmente dependente da outra. No entanto, esta técnica não permite verificar se os valores de duas réplicas foram modificados con- correntemente. Para tal, uma aproximação possível consiste em manter duas estampilhas temporais: a actual e a anterior. Esta aproximação é usada, por exemplo, no sistema Palm HotSync [117]. Esta técnica apenas é exacta quando se usam apenas duas réplicas. A utilização de vectores-versão [119] permite verificar de forma exacta se duas réplicas foram mo- dificadas concorrentemente (quer se use a propagação do estado ou de operações). Esta técnica é usada de forma generalizada nos sistemas de replicação com múltiplas réplicas (por exemplo, nos sistemas Ficus [66], Coda [87], Bayou [161]). Como a dimensão do vector-versão é proporcional ao número de réplicas existentes no sistema 4 , os vectores-versão podem ter dimensões significativas nos sistema de muito larga-escala. Assim, o pro- blema da gestão dos vectores-versão, i.e, como se pode introduzir e remover novos elementos de forma eficiente e sem exigir coordenação global, foi estudada em vários sistemas [5, 140]. No sistema DOORS, cada sequência de operações é identificada no servidor com um relógio lógico que permite definir uma ordem total que respeita a causalidade. A cada sequência de operações é ainda adicionado, no cliente, um vector-versão que identifica o estado do objecto no qual foram produzidas as modficações. Como este vector-versão apenas reflecte as operações recebidas nos servidores, apenas permite traçar de forma exacta a dependência com as operações já executadas num servidor. Nas aplica- ções desenvolvidas, esta aproximação básica revelou-se suficiente. No entanto, este problema e possíveis soluções foram discutidos com maior detalhe na secção 4.1.1. Quando se pretende reconciliar um conjunto de objectos, podem usar-se as técnicas anteriores, as- sociadas ao conjunto de objectos (em vez de associadas a cada um dos objectos) para detectar mo- dificações num nível de granularidade superior. Esta técnica é usada, por exemplo, em sistemas de ficheiros [107, 86] e sistema de bases de dados [137]. 11.1.8 Propagação das modificações: propagar como? A propagação das modificações entre as várias réplicas de um sistema pode ser dividido em dois sub- problemas: a propagação entre as réplicas principais e a propagação entre as réplicas principais e se- cundárias. Dizemos que uma réplica principal está presente num servidor e uma réplica secundária está 3 No caso dos relógios físicos é necessários manter os relógios sincronizados. 4 Note que apenas é necessário manter uma entrada no vector para cada réplica em que são produzidas alterações. Assim, se se assumir que em cada momento apenas existe um pequeno número de réplicas em que são produzidas alterações, mas que a identidade das réplicas varia ao longo do tempo, o problema principal consiste em efectuar a reciclagem automática (garbage-collection) das referências às réplicas que já não são necessárias.

180 CAPÍTULO 11. TRABALHO RELACIONADO<br />

Na propagação <strong>de</strong> operações é necessário interceptar e armazenar conjuntamente com os <strong>dados</strong> as ope-<br />

rações executadas. Na propagação do estado apenas é necessário manter a réplica do objecto. Assim, a<br />

propagação <strong>de</strong> operações é mais complexa.<br />

Terceiro, <strong>de</strong>ve ter-se <strong>em</strong> consi<strong>de</strong>ração a informação disponível para o processo <strong>de</strong> reconciliação. A<br />

propagação <strong>de</strong> operações permite que o mecanismo <strong>de</strong> reconciliação utilize a informação s<strong>em</strong>ântica asso-<br />

ciada às operações executadas. Em ambos os casos é possível utilizar a informação s<strong>em</strong>ântica associada<br />

ao tipo <strong>de</strong> <strong>dados</strong>. Assim, a propagação <strong>de</strong> operações permite soluções potencialmente mais eficazes,<br />

<strong>em</strong>bora <strong>de</strong>penda do mecanismo <strong>de</strong> reconciliação explorar ou não a informação adicional disponível.<br />

Nos sist<strong>em</strong>as apresentados nesta dissertação utilizaram-se as duas aproximação. A propagação <strong>de</strong><br />

operações (com compressão) é usada para transmitir para os servidores as modificações executadas pelos<br />

utilizadores, que se assume ser<strong>em</strong> <strong>em</strong> pequeno número. Assim, maximiza-se a informação disponível<br />

para os mecanismos <strong>de</strong> reconciliação. A propagação do estado (utilizando objectos ten<strong>de</strong>ncialmente <strong>de</strong><br />

pequenas dimensões) é usada para actualizar as réplicas dos objectos nos clientes. Neste caso, como o<br />

número <strong>de</strong> operações a enviar se assume ser gran<strong>de</strong> é razoável usar esta técnica. No sist<strong>em</strong>a DOORS<br />

é possível utilizar também a propagação <strong>de</strong> operações para actualizar as cópias dos clientes no caso<br />

<strong>de</strong> o número <strong>de</strong> operações a enviar ser reduzido. No sist<strong>em</strong>a Mobisnap exclui-se esta hipótese por ser<br />

muito complexo manter a sequência das operações executadas (que inclu<strong>em</strong> as operações executadas<br />

directamente por clientes legados).<br />

11.1.7 Detecção das modificações<br />

Para sincronizar duas réplicas é necessário compará-las para <strong>de</strong>terminar se e como foram modificadas.<br />

Uma aproximação possível consiste <strong>em</strong> comparar os seus valores. Como esta operação <strong>de</strong>ve ser<br />

eficiente, a comparação integral das réplicas é inaceitável. Assim, é necessário <strong>de</strong>finir um modo <strong>de</strong><br />

i<strong>de</strong>ntificar univocamente o valor <strong>de</strong> uma réplica. Para tal, po<strong>de</strong> calcular-se um i<strong>de</strong>ntificador (quase)<br />

único a partir do estado do objecto utilizando, por ex<strong>em</strong>plo, uma função <strong>de</strong> dispersão segura (SHA-1,<br />

MD5) 2 .<br />

Esta solução permite verificar a igualda<strong>de</strong> ao nível do conteúdo do objecto, mas não permite inferir<br />

qualquer informação sobre a evolução dos objectos. Assim, as soluções usadas nos sist<strong>em</strong>as <strong>de</strong> replicação<br />

privilegiam a obtenção <strong>de</strong> informação sobre a evolução das réplicas (<strong>em</strong> <strong>de</strong>trimento da informação exacta<br />

sobre a igualda<strong>de</strong> dos seus valores, porque se assume que a probabilida<strong>de</strong> <strong>de</strong> duas réplicas evoluir<strong>em</strong><br />

concorrent<strong>em</strong>ente para o mesmo estado é reduzido).<br />

A utilização <strong>de</strong> relógios escalares (físicos ou lógicos [94]) para i<strong>de</strong>ntificar os valores <strong>de</strong> uma réplica<br />

(ou operações) permite <strong>de</strong>finir uma or<strong>de</strong>m total entre esses valores (ou operações) que respeita a causali-<br />

2 Esta aproximação é usada frequent<strong>em</strong>ente para atribuir i<strong>de</strong>ntificadores únicos a objectos imutáveis [29, 143].

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!