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.

10.5. EXTRACÇÃO AUTOMÁTICA DE RELAÇÕES 171<br />

init stats<br />

IF c1 THEN<br />

alt. stats 1<br />

COMMIT<br />

ENDIF<br />

IF c2 THEN<br />

alt. stats 2<br />

COMMIT<br />

ENDIF<br />

....<br />

IF cn THEN<br />

alt. stats n<br />

COMMIT<br />

ENDIF<br />

ROLLBACK<br />

init stats<br />

IF c1 THEN<br />

alt. stats 1<br />

COMMIT<br />

ELSE<br />

ABORT<br />

ENDIF<br />

init stats<br />

IF c2 AND NOT c1 THEN<br />

alt. stats 2<br />

COMMIT<br />

ELSE<br />

ABORT<br />

ENDIF<br />

conjunto or<strong>de</strong>nado <strong>de</strong><br />

alternativas<br />

init stats<br />

IF cn AND NOT c1 AND<br />

... THEN<br />

alt. stats n<br />

COMMIT<br />

ELSE<br />

ABORT<br />

ENDIF<br />

...<br />

Figura 10.9: Divisão <strong>de</strong> uma transacção composta por uma sequência <strong>de</strong> instruções if num conjunto<br />

or<strong>de</strong>nado <strong>de</strong> transacções alternativas.<br />

10.5.4.3 Transacções complexas<br />

O mecanismo <strong>de</strong> inferência <strong>de</strong> relações po<strong>de</strong> ter dificulda<strong>de</strong> <strong>em</strong> lidar com transacções longas e complexas<br />

que acedam a muitos el<strong>em</strong>entos <strong>de</strong> <strong>dados</strong> ou incluam vários caminhos <strong>de</strong> execução possíveis. Devido<br />

a estas características, estas transacções po<strong>de</strong>m estabelecer relações, possivelmente contraditórias, com<br />

um elevado número <strong>de</strong> outras transacções. Assim, as relações estabelecidas po<strong>de</strong>m tornar-se inúteis para<br />

guiar a pesquisa executada pelo algoritmo <strong>de</strong> reconciliação.<br />

Por ex<strong>em</strong>plo, a utilida<strong>de</strong> da relação <strong>de</strong> comutativida<strong>de</strong> consiste <strong>em</strong> separar as transacções <strong>em</strong> con-<br />

juntos <strong>de</strong> transacções in<strong>de</strong>pen<strong>de</strong>ntes. O facto <strong>de</strong> as transacções complexas ten<strong>de</strong>r<strong>em</strong> a ser comutativas<br />

com um menor número <strong>de</strong> outras transacções põe <strong>em</strong> causa a possibilida<strong>de</strong> <strong>de</strong> separar as transacções a<br />

reconciliar e, portanto, o papel que esta relação <strong>de</strong>ve <strong>de</strong>s<strong>em</strong>penhar.<br />

Para evitar estes probl<strong>em</strong>as, a API do sist<strong>em</strong>a SqlIceCube permite aos programadores submeter<strong>em</strong><br />

as transacções longas como um conjunto <strong>de</strong> pequenas transacções ligadas pelas relações da aplicação<br />

apropriadas. No protótipo do sist<strong>em</strong>a Mobisnap, esta API não está directamente disponível 8 .<br />

O sist<strong>em</strong>a SqlIceCube po<strong>de</strong> ainda pré-processar as transacções móveis complexas e dividi-las num<br />

conjunto <strong>de</strong> pequenas transacções ligadas pelas relações da aplicação apropriadas. As seguintes regras<br />

<strong>de</strong> pré-processamento po<strong>de</strong>m ser aplicadas:<br />

• A separação dos vários caminhos <strong>de</strong> execução <strong>de</strong> uma transacção <strong>móvel</strong> num conjunto or<strong>de</strong>nado<br />

<strong>de</strong> transacções alternativas (usando as relações alternativas e pre<strong>de</strong>cessor/sucessor fraco). Nas<br />

8 Para permitir que as aplicações especifiqu<strong>em</strong> as relações da aplicação directamente, garantindo o respeito pelas relações<br />

<strong>de</strong>finidas durante o processamento normal, po<strong>de</strong>r-se-ia usar a seguinte aproximação. As transacções ligadas pela relação grupo<br />

indivisível são executadas como uma única transacção apenas após a submissão da última transacção que pertença ao grupo<br />

indivisível. Para respeitar as outras relações é apenas necessário abortar as transacções cuja execução viole as relações estabe-<br />

lecidas, tendo <strong>em</strong> conta as transacções já executadas com sucesso.

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

Saved successfully!

Ooh no, something went wrong!