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
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
- Page 119 and 120: 6.3. CLIENTES 101 A propagação as
- Page 121 and 122: Capítulo 7 Apresentação do siste
- Page 123 and 124: 7.1. MODELO GERAL 105 encomenda de
- Page 125 and 126: 7.2. ARQUITECTURA 107 BD réplica C
- Page 127 and 128: 7.2. ARQUITECTURA 109 O subsistema
- 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: 10.2. RELAÇÕES ESTÁTICAS 151 10.
- 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 and 180: 10.5. EXTRACÇÃO AUTOMÁTICA DE RE
- Page 181 and 182: 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
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