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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

160 CAPÍTULO 10. SISTEMA DE RECONCILIAÇÃO SQLICECUBE<br />

• [a,t0,t1,...,tn,b] ≡ [a,b,t0,t1,...,tn], sse in<strong>de</strong>pen<strong>de</strong>ntes(t0,b) ∧ ... ∧ in<strong>de</strong>pen<strong>de</strong>ntes(tn,b);<br />

• [a,t0,t1,...,tn,b] ≡ [t0,t1,...,tn,a,b], sse in<strong>de</strong>pen<strong>de</strong>ntes(a,t0) ∧ ... ∧ in<strong>de</strong>pen<strong>de</strong>ntes(a,tn).<br />

Adicionalmente, é necessário garantir que as intenções dos utilizadores expressas através <strong>de</strong> relações<br />

da aplicação estabelecidas entre as transacções são respeitadas. Para tal, aplicam-se as seguintes regras<br />

s<strong>em</strong>pre que se comprime um par <strong>de</strong> transacções a e b usando qualquer das regras especificadas:<br />

• Se a pertence a um conjunto <strong>de</strong> transacções alternativas A (relação alternativas), todas as transac-<br />

ções A \ {a} são r<strong>em</strong>ovidas da sequência produzida. A mesma regra é aplicada a b.<br />

• Se a pertence a um grupo indivisível, a transacção que resulta da compressão também <strong>de</strong>ve per-<br />

tencer a esse grupo indivisível (se o resultado for a sequência vazia, todas as transacções do grupo<br />

indivisível <strong>de</strong>v<strong>em</strong> ser executadas com sucesso). A mesma regra é aplicada a b.<br />

• Se existe uma relação pre<strong>de</strong>cessor/sucessor fraco ou pre<strong>de</strong>cessor/sucessor entre a e b, essa relação<br />

<strong>de</strong>saparece.<br />

• Se a t<strong>em</strong> um pre<strong>de</strong>cessor (sucessor) t (relação pre<strong>de</strong>cessor/sucessor fraco ou pre<strong>de</strong>ces-<br />

sor/sucessor), a mesma relação <strong>de</strong>ve ser estabelecida entre a transacção resultado da compressão e<br />

t. A mesma regra é aplicada a b.<br />

A sequência <strong>de</strong> transacções a propagar para o servidor, armazenada num cliente, é comprimida in-<br />

cr<strong>em</strong>entalmente. Assim, o cliente verifica imediatamente se po<strong>de</strong> comprimir cada nova transacção 5<br />

10.5 Extracção automática <strong>de</strong> relações<br />

A extracção automática <strong>de</strong> relações entre as transacções móveis é executada a partir da análise estática<br />

dos seus programas. Este processo consiste <strong>em</strong> dois passos. Primeiro, para cada transacção, extrai-<br />

-se a informação sobre os <strong>dados</strong> lidos, os <strong>dados</strong> escritos, e as pré-condições que levam ao sucesso da<br />

transacção. Segundo, as relações entre duas transacções são inferidas comparando a informação obtida<br />

anteriormente. Nesta secção <strong>de</strong>talha-se cada um <strong>de</strong>stes processos.<br />

A análise estática <strong>de</strong> programas [49] foi usada <strong>em</strong> vários sist<strong>em</strong>as com várias finalida<strong>de</strong>s, entre as<br />

quais se <strong>de</strong>stacam a verificação da correcção [48, 69, 10] e equivalência <strong>de</strong> programas [92]. No entanto,<br />

que o autor saiba, este trabalho é o primeiro a utilizar uma aproximação similar na reconciliação <strong>de</strong> <strong>dados</strong>.<br />

A análise estática executada no sist<strong>em</strong>a SqlIceCube apresenta algumas características pouco comuns: é<br />

executada durante o funcionamento do sist<strong>em</strong>a e a informação extraída dos programas é usada para<br />

inferir relações diferentes da equivalência entre dois programas.<br />

5 No âmbito do sist<strong>em</strong>a Mobisnap, apenas as transacções não garantidas localmente são comprimidas.

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

Saved successfully!

Ooh no, something went wrong!