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
60 CAPÍTULO 4. DESCRIÇÃO DAS FUNCIONALIDADES PRINCIPAIS DO SISTEMA DOORS usando sequenciador para efectuar a transformação de operações de acordo com o algoritmo apresentado em [159]. Para utilizarem este componente, os utilizadores devem definir as funções de transformação de operações necessárias. 4.1.6 Operações do sistema Como se referiu anteriormente, as operações definidas num coobjecto podem ser classificadas como ope- rações do sistema. Estas operações são tratadas de forma especial pelos componentes de reconciliação: uma operação de sistema é executada imediatamente após ser recebida no servidor e não é reflectida no sumário das operações executadas. Assim, as operações de sistema podem ser executadas por diferentes ordens nas várias réplicas. O sumário das operações de sistema executadas é mantido de forma inde- pendente pelo componente de reconciliação de forma a garantir que cada operação de sistema apenas é executada uma vez. 4.2 Replicação secundária parcial O mecanismo de replicação secundária parcial (ou caching parcial) permite aos clientes obter cópias parciais dos coobjectos. Uma cópia parcial de um coobjecto consiste na parte comum do coobjecto e num subconjunto dos subobjectos contidos no coobjecto. A parte comum do coobjecto consiste nos componentes necessários (cápsula, atributos do sistema, etc.) à criação de uma cópia do coobjecto. O bom funcionamento deste mecanismo baseia-se no pressuposto que um subobjecto representa uma unidade de manipulação dos dados, sendo possível executar uma operação num subobjecto sem que ocorra nenhum falha na replicação. Desta forma, a divisão de um coobjecto em subobjectos simplifica o processo de replicação antecipada (pre-fetching). A razão lógica desta aproximação consiste na seguinte observação: o programador que desenha o coobjecto é a pessoa que melhor conhece o modo como os vários objectos interagem entre si, e quais devem ser replicados conjuntamente. Assim, o programador pode tornar esta informação visível ao sistema, agrupando os objectos fortemente ligados em unidades de maior dimensão: os subobjectos. Adicionalmente, um subobjecto pode especificar um conjunto de outros subobjectos que devem ser re- plicados conjuntamente com esse subobjecto (através da lista de subobjectos relacionados mantida no componente de atributos do sistema associado ao subobjecto). Um cliente obtém uma cópia parcial de um coobjecto a partir de um servidor. Posteriormente, pode actualizar a cópia parcial ou “aumentá-la” através da replicação de novos subobjectos. O funcionamento do sistema de replicação secundária parcial é detalhado na secção 6.3.1.
4.3. INVOCAÇÃO CEGA 61 4.3 Invocação cega O mecanismo de invocação cega tem como objectivo permitir que os utilizadores produzam contribuições úteis que afectem dados não replicados localmente durante os períodos de desconexão (como se discutiu na secção 2.3.6). Para tal, os utilizadores podem submeter operações sobre subobjectos que não estão presentes local- mente, desde que possuam uma referência (representante) para esse subobjecto. O processamento destas invocações é efectuado de forma semelhante ao processamento normal até ao momento em que as opera- ções devem ser executadas localmente sobre a cópia privada do subobjecto. Neste momento a execução não é efectuada e como resultado da invocação é lançada uma excepção que explica a situação. No en- tanto, como a informação sobre a invocação é guardada no componente de registo, ela será transmitida para o servidor onde será executada de forma semelhante às outras invocações. Desta forma simples, os utilizadores podem submeter modificações sobre subobjectos dos quais não possuem uma cópia local, como pretendido. O modo de processamento descrito é o modo normal utilizado para processar as invocações sobre subobjectos não replicados localmente. No entanto, é possível aos programadores especificar, para cada método, os seguintes comportamentos alternativos: silencioso Neste modo, não são lançadas excepções como resultado de uma invocação sobre um subob- jecto não presente localmente — para métodos que devolvam um resultado, o programador pode especificar um valor a devolver nessa situação. local Neste modo, as invocações sobre subobjectos não presentes localmente falham, sem serem arma- zenadas no componente de registo. A aplicação, ao obter a cópia privada do coobjecto, pode igualmente especificar o comportamento a utilizar. As opções especificadas sobrepõem-se às opções definidas por omissão nos subobjectos. O código para executar estes comportamentos alternativos é criado pelo pré-processador nos representantes dos subobjectos 7 . 4.3.1 Cópias de substituição Para permitir a uma aplicação observar o resultado de uma invocação cega que modifique o estado de um subobjecto, permite-se a criação de uma cópia de substituição desse subobjecto. 7 No caso de a aplicação especificar o modo de operação “silencioso” e o resultado das operações não estiver especificado, as operações devolvem valores pré-definidos — no protótipo do sistema DOORS, implementado em Java, são devolvidos os valores de iniciação para o tipo considerado.
- Page 27 and 28: Capítulo 2 Princípios gerais No c
- Page 29 and 30: 2.2. MOTIVAÇÃO - ALGUMAS APLICAÇ
- Page 31 and 32: 2.3. PRINCÍPIOS 13 garantir a disp
- Page 33 and 34: 2.3. PRINCÍPIOS 15 obter o estado
- Page 35 and 36: 2.3. PRINCÍPIOS 17 sobre a evoluç
- Page 37 and 38: 2.3. PRINCÍPIOS 19 2.3.6 Invocaç
- Page 39 and 40: 2.3. PRINCÍPIOS 21 solúveis). As
- Page 41 and 42: Capítulo 3 Apresentação do siste
- Page 43 and 44: 3.1. MODELO GERAL 25 para a activid
- Page 45 and 46: 3.1. MODELO GERAL 27 Aplicação At
- Page 47 and 48: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 49 and 50: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 51 and 52: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 53 and 54: 3.2. FRAMEWORK DE COMPONENTES: PRIN
- Page 55 and 56: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 57 and 58: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 59 and 60: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 61 and 62: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 63 and 64: 3.3. FRAMEWORK DE COMPONENTES: COMP
- Page 65 and 66: 3.4. FRAMEWORK DE COMPONENTES: IMPL
- Page 67 and 68: 3.4. FRAMEWORK DE COMPONENTES: IMPL
- Page 69 and 70: Capítulo 4 Descrição das funcion
- Page 71 and 72: 4.1. RECONCILIAÇÃO 53 Segundo, um
- Page 73 and 74: 4.1. RECONCILIAÇÃO 55 4.1.3 Ordem
- Page 75 and 76: 4.1. RECONCILIAÇÃO 57 4.1.4.2 Ver
- Page 77: 4.1. RECONCILIAÇÃO 59 No decurso
- Page 81 and 82: 4.4. INTEGRAÇÃO DE SESSÕES SÍNC
- 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
60 CAPÍTULO 4. DESCRIÇÃO DAS FUNCIONALIDADES PRINCIPAIS DO SISTEMA DOORS<br />
usando sequenciador para efectuar a transformação <strong>de</strong> operações <strong>de</strong> acordo com o algoritmo apresentado<br />
<strong>em</strong> [159]. Para utilizar<strong>em</strong> este componente, os utilizadores <strong>de</strong>v<strong>em</strong> <strong>de</strong>finir as funções <strong>de</strong> transformação<br />
<strong>de</strong> operações necessárias.<br />
4.1.6 Operações do sist<strong>em</strong>a<br />
Como se referiu anteriormente, as operações <strong>de</strong>finidas num coobjecto po<strong>de</strong>m ser classificadas como ope-<br />
rações do sist<strong>em</strong>a. Estas operações são tratadas <strong>de</strong> forma especial pelos componentes <strong>de</strong> reconciliação:<br />
uma operação <strong>de</strong> sist<strong>em</strong>a é executada imediatamente após ser recebida no servidor e não é reflectida no<br />
sumário das operações executadas. Assim, as operações <strong>de</strong> sist<strong>em</strong>a po<strong>de</strong>m ser executadas por diferentes<br />
or<strong>de</strong>ns nas várias réplicas. O sumário das operações <strong>de</strong> sist<strong>em</strong>a executadas é mantido <strong>de</strong> forma in<strong>de</strong>-<br />
pen<strong>de</strong>nte pelo componente <strong>de</strong> reconciliação <strong>de</strong> forma a garantir que cada operação <strong>de</strong> sist<strong>em</strong>a apenas é<br />
executada uma vez.<br />
4.2 Replicação secundária parcial<br />
O mecanismo <strong>de</strong> replicação secundária parcial (ou caching parcial) permite aos clientes obter cópias<br />
parciais dos coobjectos. Uma cópia parcial <strong>de</strong> um coobjecto consiste na parte comum do coobjecto e<br />
num subconjunto dos subobjectos contidos no coobjecto. A parte comum do coobjecto consiste nos<br />
componentes necessários (cápsula, atributos do sist<strong>em</strong>a, etc.) à criação <strong>de</strong> uma cópia do coobjecto.<br />
O bom funcionamento <strong>de</strong>ste mecanismo baseia-se no pressuposto que um subobjecto representa uma<br />
unida<strong>de</strong> <strong>de</strong> manipulação dos <strong>dados</strong>, sendo possível executar uma operação num subobjecto s<strong>em</strong> que<br />
ocorra nenhum falha na replicação. Desta forma, a divisão <strong>de</strong> um coobjecto <strong>em</strong> subobjectos simplifica o<br />
processo <strong>de</strong> replicação antecipada (pre-fetching).<br />
A razão lógica <strong>de</strong>sta aproximação consiste na seguinte observação: o programador que <strong>de</strong>senha o<br />
coobjecto é a pessoa que melhor conhece o modo como os vários objectos interag<strong>em</strong> entre si, e quais<br />
<strong>de</strong>v<strong>em</strong> ser replicados conjuntamente. Assim, o programador po<strong>de</strong> tornar esta informação visível ao<br />
sist<strong>em</strong>a, agrupando os objectos fort<strong>em</strong>ente ligados <strong>em</strong> unida<strong>de</strong>s <strong>de</strong> maior dimensão: os subobjectos.<br />
Adicionalmente, um subobjecto po<strong>de</strong> especificar um conjunto <strong>de</strong> outros subobjectos que <strong>de</strong>v<strong>em</strong> ser re-<br />
plicados conjuntamente com esse subobjecto (através da lista <strong>de</strong> subobjectos relacionados mantida no<br />
componente <strong>de</strong> atributos do sist<strong>em</strong>a associado ao subobjecto).<br />
Um cliente obtém uma cópia parcial <strong>de</strong> um coobjecto a partir <strong>de</strong> um servidor. Posteriormente, po<strong>de</strong><br />
actualizar a cópia parcial ou “aumentá-la” através da replicação <strong>de</strong> novos subobjectos. O funcionamento<br />
do sist<strong>em</strong>a <strong>de</strong> replicação secundária parcial é <strong>de</strong>talhado na secção 6.3.1.