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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

7.3. TRANSACÇÕES MÓVEIS 111<br />

7.3 Transacções móveis<br />

As aplicações modificam a base <strong>de</strong> <strong>dados</strong> através da submissão <strong>de</strong> transacções móveis. Uma transac-<br />

ção <strong>móvel</strong> é um pequeno programa especificado num subconjunto da linguag<strong>em</strong> PL/SQL 3 [112]. No<br />

apêndice B.1 <strong>de</strong>talha-se o subconjunto da linguag<strong>em</strong> impl<strong>em</strong>entado no protótipo do sist<strong>em</strong>a Mobisnap.<br />

Relativamente à linguag<strong>em</strong> PL/SQL foram introduzidas as seguintes modificações: (1) as instruções<br />

commit e rollback terminam a execução <strong>de</strong> uma transacção <strong>móvel</strong>, i.e., actuam como uma instrução <strong>de</strong><br />

terminação; (2) quando o resultado <strong>de</strong> uma instrução select into inclui mais do que um registo, é atri-<br />

buído à variável o valor <strong>de</strong> um dos registos (<strong>em</strong> vez <strong>de</strong> lançar uma excepção); (3) foi introduzida a função<br />

newid cujo resultado é o mesmo i<strong>de</strong>ntificador único quando executada no cliente e no servidor.<br />

A execução <strong>de</strong> uma transacção <strong>móvel</strong> (no cliente ou no servidor) correspon<strong>de</strong> s<strong>em</strong>pre à execução do<br />

seu programa usando um interpretador especial <strong>de</strong> PL/SQL. A execução das várias instruções <strong>de</strong> acesso à<br />

base <strong>de</strong> <strong>dados</strong> <strong>de</strong> uma transacção <strong>móvel</strong> são efectuadas no âmbito <strong>de</strong> uma transacção <strong>de</strong>finida no sist<strong>em</strong>a<br />

<strong>de</strong> <strong>gestão</strong> <strong>de</strong> bases <strong>de</strong> <strong>dados</strong> usado.<br />

Em geral, uma transacção <strong>móvel</strong> correspon<strong>de</strong> a uma operação na aplicação que a submete — por<br />

ex<strong>em</strong>plo, a reserva <strong>de</strong> um lugar num comboio ou a introdução <strong>de</strong> uma encomenda são ex<strong>em</strong>plos típicos<br />

<strong>de</strong> operações que po<strong>de</strong>m ser submetidas como transacções móveis. Para cada operação, a aplicação <strong>de</strong>ve<br />

ter <strong>de</strong>finido um esqueleto <strong>de</strong> transacção <strong>móvel</strong>. Este esqueleto é instanciado com os valores especifi-<br />

cados pelos utilizadores, criando uma transacção <strong>móvel</strong> que será submetida para execução pelo sist<strong>em</strong>a<br />

Mobisnap. De seguida <strong>de</strong>screve-se o processamento <strong>de</strong> uma transacção <strong>móvel</strong>.<br />

7.3.1 Processamento<br />

Quando uma aplicação submete uma transacção <strong>móvel</strong>, o seu processamento consiste, <strong>em</strong> geral, nos<br />

seguintes passos.<br />

No cliente, a transacção é executada <strong>de</strong> forma provisória e o seu resultado <strong>de</strong>volvido à aplicação.<br />

Se o cliente possui reservas suficiente para garantir o resultado da transacção, este resultado po<strong>de</strong> ser<br />

consi<strong>de</strong>rado <strong>de</strong>finitivo. Em consequência, ambas as versões da cópia local da base <strong>de</strong> <strong>dados</strong> são actua-<br />

lizadas. Caso contrário, o resultado é provisório. Neste caso, apenas a versão provisória é actualizada.<br />

O processamento <strong>de</strong> uma transacção <strong>móvel</strong> no cliente e a sua interacção com o sist<strong>em</strong>a <strong>de</strong> reservas é<br />

<strong>de</strong>talhado na secção 8.3.<br />

Após ter sido executada localmente, uma transacção <strong>móvel</strong> é armazenada <strong>de</strong> forma estável no cliente.<br />

Quando um cliente se conecta com o servidor, o cliente propaga as transacções móveis armazenadas para<br />

3 O PL/SQL é um linguag<strong>em</strong> imperativa <strong>de</strong>finida pela Oracle que esten<strong>de</strong> a linguag<strong>em</strong> SQL com um conjunto <strong>de</strong> estruturas<br />

<strong>de</strong> características comuns às linguagens <strong>de</strong> alto nível, como por ex<strong>em</strong>plo a <strong>de</strong>finição <strong>de</strong> tipos, constantes e variáveis; instruções<br />

<strong>de</strong> atribuição, <strong>de</strong> selecção (if ) e <strong>de</strong> repetição (loop,for,while).

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

Saved successfully!

Ooh no, something went wrong!