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
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)
- Page 129 and 130: 7.3. TRANSACÇÕES MÓVEIS 111 7.3
- Page 131 and 132: 7.3. TRANSACÇÕES MÓVEIS 113 abor
- Page 133 and 134: Capítulo 8 Reservas Neste capítul
- Page 135 and 136: 8.1. TIPOS DE RESERVAS 117 8.1.4 Re
- Page 137 and 138: 8.2. CONCESSÃO E GARANTIA DE RESPE
- Page 139 and 140: 8.2. CONCESSÃO E GARANTIA DE RESPE
- Page 141 and 142: 8.3. PROCESSAMENTO DAS TRANSACÇÕE
- Page 143 and 144: 8.4. PROCESSAMENTO DAS TRANSACÇÕE
- Page 145 and 146: 8.5. EXEMPLOS 127 id tipo tabela co
- Page 147 and 148: 8.5. EXEMPLOS 129 1 ------ COMPRA 1
- Page 149 and 150: Capítulo 9 Avaliação do modelo b
- Page 151 and 152: 9.1. APLICAÇÕES 133 1 ------ REMO
- Page 153 and 154: 9.2. RESERVAS 135 dentemente em dif
- Page 155 and 156: 9.2. RESERVAS 137 seguinte forma. P
- Page 157 and 158: 9.2. RESERVAS 139 Commit (% total)
- Page 159 and 160: 9.2. RESERVAS 141 Commit (% total)
- Page 161 and 162: 9.2. RESERVAS 143 Commit (% total)
- Page 163 and 164: 9.2. RESERVAS 145 Commit (% total)
- Page 165 and 166: 9.2. RESERVAS 147 Por exemplo, no c
- Page 167 and 168: Capítulo 10 Sistema de reconcilia
- Page 169 and 170: 10.2. RELAÇÕES ESTÁTICAS 151 10.
- Page 171 and 172: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 173 and 174: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 175 and 176: 10.3. ALGORITMO DE RECONCILIAÇÃO
- Page 177 and 178: 10.4. OPTIMIZAÇÃO DA RECONCILIAÇ
- Page 179: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 183 and 184: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 185 and 186: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 187 and 188: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 189 and 190: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 191 and 192: Capítulo 11 Trabalho relacionado A
- Page 193 and 194: 11.1. REPLICAÇÃO 175 11.1.2 Arqui
- Page 195 and 196: 11.1. REPLICAÇÃO 177 a unidade de
- Page 197 and 198: 11.1. REPLICAÇÃO 179 O mecanismo
- Page 199 and 200: 11.1. REPLICAÇÃO 181 dade 3 . Est
- Page 201 and 202: 11.1. REPLICAÇÃO 183 e ser propag
- Page 203 and 204: 11.1. REPLICAÇÃO 185 ordem de exe
- Page 205 and 206: 11.1. REPLICAÇÃO 187 execução d
- Page 207 and 208: 11.2. INFORMAÇÃO SOBRE A EVOLUÇ
- Page 209 and 210: 11.3. INTEGRAÇÃO DE SESSÕES SÍN
- Page 211 and 212: Capítulo 12 Conclusões A generali
- Page 213 and 214: 12.1. SUMÁRIO 195 é executado no
- Page 215 and 216: Apêndice A DOORS Este apêndice ap
- Page 217 and 218: A.1. FILIAÇÃO 199 A operação de
- Page 219 and 220: A.1. FILIAÇÃO 201 anterior à de
- Page 221 and 222: A.1. FILIAÇÃO 203 associados e o
- Page 223 and 224: A.1. FILIAÇÃO 205 Actualização
- Page 225 and 226: A.1. FILIAÇÃO 207 • Periodicame
- Page 227 and 228: A.1. FILIAÇÃO 209 estas situaçõ
- Page 229 and 230: A.1. FILIAÇÃO 211 2. Um servidor
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