• No results found

O modelo de transacções móveis apresentado nesta secção [Ahmed et al. 1996] usa controlo de concorrência optimista e baseia-se no isolamento de transacções35, com algumas modificações

para que se possam satisfazer os requisitos das transacções móveis. Aqui, as estações móveis guardam, localmente, os itens de dados a que acedem com mais frequência. Um item de dados pode conter mais ou menos informação, conforme o que se quiser representar. Isto significa que cada item de dados pode ter diferentes granulosidades, não havendo uma regra geral (e óptima) para determinar qual deve ser o valor dessa granulosidade.

Uma estação móvel, que esteja a executar uma transacção, deve ler os itens de dados da sua base de dados local. Quando um item de dados não existe localmente, a estação móvel deve fazer um pedido à ESM. Todas as operações de escrita de uma transacção são efectuadas temporariamente na base de dados local, sendo validadas globalmente quando a transacção termina. O seu commit global é efectuado conforme o resultado dessa validação. Neste modelo, cada transacção tem ainda associado um estado, sendo este estado alterado através de

relatórios. Na Figura 18 apresentam-se alguns desses estados, dos quais se destacam os seguintes:

− Validação. Significa que uma transacção está a ser validada.

− Pendente. Ocorre quando não se consegue estabelecer a conexão com a ESM, encontrando-se pendente o processo de validação.

− Suspensa. Acontece sempre que a transacção está a aguardar algum relatório para poder continuar a sua execução.

− Commit. Este estado só ocorre depois de se saber que se trata de uma transacção válida que é guardada depois definitivamente.

− Aborto. Quando uma transacção é considerada inválida transita para este estado para que possa ser desfeita.

Running Suspenso Commit Pendente Validação Aborto À espera de um item de dados remoto Susp enso Reco meça Escritas e leituras locais Le itu ra R em ot a Ite m d e da do s Falha de va lidaç ão

Transacção finalizada à espera de conexão para efectuar a validação Início de

transacção

Figura 18 – Esquema com os estados de transição de uma transacção.

Neste modelo, são enviados periodicamente relatórios de invalidação para todas as estações móveis no domínio da célula, através das capacidades de broadcast das ESMs. Estes relatórios

identificam quais os itens de dados que foram actualizados desde o último relatório, assim como a invalidação de alguns dos itens guardados nas estações móveis. Os relatórios de invalidação não carregam valores de dados, mas sim os seus identificadores, o que faz com que não consumam muita capacidade de largura de banda.

Os relatórios de invalidação possuem inúmeras vantagens, entre as quais, o facto das estações móveis não necessitarem de estabelecer, com tanta frequência, ligações no sentido uplink, para invalidar os seus dados locais. Perante este cenário, pode-se concluir que é suficiente que as estações móveis estejam parcialmente conectadas para que consigam ouvir os relatórios de invalidação que a ESM envia periodicamente. Uma outra vantagem é que estes relatórios permitem uma validação local das transacções que apenas usaram operações de leitura. Isto porque, depois de executar uma transacção local de leitura, o gestor local de transacções deve esperar pelo próximo relatório de invalidação. Se nenhum dos itens de dados pertencentes ao conjunto de leitura da transacção for invalidado e se a transacção não depende de nenhuma outra transacção pendente, então a transacção pode ser guardada localmente, sem necessidade de intervenção da ESM. Com o uso destes relatórios, o modelo proposto passa a ser kill-based em vez de die-based, Isto é, as transacções conflituosas são abortadas imediatamente, podendo ser reiniciados no instante seguinte, evitando-se assim a existência de trabalho inútil. Por último, a ESM não necessita de ser um servidor repleto de estados, o que permite reduzir assim o overhead do sistema.

Apesar das inúmeras vantagens, os relatórios de invalidação apresentam também algumas desvantagens como o facto das estações móveis lerem relatórios sobre os quais não possuem informação necessária para o seu processamento. Contudo este trabalho pode ser limitado se se organizarem os relatórios em secções. Desta forma a estação móvel poderá ignorar as secções do relatório que não lhe interessam. Um problema que aqui se coloca é determinar a granulosidade das secções – esta é uma questão que ainda se encontra em aberto. Um outro problema poderá ser as grandes quantidades de informação que a ESM necessita de transmitir.

Para além dos relatórios de invalidação existem também os relatórios de actualização, que se apresentam como uma solução para o reinício das transacções. Tal deve-se ao facto de que, quando as estações móveis se encontram a operar em modo parcialmente conectado, pode não ser possível estabelecer a comunicação com a ESM para actualizar itens de dados que se encontram marcados como inválidos. Assim, propõe-se que a estação móvel armazene, localmente, esses relatórios antes da desconexão ou, então, tal como acontecia com os relatórios de invalidação, que a ESM transmita periodicamente esses relatórios. Os relatórios de

actualização devem conter desde o último relatório todos os itens de dados actualizados. Como refrescam constantemente os dados das estações móveis, estes podem aumentar o número de transacções guardadas localmente. Além disto, se uma transacção for abortada o utilizador continua a ter a possibilidade de a reiniciar, mesmo sem a necessidade de restabelecer a conexão com a ESM. Se uma transacção ler um item de dados marcado como inválido, então a transacção deve ser suspensa até que a estação receba um novo relatório de actualização. Embora estes relatórios sejam enviados com alguma frequência, esta é, mesmo assim, menor do que a que se verifica nos relatórios de invalidação.

Em conclusão, o modelo de transacções móveis baseado no controlo de concorrência optimista utiliza o envio periódico de relatórios de invalidação e de actualização no sentido downlink, o que faz com que não exista um grande consumo da largura de banda e evita a comunicação do tipo uplink.