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

162 CAPÍTULO 10. SISTEMA DE RECONCILIAÇÃO SQLICECUBE O conjunto de leitura associado a um caminho de execução é obtido a partir dos elementos dos conjuntos de escrita e do conjunto de pré-condições, obtendo todos os valores especiais read(...) usados na descrição semântica desses elementos. Associado a cada caminho de execução que termina com sucesso obtém-se um grupo de informação semântica composto pelo conjunto de escrita, de leitura e de pré-condições. Relativamente aos caminhos de execução que terminam numa instrução rollback não se obtém qualquer informação. Assim, associada a cada transacção podem existir vários grupos de informação semântica. Exemplo: Considere-se o seguinte programa: 1 BEGIN 2 IF c1 THEN 3 IF c2 THEN 4 COMMIT; 5 ELSE 6 COMMIT; 7 END IF; 8 ELSEIF c3 THEN 9 ROLLBACK; 10 END IF; 11 END Este programa tem quatro caminhos de execução possíveis. O primeiro termina na instrução commit da linha 4. Neste caso, o conjunto de pré-condições inclui os valores precond(c1) e precond(c2). O segundo termina na instrução commit da linha 6 e o respectivo conjunto de pré-condições inclui os valores precond(c1) e precond(not c2). O terceiro termina na instrução rollback da linha 9. Assim, não se extrai informação semântica deste caminho de execução. O quarto caminho de execução termina no fim do programa e o conjunto de pré-condições inclui os valores precond(not c1) e precond(not c3). Desta forma, associado e esta transacção existem três grupos de informação semântica. Para que seja possível executar a transacção num dado estado da base de dados é apenas necessário que todos os valores de um dos conjuntos de pré-condições seja verdadeiro nesse estado. Na figura 10.5 apresenta-se uma transacção móvel que introduz uma nova encomenda (semelhante à transacção apresentada na figura 8.1, mas usando identificadores numéricos para identificar os produtos, vendedores e clientes). Neste caso, apenas existe um caminho de execução possível, sendo a informação semântica extraída apresentada na figura como comentários (linhas iniciadas por --). 10.5.2 Inferir relações As relações estáticas entre cada par de transacções são inferidas a partir da informação semântica extraída de cada uma das transacções usando as regras que se apresentam nesta subsecção. Diz-se que o valor de uma relação é verdadeiro se a relação se estabelece entre as duas transacções e falso no caso contrário. Durante a avaliação das regras definidas é necessário verificar se as descrições semânticas obtidas a partir das transacções referem os mesmos elementos de dados. Esta verificação inclui os elementos

10.5. EXTRACÇÃO AUTOMÁTICA DE RELAÇÕES 163 BEIGN SELECT stock,price INTO l_stock,l_price FROM products WHERE id = 80; -- l_stock = read(products,id=80,stock) -- l_price = read(products,id=80,price) IF l_price = 10 THEN -- precond(read(products,id=80,stock)>=10) -- precond(read(products,id=80,price)=10),precond(read(products,id=80,price)

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

O conjunto <strong>de</strong> leitura associado a um caminho <strong>de</strong> execução é obtido a partir dos el<strong>em</strong>entos dos<br />

conjuntos <strong>de</strong> escrita e do conjunto <strong>de</strong> pré-condições, obtendo todos os valores especiais read(...) usados<br />

na <strong>de</strong>scrição s<strong>em</strong>ântica <strong>de</strong>sses el<strong>em</strong>entos.<br />

Associado a cada caminho <strong>de</strong> execução que termina com sucesso obtém-se um grupo <strong>de</strong> informação<br />

s<strong>em</strong>ântica composto pelo conjunto <strong>de</strong> escrita, <strong>de</strong> leitura e <strong>de</strong> pré-condições. Relativamente aos caminhos<br />

<strong>de</strong> execução que terminam numa instrução rollback não se obtém qualquer informação. Assim, associada<br />

a cada transacção po<strong>de</strong>m existir vários grupos <strong>de</strong> informação s<strong>em</strong>ântica.<br />

Ex<strong>em</strong>plo: Consi<strong>de</strong>re-se o seguinte programa:<br />

1 BEGIN<br />

2 IF c1 THEN<br />

3 IF c2 THEN<br />

4 COMMIT;<br />

5 ELSE<br />

6 COMMIT;<br />

7 END IF;<br />

8 ELSEIF c3 THEN<br />

9 ROLLBACK;<br />

10 END IF;<br />

11 END<br />

Este programa t<strong>em</strong> quatro caminhos <strong>de</strong> execução possíveis. O primeiro termina na instrução commit<br />

da linha 4. Neste caso, o conjunto <strong>de</strong> pré-condições inclui os valores precond(c1) e precond(c2). O<br />

segundo termina na instrução commit da linha 6 e o respectivo conjunto <strong>de</strong> pré-condições inclui os<br />

valores precond(c1) e precond(not c2). O terceiro termina na instrução rollback da linha 9. Assim, não<br />

se extrai informação s<strong>em</strong>ântica <strong>de</strong>ste caminho <strong>de</strong> execução. O quarto caminho <strong>de</strong> execução termina no<br />

fim do programa e o conjunto <strong>de</strong> pré-condições inclui os valores precond(not c1) e precond(not c3).<br />

Desta forma, associado e esta transacção exist<strong>em</strong> três grupos <strong>de</strong> informação s<strong>em</strong>ântica. Para que<br />

seja possível executar a transacção num dado estado da base <strong>de</strong> <strong>dados</strong> é apenas necessário que todos os<br />

valores <strong>de</strong> um dos conjuntos <strong>de</strong> pré-condições seja verda<strong>de</strong>iro nesse estado.<br />

Na figura 10.5 apresenta-se uma transacção <strong>móvel</strong> que introduz uma nova encomenda (s<strong>em</strong>elhante à<br />

transacção apresentada na figura 8.1, mas usando i<strong>de</strong>ntificadores numéricos para i<strong>de</strong>ntificar os produtos,<br />

ven<strong>de</strong>dores e clientes). Neste caso, apenas existe um caminho <strong>de</strong> execução possível, sendo a informação<br />

s<strong>em</strong>ântica extraída apresentada na figura como comentários (linhas iniciadas por --).<br />

10.5.2 Inferir relações<br />

As relações estáticas entre cada par <strong>de</strong> transacções são inferidas a partir da informação s<strong>em</strong>ântica extraída<br />

<strong>de</strong> cada uma das transacções usando as regras que se apresentam nesta subsecção. Diz-se que o valor <strong>de</strong><br />

uma relação é verda<strong>de</strong>iro se a relação se estabelece entre as duas transacções e falso no caso contrário.<br />

Durante a avaliação das regras <strong>de</strong>finidas é necessário verificar se as <strong>de</strong>scrições s<strong>em</strong>ânticas obtidas<br />

a partir das transacções refer<strong>em</strong> os mesmos el<strong>em</strong>entos <strong>de</strong> <strong>dados</strong>. Esta verificação inclui os el<strong>em</strong>entos

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

Saved successfully!

Ooh no, something went wrong!