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

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.

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>).

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

Saved successfully!

Ooh no, something went wrong!