11.04.2013 Views

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

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

104 CAPÍTULO 7. APRESENTAÇÃO DO SISTEMA MOBISNAP<br />

1 -- ENCOMENDA DE PRODUTO: nome = "BLUE THING"; quantida<strong>de</strong> = 10; preço máximo = 50.00<br />

2 -- alternativa: nome = "RED THING"; quantida<strong>de</strong> = 5; preço máximo = 40.00<br />

3 DECLARE<br />

4 prd_price FLOAT;<br />

5 prd_stock INTEGER;<br />

6 BEGIN --- Primeira alternativa ---<br />

7 SELECT price,stock INTO prd_price,prd_stock FROM products WHERE name=’BLUE THING’;<br />

8 IF prd_price = 10 THEN<br />

9 UPDATE products SET stock = prd_stock - 10 WHERE name = ’BLUE THING’;<br />

10 INSERT INTO or<strong>de</strong>rs VALUES(newid,’Clt foo’,’BLUE THING’,10,prd_price,’to ptocess’);<br />

11 NOTIFY( ’SMTP’, ’sal-07@thingco.pt’, ’Encomenda aceite...’);<br />

12 COMMIT (’BLUE THING’,prd_price); -- Conclui a transacção e <strong>de</strong>volve<br />

13 END IF; -- informação sobre a encomenda efecutada<br />

14 --- Segunda alternativa ---<br />

15 SELECT price,stock INTO prd_price,prd_stock FROM products WHERE name=’RED THING’;<br />

16 IF prd_price = 5 THEN<br />

17 UPDATE products SET stock = prd_stock - 5 WHERE name = ’RED THING’;<br />

18 INSERT INTO or<strong>de</strong>rs VALUES(newid,’Clt foo’,’RED THING’,5,prd_price,’to ptocess’);<br />

19 NOTIFY( ’SMTP’, ’sal-07@thingco.pt’, ’Encomenda aceite...’);<br />

20 COMMIT (’RED THING’,prd_price); -- Conclui a transacção e <strong>de</strong>volve informação sobre a<br />

21 END IF; -- encomenda efecutada<br />

22 ROLLBACK; -- Caso nenhuma alterantiva seja aceitável aborta a transacção<br />

23 ON ROLLBACK NOTIFY( ’SMS’, ’351927435456’, ’Encomenda impossível...’);<br />

24 END;<br />

Figura 7.1: Transacção <strong>móvel</strong> que introduz uma nova encomenda, com dois produtos alternativos, sub-<br />

metida por um ven<strong>de</strong>dor.<br />

<strong>de</strong> <strong>dados</strong> que representa o estado oficial dos <strong>dados</strong>. Os clientes mantêm cópias parciais, fracamente<br />

consistentes, dos <strong>dados</strong>. Uma cópia parcial contém um subconjunto <strong>de</strong> tabelas. Para cada tabela, apenas<br />

é mantido um subconjunto <strong>de</strong> colunas. Finalmente, apenas um subconjunto dos registos <strong>de</strong> cada tabela<br />

está contido na cópia parcial. A possibilida<strong>de</strong> <strong>de</strong> cada cliente manter apenas os <strong>dados</strong> que necessita (e<br />

po<strong>de</strong> armazenar) é importante para permitir a utilização do sist<strong>em</strong>a <strong>em</strong> dispositivos móveis com recursos<br />

limitados (por ex<strong>em</strong>plo, PDAs), como se referiu na secção 2.3.5.<br />

As aplicações são executadas nos clientes. O sist<strong>em</strong>a adopta uma política optimista <strong>de</strong> acesso aos<br />

<strong>dados</strong>, na qual as aplicações po<strong>de</strong>m ace<strong>de</strong>r e modificar a cópia mantida no cliente. A esta cópia, na qual<br />

se executam todas as transacções submetidas no cliente, chama-se versão provisória dos <strong>dados</strong>. Quando<br />

os recursos disponíveis no cliente o permit<strong>em</strong>, o cliente mantém adicionalmente uma versão estável dos<br />

<strong>dados</strong>, a qual mantém a cópia obtida a partir do servidor, modificada com as transacções executadas<br />

localmente cujo resultado po<strong>de</strong> ser garantido pelo sist<strong>em</strong>a <strong>de</strong> reservas (<strong>de</strong>talhado no próximo capítulo).<br />

As aplicações po<strong>de</strong>m ace<strong>de</strong>r a ambas as versões. Durante os períodos <strong>de</strong> boa conectivida<strong>de</strong>, as aplicações<br />

po<strong>de</strong>m ace<strong>de</strong>r directamente ao servidor.<br />

Transacções móveis As aplicações modificam o estado da base <strong>de</strong> <strong>dados</strong> submetendo pequenos pro-<br />

gramas escritos num subconjunto estendido da linguag<strong>em</strong> PL/SQL [112], que se <strong>de</strong>nominam transacções<br />

móveis (ou simplesmente transacções, nas situações <strong>em</strong> que a sua utilização não possa levar a interpreta-<br />

ções incorrectas). Na figura 7.1 apresenta-se um ex<strong>em</strong>plo <strong>de</strong> uma transacções <strong>móvel</strong> para submeter uma

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

Saved successfully!

Ooh no, something went wrong!