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

78 CAPÍTULO 5. AVALIAÇÃO DO MODELO DO SISTEMA DOORS marcação que o utilizador indicou e não outra marcação escalada para a mesma hora), cada marcação tem um identificador único. Segundo, um subobjecto agenda global, que mantém referências para os subobjectos anteriores, um por cada semana que contém marcações. Este subobjecto inclui duas operações de modificação para inserir e remover uma marcação num dado horário 5 . A execução destas operações consiste em invocar a operação correspondente no subobjecto agenda semanal relativo à semana indicada. Em consequência da execução de uma operação de inserção pode ser criado um novo subobjecto agenda semanal. Em consequência da execução duma operação de remoção pode ser removida a referência para um subobjecto agenda semanal. Terceiro, um subobjecto central de marcações, sem estado interno e que define as operações para inserir e remover uma marcação com múltiplos horários alternativos. A execução destas operações con- siste em invocar, sucessivamente, para cada um dos horários alternativos indicados até que um possa ser executado com sucesso, a operação correspondente no subobjecto agenda global. Adicionalmente, estas operações produzem as mensagens de notificação correspondentes ao seu resultado. O estado inicial de uma agenda inclui dois subobjectos raiz: um subobjecto agenda global sem nenhuma referência e um subobjecto central de marcações. O único gestor de subobjectos implementado é usado para cada uma das versões 6 . O coobjecto agenda mantém duas versões do seu estado — para tal, é baseado na cápsula dupla. A versão definitiva reflecte a execução de todos os pedidos de marcação cujo resultado se encontra garan- tido. A versão provisória reflecte, adicionalmente, a execução de todas as outras marcações conhecidas. A utilização de duas versões permite utilizar subobjectos que representem uma agenda normal, i.e., sem que cada marcação tenha associado o estado definitivo ou provisório. No servidor, usam-se os seguintes componentes. Para garantir a consistência final das várias réplicas, as versões definitiva e provisória são actualizadas, respectivamente, pela versão pessimista e optimista do componente de reconciliação que executa as operações por uma ordem total definida por uma réplica sequenciadora. Esta aproximação, permite estabelecer a ordem de execução definitiva de uma operação (e consequentemente o seu resultado final) desde que a réplica principal esteja acessível. Para propagar o resultado definitivo das operações, associa-se à versão definitiva a composição do componente de awareness que propaga as mensagens produzidas para os utilizadores com o componente 5 Este subobjecto contém uma operação adicional que remove todas as marcações de uma semana. Esta operação é usada para remover marcações antigas. 6 Como é de supor que a maior parte dos subobjectos tenham o mesmo estado em ambas as versões, uma optimização possível consiste em manter em disco, para os subobjecto iguais, apenas uma versão. Uma nova implementação do gestor de subobjectos pode fazer esta verificação de forma simples. A manutenção de apenas uma cópia em memória parece possível através da modificação do funcionamento dos representantes dos subobjectos, embora ainda seja necessário investigar todas as implicações de uma aproximação desse tipo.

5.2. AGENDA PARTILHADA 79 de awareness que garante que apenas uma mensagem é enviada. As mensagens produzidas na versão provisória são descartadas pelo componente de awareness que descarta todas as mensagens recebidas. No cliente, a versão provisória é actualizada pelo componente de reconciliação que executa imedi- atamente as operações submetidas. A versão definitiva não é modificada — usa-se um componente de reconciliação que não executa operações. Para ambas as versões usa-se o componente de awareness que descarta as mensagens recebidas. Quer no cliente, quer no servidor, usa-se a implementação mais simples disponível para o com- ponente de adaptação. Para o componente de registo e de atributos usam-se as implementações mais simples que permitam usar uma réplica sequenciadora. 5.2.2 Replicação secundária parcial O agrupamento de todas as marcações relativas a uma semana num subobjecto permite que a cópia parcial de um cliente inclua apenas um pequeno subconjunto de todas as marcações — em geral, um utilizador apenas está interessado na semana actual e (possivelmente) em algumas das semanas seguintes. Qualquer cópia parcial deve incluir ainda o subobjecto agenda global, o qual permite aceder às agendas semanais. Para tal, a estratégia de replicação prévia deve garantir que a agenda global está incluída em qualquer cópia parcial (para tal, o identificador do subobjecto agenda global está incluído na lista de subobjectos relacionados em todos os subobjectos agenda semanal). Os subobjectos definidos (com excepção do subobjecto central de reservas, explicado de seguida) surgem como elementos naturais na representação de uma agenda — outros elementos poderiam ter sido definidos, como, por exemplo, a agenda diária. Assim, a necessidade de agrupar os objectos que mantêm os dados de um coobjecto em subobjectos, para que o mecanismo de replicação secundária parcial possa ser utilizado, não constitui problema neste caso. 5.2.3 Invocação cega O coobjecto agenda permite a invocação cega de operações, independentemente dos subobjectos lo- calmente replicados. Como o subobjecto central de marcações é um subobjecto raiz, a sua referência está sempre disponível em qualquer coobjecto. Assim, é possível ao utilizador submeter novos pedidos, mesmo que os subobjectos que contêm as datas referidas não estejam disponíveis localmente (como é normal, o resultado de um pedido apenas é conhecido definitivamente quando a operação é executada num servidor, no qual todos os subobjectos estão disponíveis). Para permitir que o utilizador observe o resultado esperado do seu pedido, usam-se cópias de subs- tituição. Assim, o utilizador pode igualmente remover um pedido executado anteriormente durante a manipulação da agenda. Apesar de possível, a submissão de uma operação de remoção relativa a uma

