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

152 CAPÍTULO 10. SISTEMA DE RECONCILIAÇÃO SQLICECUBE 10.2.2 Relações dos dados As relações dos dados (data contraints) exprimem relações, entre duas transacções, que reflectem a semântica das operações e dos dados, independentemente do estado da base de dados. Foram definidas as seguintes relações: Comutativas Indica que duas transacções são comutativas, i.e., que o resultado da sua execução é idên- tico independentemente da ordem de execução (se executadas consecutivamente). Duas transac- ções t1 e t2 são comutativas sse ∀s ∈ S,t1(t2(s)) = t2(t1(s)), com S o conjunto de todos os estados possíveis da base de dados, e t(s) o estado da base de dados que resulta de executar a transacção t no estado s. Impossibilita Indica que uma transacção torna impossível a execução (sucessiva) de outra transacção. t1 impossibilita t2 sse ∀s ∈ S,¬valido(t2,t1(s)), com valido(t,s) verdadeiro sse é possível executar com sucesso a transacção t no estado s. Por exemplo, uma transacção que reserve um dado lugar num comboio impossibilita a execução com sucesso de outra transacção que reserve o mesmo lugar. Torna possível Indica que uma transacção torna possível a execução (sucessiva) de outra transacção. t1 torna possível t2 sse ∀s ∈ S,valido(t2,t1(s)). Por exemplo, uma transacção que cancele uma reserva de um dado lugar num comboio possibilita a execução com sucesso de outra transacção que reserve o mesmo lugar. Desfavorece Indica que uma transacção desfavorece a execução (sucessiva) de outra transacção. t1 desfavorece t2 sse ∃s ∈ S : valido(t2,s) ∧ ¬valido(t2,t1(s)). Por exemplo, uma transacção que aumente o preço de um produto desfavorece a possibilidade de se executar uma transacção cujo preço a usar tenha um limite máximo. Favorece Indica que uma transacção favorece a execução (sucessiva) de outra transacção. t1 favorece t2 sse ∃s ∈ S,¬valido(t2,s) ∧ valido(t2,t1(s)). Por exemplo, uma transacção que reduza o preço de um produto favorece a possibilidade de se executar uma transacção cujo preço a usar tenha um limite máximo. Estas relações são extraídas automaticamente a partir do código das transacções móveis como se explica na secção 10.5. 10.2.3 Transacções independentes Com base nas relações anteriores, definiu-se a relação de independência entre duas transacções. Duas transacções dizem-se independentes se a execução de uma transacção não puder influenciar a execução

