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
116 CAPÍTULO 8. RESERVAS de um lugar num comboio. Esta reserva é semelhante a um trinco de escrita (write lock) de pequena granularidade e influencia as instruções SQL select e update. Uma reserva slot fornece o direito exclusivo de inserir, remover ou modificar registos com valores pré-determinados para algumas colunas. Por exemplo, um utilizador pode reservar o direito de alterar uma agenda durante um dado período de tempo. Esta reserva é semelhante a um trinco de predicado (predicate lock) [60], incluindo registos existentes e não existentes. Esta reserva influencia as instruções SQL select, insert, delete e update. Este tipo de reservas permite, não só, garantir a possibilidade de executar alterações, mas também, garantir que o estado da base de dados no servidor será idêntico ao observado no cliente. Assim, pode ser visto como um mecanismo que permite mover a cópia principal de um subconjunto dos dados para um computador móvel. O uso deste tipo de reservas deve ser efectuado cuidadosamente, porque elas impedem outros uti- lizadores de modificar os dados reservados. No entanto, se a granularidade das reservas obtidas pelos utilizadores for adequada, estas reservas fornecem um mecanismo eficaz que contribui para o funciona- mento correcto do sistema garantindo o resultado das transacções independentemente. 8.1.2 Reserva value-lock Uma reserva value-lock garante que o valor de um subconjunto de colunas de um registo não será mo- dificado concorrentemente. Por exemplo, pode garantir-se que o identificador de um produto não é modificado. Esta reserva é semelhante a um trinco de leitura (read lock) de pequena granularidade e influencia a instrução SQL select. Este tipo de reservas apenas permite garantir que o estado da base de dados no servidor será idêntico ao observado no cliente. 8.1.3 Reservas value-use Uma reserva value-use permite a uma transacção móvel usar um dado valor para um dado elemento de dados, independentemente do seu valor actual. A necessidade deste tipo de garantias é comum na vida real — por exemplo, um vendedor ambulante pode garantir o preço de uma encomenda (igual ao preço que ele conhece) independentemente de qualquer actualização que tenha sido efectuada concorrente- mente. Uma transacção que use esta reserva observa o valor reservado no cliente e no servidor (as instruções de leitura devolvem o valor reservado em vez do valor actual da base de dados).
8.1. TIPOS DE RESERVAS 117 8.1.4 Reservas escrow Uma reserva escrow fornece o direito exclusivo de usar uma parte de um recurso divisível representado por um elemento de dados numérico. Por exemplo, a existência de um produto (stock) pode ser dividido entre vários vendedores móveis. Esta reserva é baseada no modelo de divisão (escrow) [111]. O modelo de divisão é aplicado a elementos de dados numéricos que representam recursos idênticos 2 e divisíveis — por exemplo, o número de CDs existentes num armazém, x. Para estes dados é comum que as seguintes propriedades sejam válidas. Primeiro, eles são actualizados através da adição e subtracção de constantes — por exemplo, quando k CDs são vendidos, faz-se x ← x − k. Segundo, é necessário manter restrições quanto aos valores que esses dados podem tomar — por exemplo, a existência mínima de CDs é min, ou seja x ≥ min. Para estes elementos de dados (chamados elementos de dados fungíveis) é possível dividir os recursos disponíveis por várias réplicas — por exemplo, pode dividir-se x em n partes xi,1 ≤ i ≤ n, tal que x = ∑xi. Cada réplica tem associada uma restrição local que garante a validade da restrição global, xi ≥ mini : min = ∑mini. Cada réplica pode garantir independentemente o resultado das transacções que respeitam as restrições locais, i.e., é possível garantir o resultado de transacções que subtraiam até xi − mini (valor agregado relativo a todas as transacções garantidas na réplica i) a xi. Exemplo: Seja dez o valor actual da existência de CDs (x = 10) e dois o seu valor mínimo (x ≥ 2). Usando o modelo de divisão (escrow) é possível dividir a existência actual por duas réplicas — por exemplo, a primeira réplica pode ficar com seis CDs (x1 = 6) e a segunda réplica com quatro CDs (x2 = 4). A restrição global deve também ser dividida entre as duas réplicas — por exemplo, a existência mínima em cada réplica pode ser igual a um (x1 ≥ 1 ∧ x2 ≥ 1). A primeira (respectivamente segunda) réplica pode garantir transacções que subtraiam até cinco (respectivamente três) CDs à existência de CDs (x1 − min1 = 6 − 1 = 5 e x2 − min2 = 4 − 1 = 3). Discute-se agora a implementação do modelo de divisão no sistema Mobisnap. Para reconhecer os aspectos envolvidos, considere-se a transacção móvel apresentada na figura 8.1, na qual se insere uma nova encomenda submetida por um vendedor móvel. Nesta transacção é possível usar as técnicas de divisão para garantir a disponibilidade da existência do produto. A transacção executa os seguintes passos para actualizar a existência do produto: (1) o valor actual é lido e a validade da operação verificada (linhas 3-4); (2) o valor do elemento de dados que representa a existência é actualizado para reflectir a operação executada (linha 5). Estes passos representam um padrão na actualização de elementos de dados divisíveis. O primeiro aspecto a considerar consiste na garantia da validade da operação (passo 1). Para tal, é 2 Na secção 8.5 mostra-se como é possível solucionar problemas com recursos não idênticos usando o sistema de reservas — por exemplo, a marcação de lugares num comboio.
- Page 83 and 84: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- Page 85 and 86: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- Page 87 and 88: Capítulo 5 Avaliação do modelo d
- Page 89 and 90: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 91 and 92: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 93 and 94: 5.1. EDITOR MULTI-SÍNCRONO DE DOCU
- Page 95 and 96: 5.2. AGENDA PARTILHADA 77 Figura 5.
- Page 97 and 98: 5.2. AGENDA PARTILHADA 79 de awaren
- Page 99 and 100: Capítulo 6 Núcleo do sistema DOOR
- Page 101 and 102: 6.1. COOBJECTOS 83 o mesmo estado i
- Page 103 and 104: 6.2. SERVIDORES 85 global a associa
- Page 105 and 106: 6.2. SERVIDORES 87 segundo servidor
- Page 107 and 108: 6.2. SERVIDORES 89 6.2.2 Sincroniza
- Page 109 and 110: 6.2. SERVIDORES 91 6.2.3 Serviço d
- Page 111 and 112: 6.2. SERVIDORES 93 ao cliente compl
- Page 113 and 114: 6.2. SERVIDORES 95 • Emulação d
- Page 115 and 116: 6.3. CLIENTES 97 do coobjecto consi
- Page 117 and 118: 6.3. CLIENTES 99 seguinte informaç
- 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: Capítulo 8 Reservas Neste capítul
- 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 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
116 CAPÍTULO 8. RESERVAS<br />
<strong>de</strong> um lugar num comboio. Esta reserva é s<strong>em</strong>elhante a um trinco <strong>de</strong> escrita (write lock) <strong>de</strong> pequena<br />
granularida<strong>de</strong> e influencia as instruções SQL select e update.<br />
Uma reserva slot fornece o direito exclusivo <strong>de</strong> inserir, r<strong>em</strong>over ou modificar registos com valores<br />
pré-<strong>de</strong>terminados para algumas colunas. Por ex<strong>em</strong>plo, um utilizador po<strong>de</strong> reservar o direito <strong>de</strong> alterar<br />
uma agenda durante um dado período <strong>de</strong> t<strong>em</strong>po. Esta reserva é s<strong>em</strong>elhante a um trinco <strong>de</strong> predicado<br />
(predicate lock) [60], incluindo registos existentes e não existentes. Esta reserva influencia as instruções<br />
SQL select, insert, <strong>de</strong>lete e update.<br />
Este tipo <strong>de</strong> reservas permite, não só, garantir a possibilida<strong>de</strong> <strong>de</strong> executar alterações, mas também,<br />
garantir que o estado da base <strong>de</strong> <strong>dados</strong> no servidor será idêntico ao observado no cliente. Assim, po<strong>de</strong><br />
ser visto como um mecanismo que permite mover a cópia principal <strong>de</strong> um subconjunto dos <strong>dados</strong> para<br />
um computador <strong>móvel</strong>.<br />
O uso <strong>de</strong>ste tipo <strong>de</strong> reservas <strong>de</strong>ve ser efectuado cui<strong>dados</strong>amente, porque elas impe<strong>de</strong>m outros uti-<br />
lizadores <strong>de</strong> modificar os <strong>dados</strong> reservados. No entanto, se a granularida<strong>de</strong> das reservas obtidas pelos<br />
utilizadores for a<strong>de</strong>quada, estas reservas fornec<strong>em</strong> um mecanismo eficaz que contribui para o funciona-<br />
mento correcto do sist<strong>em</strong>a garantindo o resultado das transacções in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente.<br />
8.1.2 Reserva value-lock<br />
Uma reserva value-lock garante que o valor <strong>de</strong> um subconjunto <strong>de</strong> colunas <strong>de</strong> um registo não será mo-<br />
dificado concorrent<strong>em</strong>ente. Por ex<strong>em</strong>plo, po<strong>de</strong> garantir-se que o i<strong>de</strong>ntificador <strong>de</strong> um produto não é<br />
modificado. Esta reserva é s<strong>em</strong>elhante a um trinco <strong>de</strong> leitura (read lock) <strong>de</strong> pequena granularida<strong>de</strong> e<br />
influencia a instrução SQL select.<br />
Este tipo <strong>de</strong> reservas apenas permite garantir que o estado da base <strong>de</strong> <strong>dados</strong> no servidor será idêntico<br />
ao observado no cliente.<br />
8.1.3 Reservas value-use<br />
Uma reserva value-use permite a uma transacção <strong>móvel</strong> usar um dado valor para um dado el<strong>em</strong>ento <strong>de</strong><br />
<strong>dados</strong>, in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente do seu valor actual. A necessida<strong>de</strong> <strong>de</strong>ste tipo <strong>de</strong> garantias é comum na vida<br />
real — por ex<strong>em</strong>plo, um ven<strong>de</strong>dor ambulante po<strong>de</strong> garantir o preço <strong>de</strong> uma encomenda (igual ao preço<br />
que ele conhece) in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente <strong>de</strong> qualquer actualização que tenha sido efectuada concorrente-<br />
mente.<br />
Uma transacção que use esta reserva observa o valor reservado no cliente e no servidor (as instruções<br />
<strong>de</strong> leitura <strong>de</strong>volv<strong>em</strong> o valor reservado <strong>em</strong> vez do valor actual da base <strong>de</strong> <strong>dados</strong>).