78 CAPÍTULO 5. AVALIAÇÃO DO MODELO DO SISTEMA DOORS<br />

marcação que o utilizador indicou e não outra marcação escalada para a mesma hora), cada marcação<br />

t<strong>em</strong> um i<strong>de</strong>ntificador único.<br />

Segundo, um subobjecto agenda global, que mantém referências para os subobjectos anteriores, um<br />

por cada s<strong>em</strong>ana que contém marcações. Este subobjecto inclui duas operações <strong>de</strong> modificação para<br />

inserir e r<strong>em</strong>over uma marcação num dado horário 5 . A execução <strong>de</strong>stas operações consiste <strong>em</strong> invocar<br />

a operação correspon<strong>de</strong>nte no subobjecto agenda s<strong>em</strong>anal relativo à s<strong>em</strong>ana indicada. Em consequência<br />

da execução <strong>de</strong> uma operação <strong>de</strong> inserção po<strong>de</strong> ser criado um novo subobjecto agenda s<strong>em</strong>anal. Em<br />

consequência da execução duma operação <strong>de</strong> r<strong>em</strong>oção po<strong>de</strong> ser r<strong>em</strong>ovida a referência para um subobjecto<br />

agenda s<strong>em</strong>anal.<br />

Terceiro, um subobjecto central <strong>de</strong> marcações, s<strong>em</strong> estado interno e que <strong>de</strong>fine as operações para<br />

inserir e r<strong>em</strong>over uma marcação com múltiplos horários alternativos. A execução <strong>de</strong>stas operações con-<br />

siste <strong>em</strong> invocar, sucessivamente, para cada um dos horários alternativos indicados até que um possa ser<br />

executado com sucesso, a operação correspon<strong>de</strong>nte no subobjecto agenda global. Adicionalmente, estas<br />

operações produz<strong>em</strong> as mensagens <strong>de</strong> notificação correspon<strong>de</strong>ntes ao seu resultado.<br />

O estado inicial <strong>de</strong> uma agenda inclui dois subobjectos raiz: um subobjecto agenda global s<strong>em</strong><br />

nenhuma referência e um subobjecto central <strong>de</strong> marcações. O único gestor <strong>de</strong> subobjectos impl<strong>em</strong>entado<br />

é usado para cada uma das versões 6 .<br />

O coobjecto agenda mantém duas versões do seu estado — para tal, é baseado na cápsula dupla. A<br />

versão <strong>de</strong>finitiva reflecte a execução <strong>de</strong> todos os pedidos <strong>de</strong> marcação cujo resultado se encontra garan-<br />

tido. A versão provisória reflecte, adicionalmente, a execução <strong>de</strong> todas as outras marcações conhecidas.<br />

A utilização <strong>de</strong> duas versões permite utilizar subobjectos que represent<strong>em</strong> uma agenda normal, i.e., s<strong>em</strong><br />

que cada marcação tenha associado o estado <strong>de</strong>finitivo ou provisório.<br />

No servidor, usam-se os seguintes componentes. Para garantir a consistência final das várias réplicas,<br />

as versões <strong>de</strong>finitiva e provisória são actualizadas, respectivamente, pela versão pessimista e optimista<br />

do componente <strong>de</strong> reconciliação que executa as operações por uma or<strong>de</strong>m total <strong>de</strong>finida por uma réplica<br />

sequenciadora. Esta aproximação, permite estabelecer a or<strong>de</strong>m <strong>de</strong> execução <strong>de</strong>finitiva <strong>de</strong> uma operação<br />

(e consequent<strong>em</strong>ente o seu resultado final) <strong>de</strong>s<strong>de</strong> que a réplica principal esteja acessível.<br />

Para propagar o resultado <strong>de</strong>finitivo das operações, associa-se à versão <strong>de</strong>finitiva a composição do<br />

componente <strong>de</strong> awareness que propaga as mensagens produzidas para os utilizadores com o componente<br />

5 Este subobjecto contém uma operação adicional que r<strong>em</strong>ove todas as marcações <strong>de</strong> uma s<strong>em</strong>ana. Esta operação é usada<br />

para r<strong>em</strong>over marcações antigas.<br />

6 Como é <strong>de</strong> supor que a maior parte dos subobjectos tenham o mesmo estado <strong>em</strong> ambas as versões, uma optimização<br />

possível consiste <strong>em</strong> manter <strong>em</strong> disco, para os subobjecto iguais, apenas uma versão. Uma nova impl<strong>em</strong>entação do gestor <strong>de</strong><br />

subobjectos po<strong>de</strong> fazer esta verificação <strong>de</strong> forma simples. A manutenção <strong>de</strong> apenas uma cópia <strong>em</strong> m<strong>em</strong>ória parece possível<br />

através da modificação do funcionamento dos representantes dos subobjectos, <strong>em</strong>bora ainda seja necessário investigar todas as<br />

implicações <strong>de</strong> uma aproximação <strong>de</strong>sse tipo.

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

Saved successfully!

Ooh no, something went wrong!