10.3. ALGORITMO DE RECONCILIAÇÃO 153 de outra transacção. Se duas transacções forem independentes, a ordem pela qual são executadas não influencia o resultado final. Face às relações definidas anteriormente, as transacções a e b são indepen- dentes sse: independentes(a,b) =¬predecessor/sucessor(a,b) ∧ ¬predecessor/sucessor(b,a)∧ ¬predecessor/sucessor f raco(a,b) ∧ ¬predecessor/sucessor f raco(b,a)∧ ∧ comutativas(a,b) 10.3 Algoritmo de reconciliação O algoritmo de reconciliação define a ordem de execução das transacções na base de dados. O espaço de soluções possíveis é explorado por amostragem de forma heurística. Para tal, sucessivas soluções são cri- adas e executadas até que uma solução satisfatória seja encontrada. Cada solução gerada é independente das anteriores, i.e., não se usa uma aproximação de optimização local. Uma solução inclui apenas as transacções executadas com sucesso. As restantes transacções podem ter sido excluídas da solução por não poderem ser executadas no estado final da base de dados ou por vi- olarem uma relação estática (por exemplo, pertencer a um conjunto de alternativas, do qual foi executada uma transacção). A cada transacção pode ser atribuído um valor numérico que representa a sua importância no contexto da aplicação (no sistema Mobisnap, assume-se que todas as transacções tem valor igual a um). A soma dos valores numéricos das transacções incluídas numa sequência representa o valor da solução — o sistema SqlIceCube tenta criar uma sequência de transacções que maximize este valor. Para melhorar o desempenho do sistema de reconciliação decompõe-se a criação da sequência de execução em vários subproblemas. Cada subproblema consiste em criar uma parte da sequência a partir de um subconjunto de transacções independentes do resto das transacções. Nesta secção detalham-se os algoritmos usados no sistema de reconciliação. 10.3.1 Heurística Uma solução (sequência de execução) é criada incrementalmente seleccionando em cada passo uma transacção para execução. Esta selecção é efectuada, aleatoriamente, entre as transacções com mérito mais elevado. O mérito associado a uma transacção é estimado, de forma heurística, a partir das relações estáticas que se estabelecem entre as transacções. Nesta estimativa, apenas são consideradas as transacções que podem ser executadas. O mérito de uma transacção que não pode ser executada imediatamente por as relações da aplicação estabelecidas não estarem satisfeitas (por exemplo, uma transacção que é sucessora

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

10.2.2 Relações dos <strong>dados</strong><br />

As relações dos <strong>dados</strong> (data contraints) exprim<strong>em</strong> relações, entre duas transacções, que reflect<strong>em</strong> a<br />

s<strong>em</strong>ântica das operações e dos <strong>dados</strong>, in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente do estado da base <strong>de</strong> <strong>dados</strong>.<br />

Foram <strong>de</strong>finidas as seguintes relações:<br />

Comutativas Indica que duas transacções são comutativas, i.e., que o resultado da sua execução é idên-<br />

tico in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente da or<strong>de</strong>m <strong>de</strong> execução (se executadas consecutivamente). Duas transac-<br />

ções t1 e t2 são comutativas sse ∀s ∈ S,t1(t2(s)) = t2(t1(s)), com S o conjunto <strong>de</strong> todos os estados<br />

possíveis da base <strong>de</strong> <strong>dados</strong>, e t(s) o estado da base <strong>de</strong> <strong>dados</strong> que resulta <strong>de</strong> executar a transacção t<br />

no estado s.<br />

Impossibilita Indica que uma transacção torna impossível a execução (sucessiva) <strong>de</strong> outra transacção.<br />

t1 impossibilita t2 sse ∀s ∈ S,¬valido(t2,t1(s)), com valido(t,s) verda<strong>de</strong>iro sse é possível executar<br />

com sucesso a transacção t no estado s. Por ex<strong>em</strong>plo, uma transacção que reserve um dado lugar<br />

num comboio impossibilita a execução com sucesso <strong>de</strong> outra transacção que reserve o mesmo<br />

lugar.<br />

Torna possível Indica que uma transacção torna possível a execução (sucessiva) <strong>de</strong> outra transacção.<br />

t1 torna possível t2 sse ∀s ∈ S,valido(t2,t1(s)). Por ex<strong>em</strong>plo, uma transacção que cancele uma<br />

reserva <strong>de</strong> um dado lugar num comboio possibilita a execução com sucesso <strong>de</strong> outra transacção<br />

que reserve o mesmo lugar.<br />

Desfavorece Indica que uma transacção <strong>de</strong>sfavorece a execução (sucessiva) <strong>de</strong> outra transacção. t1<br />

<strong>de</strong>sfavorece t2 sse ∃s ∈ S : valido(t2,s) ∧ ¬valido(t2,t1(s)). Por ex<strong>em</strong>plo, uma transacção que<br />

aumente o preço <strong>de</strong> um produto <strong>de</strong>sfavorece a possibilida<strong>de</strong> <strong>de</strong> se executar uma transacção cujo<br />

preço a usar tenha um limite máximo.<br />

Favorece Indica que uma transacção favorece a execução (sucessiva) <strong>de</strong> outra transacção. t1 favorece<br />

t2 sse ∃s ∈ S,¬valido(t2,s) ∧ valido(t2,t1(s)). Por ex<strong>em</strong>plo, uma transacção que reduza o preço<br />

<strong>de</strong> um produto favorece a possibilida<strong>de</strong> <strong>de</strong> se executar uma transacção cujo preço a usar tenha um<br />

limite máximo.<br />

Estas relações são extraídas automaticamente a partir do código das transacções móveis como se<br />

explica na secção 10.5.<br />

10.2.3 Transacções in<strong>de</strong>pen<strong>de</strong>ntes<br />

Com base nas relações anteriores, <strong>de</strong>finiu-se a relação <strong>de</strong> in<strong>de</strong>pendência entre duas transacções. Duas<br />

transacções diz<strong>em</strong>-se in<strong>de</strong>pen<strong>de</strong>ntes se a execução <strong>de</strong> uma transacção não pu<strong>de</strong>r influenciar a execução

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

Saved successfully!

Ooh no, something went wrong!