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
78 CAPÍTULO 5. AVALIAÇÃO DO MODELO DO SISTEMA DOORS marcação que o utilizador indicou e não outra marcação escalada para a mesma hora), cada marcação tem um identificador único. Segundo, um subobjecto agenda global, que mantém referências para os subobjectos anteriores, um por cada semana que contém marcações. Este subobjecto inclui duas operações de modificação para inserir e remover uma marcação num dado horário 5 . A execução destas operações consiste em invocar a operação correspondente no subobjecto agenda semanal relativo à semana indicada. Em consequência da execução de uma operação de inserção pode ser criado um novo subobjecto agenda semanal. Em consequência da execução duma operação de remoção pode ser removida a referência para um subobjecto agenda semanal. Terceiro, um subobjecto central de marcações, sem estado interno e que define as operações para inserir e remover uma marcação com múltiplos horários alternativos. A execução destas operações con- siste em invocar, sucessivamente, para cada um dos horários alternativos indicados até que um possa ser executado com sucesso, a operação correspondente no subobjecto agenda global. Adicionalmente, estas operações produzem as mensagens de notificação correspondentes ao seu resultado. O estado inicial de uma agenda inclui dois subobjectos raiz: um subobjecto agenda global sem nenhuma referência e um subobjecto central de marcações. O único gestor de subobjectos implementado é usado para cada uma das versões 6 . O coobjecto agenda mantém duas versões do seu estado — para tal, é baseado na cápsula dupla. A versão definitiva reflecte a execução de todos os pedidos de marcação cujo resultado se encontra garan- tido. A versão provisória reflecte, adicionalmente, a execução de todas as outras marcações conhecidas. A utilização de duas versões permite utilizar subobjectos que representem uma agenda normal, i.e., sem que cada marcação tenha associado o estado definitivo ou provisório. No servidor, usam-se os seguintes componentes. Para garantir a consistência final das várias réplicas, as versões definitiva e provisória são actualizadas, respectivamente, pela versão pessimista e optimista do componente de reconciliação que executa as operações por uma ordem total definida por uma réplica sequenciadora. Esta aproximação, permite estabelecer a ordem de execução definitiva de uma operação (e consequentemente o seu resultado final) desde que a réplica principal esteja acessível. Para propagar o resultado definitivo das operações, associa-se à versão definitiva a composição do componente de awareness que propaga as mensagens produzidas para os utilizadores com o componente 5 Este subobjecto contém uma operação adicional que remove todas as marcações de uma semana. Esta operação é usada para remover marcações antigas. 6 Como é de supor que a maior parte dos subobjectos tenham o mesmo estado em ambas as versões, uma optimização possível consiste em manter em disco, para os subobjecto iguais, apenas uma versão. Uma nova implementação do gestor de subobjectos pode fazer esta verificação de forma simples. A manutenção de apenas uma cópia em memória parece possível através da modificação do funcionamento dos representantes dos subobjectos, embora ainda seja necessário investigar todas as implicações de uma aproximação desse tipo.
5.2. AGENDA PARTILHADA 79 de awareness que garante que apenas uma mensagem é enviada. As mensagens produzidas na versão provisória são descartadas pelo componente de awareness que descarta todas as mensagens recebidas. No cliente, a versão provisória é actualizada pelo componente de reconciliação que executa imedi- atamente as operações submetidas. A versão definitiva não é modificada — usa-se um componente de reconciliação que não executa operações. Para ambas as versões usa-se o componente de awareness que descarta as mensagens recebidas. Quer no cliente, quer no servidor, usa-se a implementação mais simples disponível para o com- ponente de adaptação. Para o componente de registo e de atributos usam-se as implementações mais simples que permitam usar uma réplica sequenciadora. 5.2.2 Replicação secundária parcial O agrupamento de todas as marcações relativas a uma semana num subobjecto permite que a cópia parcial de um cliente inclua apenas um pequeno subconjunto de todas as marcações — em geral, um utilizador apenas está interessado na semana actual e (possivelmente) em algumas das semanas seguintes. Qualquer cópia parcial deve incluir ainda o subobjecto agenda global, o qual permite aceder às agendas semanais. Para tal, a estratégia de replicação prévia deve garantir que a agenda global está incluída em qualquer cópia parcial (para tal, o identificador do subobjecto agenda global está incluído na lista de subobjectos relacionados em todos os subobjectos agenda semanal). Os subobjectos definidos (com excepção do subobjecto central de reservas, explicado de seguida) surgem como elementos naturais na representação de uma agenda — outros elementos poderiam ter sido definidos, como, por exemplo, a agenda diária. Assim, a necessidade de agrupar os objectos que mantêm os dados de um coobjecto em subobjectos, para que o mecanismo de replicação secundária parcial possa ser utilizado, não constitui problema neste caso. 5.2.3 Invocação cega O coobjecto agenda permite a invocação cega de operações, independentemente dos subobjectos lo- calmente replicados. Como o subobjecto central de marcações é um subobjecto raiz, a sua referência está sempre disponível em qualquer coobjecto. Assim, é possível ao utilizador submeter novos pedidos, mesmo que os subobjectos que contêm as datas referidas não estejam disponíveis localmente (como é normal, o resultado de um pedido apenas é conhecido definitivamente quando a operação é executada num servidor, no qual todos os subobjectos estão disponíveis). Para permitir que o utilizador observe o resultado esperado do seu pedido, usam-se cópias de subs- tituição. Assim, o utilizador pode igualmente remover um pedido executado anteriormente durante a manipulação da agenda. Apesar de possível, a submissão de uma operação de remoção relativa a uma
- 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 and 78: 4.1. RECONCILIAÇÃO 59 No decurso
- Page 79 and 80: 4.3. INVOCAÇÃO CEGA 61 4.3 Invoca
- 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: 5.2. AGENDA PARTILHADA 77 Figura 5.
- 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
- Page 129 and 130: 7.3. TRANSACÇÕES MÓVEIS 111 7.3
- Page 131 and 132: 7.3. TRANSACÇÕES MÓVEIS 113 abor
- Page 133 and 134: Capítulo 8 Reservas Neste capítul
- Page 135 and 136: 8.1. TIPOS DE RESERVAS 117 8.1.4 Re
- Page 137 and 138: 8.2. CONCESSÃO E GARANTIA DE RESPE
- Page 139 and 140: 8.2. CONCESSÃO E GARANTIA DE RESPE
- Page 141 and 142: 8.3. PROCESSAMENTO DAS TRANSACÇÕE
- Page 143 and 144: 8.4. PROCESSAMENTO DAS TRANSACÇÕE
- Page 145 and 146: 8.5. EXEMPLOS 127 id tipo tabela co
78 CAPÍTULO 5. AVALIAÇÃO DO MODELO DO SISTEMA DOORS<br />
marcação que o utilizador indicou e não outra marcação escalada para a mesma hora), cada marcação<br />
t<strong>em</strong> um i<strong>de</strong>ntificador único.<br />
Segundo, um subobjecto agenda global, que mantém referências para os subobjectos anteriores, um<br />
por cada s<strong>em</strong>ana que contém marcações. Este subobjecto inclui duas operações <strong>de</strong> modificação para<br />
inserir e r<strong>em</strong>over uma marcação num dado horário 5 . A execução <strong>de</strong>stas operações consiste <strong>em</strong> invocar<br />
a operação correspon<strong>de</strong>nte no subobjecto agenda s<strong>em</strong>anal relativo à s<strong>em</strong>ana indicada. Em consequência<br />
da execução <strong>de</strong> uma operação <strong>de</strong> inserção po<strong>de</strong> ser criado um novo subobjecto agenda s<strong>em</strong>anal. Em<br />
consequência da execução duma operação <strong>de</strong> r<strong>em</strong>oção po<strong>de</strong> ser r<strong>em</strong>ovida a referência para um subobjecto<br />
agenda s<strong>em</strong>anal.<br />
Terceiro, um subobjecto central <strong>de</strong> marcações, s<strong>em</strong> estado interno e que <strong>de</strong>fine as operações para<br />
inserir e r<strong>em</strong>over uma marcação com múltiplos horários alternativos. A execução <strong>de</strong>stas operações con-<br />
siste <strong>em</strong> invocar, sucessivamente, para cada um dos horários alternativos indicados até que um possa ser<br />
executado com sucesso, a operação correspon<strong>de</strong>nte no subobjecto agenda global. Adicionalmente, estas<br />
operações produz<strong>em</strong> as mensagens <strong>de</strong> notificação correspon<strong>de</strong>ntes ao seu resultado.<br />
O estado inicial <strong>de</strong> uma agenda inclui dois subobjectos raiz: um subobjecto agenda global s<strong>em</strong><br />
nenhuma referência e um subobjecto central <strong>de</strong> marcações. O único gestor <strong>de</strong> subobjectos impl<strong>em</strong>entado<br />
é usado para cada uma das versões 6 .<br />
O coobjecto agenda mantém duas versões do seu estado — para tal, é baseado na cápsula dupla. A<br />
versão <strong>de</strong>finitiva reflecte a execução <strong>de</strong> todos os pedidos <strong>de</strong> marcação cujo resultado se encontra garan-<br />
tido. A versão provisória reflecte, adicionalmente, a execução <strong>de</strong> todas as outras marcações conhecidas.<br />
A utilização <strong>de</strong> duas versões permite utilizar subobjectos que represent<strong>em</strong> uma agenda normal, i.e., s<strong>em</strong><br />
que cada marcação tenha associado o estado <strong>de</strong>finitivo ou provisório.<br />
No servidor, usam-se os seguintes componentes. Para garantir a consistência final das várias réplicas,<br />
as versões <strong>de</strong>finitiva e provisória são actualizadas, respectivamente, pela versão pessimista e optimista<br />
do componente <strong>de</strong> reconciliação que executa as operações por uma or<strong>de</strong>m total <strong>de</strong>finida por uma réplica<br />
sequenciadora. Esta aproximação, permite estabelecer a or<strong>de</strong>m <strong>de</strong> execução <strong>de</strong>finitiva <strong>de</strong> uma operação<br />
(e consequent<strong>em</strong>ente o seu resultado final) <strong>de</strong>s<strong>de</strong> que a réplica principal esteja acessível.<br />
Para propagar o resultado <strong>de</strong>finitivo das operações, associa-se à versão <strong>de</strong>finitiva a composição do<br />
componente <strong>de</strong> awareness que propaga as mensagens produzidas para os utilizadores com o componente<br />
5 Este subobjecto contém uma operação adicional que r<strong>em</strong>ove todas as marcações <strong>de</strong> uma s<strong>em</strong>ana. Esta operação é usada<br />
para r<strong>em</strong>over marcações antigas.<br />
6 Como é <strong>de</strong> supor que a maior parte dos subobjectos tenham o mesmo estado <strong>em</strong> ambas as versões, uma optimização<br />
possível consiste <strong>em</strong> manter <strong>em</strong> disco, para os subobjecto iguais, apenas uma versão. Uma nova impl<strong>em</strong>entação do gestor <strong>de</strong><br />
subobjectos po<strong>de</strong> fazer esta verificação <strong>de</strong> forma simples. A manutenção <strong>de</strong> apenas uma cópia <strong>em</strong> m<strong>em</strong>ória parece possível<br />
através da modificação do funcionamento dos representantes dos subobjectos, <strong>em</strong>bora ainda seja necessário investigar todas as<br />
implicações <strong>de</strong> uma aproximação <strong>de</strong>sse tipo.