11.04.2013 Views

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

3.3. FRAMEWORK DE COMPONENTES: COMPONENTES 39<br />

3.3.4 Reconciliação<br />

O componente <strong>de</strong> reconciliação (ou controlo <strong>de</strong> concorrência) é responsável por executar as operações<br />

armazenadas no componente <strong>de</strong> registo. Em geral, um coobjecto usa diferentes componentes <strong>de</strong> recon-<br />

ciliação no cliente e no servidor. No cliente, o componente <strong>de</strong> reconciliação apenas controla a execução<br />

imediata das operações <strong>de</strong> forma a que os utilizadores possam observar o resultado esperado (provisório)<br />

das suas acções.<br />

No servidor, este componente controla a execução das operações <strong>em</strong> cada réplica do coobjecto. Em<br />

geral, preten<strong>de</strong>-se que as várias cópias <strong>de</strong> um mesmo coobjecto evoluam para estados consistentes que<br />

reflictam as modificações executadas pelos utilizadores. Como o sist<strong>em</strong>a DOORS permite que vários<br />

utilizadores modifiqu<strong>em</strong> concorrent<strong>em</strong>ente o mesmo coobjecto, este componente <strong>de</strong>ve reconciliar os<br />

fluxos <strong>de</strong> activida<strong>de</strong> (possivelmente) divergentes executados por vários utilizadores.<br />

Este componente controla igualmente a execução <strong>de</strong> blocos “apenas-uma-vez” (once-only) — um<br />

bloco once-only <strong>de</strong>fine um bloco <strong>de</strong> instruções no código <strong>de</strong> uma operação que apenas <strong>de</strong>ve ser executado<br />

uma vez, in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente do número <strong>de</strong> cópias do coobjecto existentes (<strong>em</strong> caso da falha <strong>de</strong>finitiva<br />

<strong>de</strong> um servidor, a s<strong>em</strong>ântica exacta impl<strong>em</strong>entada <strong>de</strong>ve ser: “no máximo uma vez”). Este blocos po<strong>de</strong>m<br />

ser usados para executar acções que tenham reflexo no mundo exterior ao coobjecto (por ex<strong>em</strong>plo, a<br />

execução <strong>de</strong> uma operação noutro coobjecto).<br />

Como se discutiu na secção 2.3.2, várias aproximações po<strong>de</strong>m ser usadas para controlar a evolução<br />

das várias réplicas e garantir que as intenções dos utilizadores são respeitadas. Em geral, estas aproxima-<br />

ções baseiam-se na execução das operações <strong>em</strong> todas as réplicas por uma <strong>de</strong>terminada or<strong>de</strong>m explorando<br />

a informação s<strong>em</strong>ântica associada com os tipos <strong>de</strong> <strong>dados</strong> e com as operações executadas (por ex<strong>em</strong>plo,<br />

verificando pré-condições e/ou explorando alternativas expressas pelos utilizadores).<br />

Na secção 4.1 <strong>de</strong>screv<strong>em</strong>-se os componentes <strong>de</strong> reconciliação impl<strong>em</strong>entados no protótipo do sis-<br />

t<strong>em</strong>a DOORS e discut<strong>em</strong>-se as suas proprieda<strong>de</strong>s (assim como as proprieda<strong>de</strong>s <strong>de</strong> outras técnicas <strong>de</strong><br />

reconciliação que po<strong>de</strong>riam ser também impl<strong>em</strong>entadas).<br />

Entre os componentes impl<strong>em</strong>entados, po<strong>de</strong>m-se referir aqueles que permit<strong>em</strong> executar as operações<br />

<strong>em</strong> todas as réplicas segundo uma or<strong>de</strong>m causal ou segundo uma or<strong>de</strong>m total (recorrendo a técnicas<br />

pessimistas ou optimistas). Também foi criado um componente que permite manter as intenções dos<br />

utilizadores recorrendo à transformação <strong>de</strong> operações [159].<br />

3.3.5 Awareness<br />

O componente <strong>de</strong> awareness controla o processamento da informação <strong>de</strong> awareness produzida durante a<br />

execução das operações. Como se discutiu na secção 2.3.4, exist<strong>em</strong> duas aproximações principais para<br />

processar esta informação. A primeira consiste <strong>em</strong> manter esta informação com o coobjecto <strong>de</strong> forma

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

Saved successfully!

Ooh no, something went wrong!