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
64 CAPÍTULO 4. DESCRIÇÃO DAS FUNCIONALIDADES PRINCIPAIS DO SISTEMA DOORS todos os elementos da sessão síncrona — o componente de adaptação executa esta difusão através do mecanismo de comunicação em grupo associado (a cada invocação é associada informação que permite traçar a dependência entre operações executadas na sessão síncrona). Além de difundir as operações para todos os elementos do grupo, o componente de adaptação sín- crona condiciona o processamento local das operações. Duas alternativas podem ser adoptadas. Primeiro, o componente de adaptação pode propagar as operações para serem processadas localmente apenas após terem sido recebidas e ordenadas pelo subsistema de comunicação em grupo. Neste caso, o componente de adaptação induz uma estratégia pessimista para a execução das operações. O componente de reconciliação usa a ordem estabelecida para executar as operações. O componente de reconciliação poderia executar adicionalmente um mecanismo de transformação das operações [46] para garantir a preservação das intenções dos utilizadores nas operações executadas concorrentemente. Segundo, o componente de adaptação propaga para execução local as invocações locais e as invoca- ções recebidas pelo subsistema de comunicação em grupo. Neste caso, o componente de reconciliação deve executar a estratégia adequada à manipulação síncrona do respectivo tipo de dados. Esta estratégia pode ser optimista ou pessimista. As aplicações podem registar funções (callbacks) no componente de adaptação para serem notifica- das do processamento de uma invocação recebida de outro elemento do grupo — em geral, as aplicações usam este mecanismo para reflectir as modificações processadas na interface gráfica da aplicação. As modificações executadas durante uma sessão síncrona apenas podem ser gravadas pelo primário do grupo associado à sessão síncrona. Em relação à evolução global dos coobjectos, as modificações executadas durante uma sessão síncrona são tratadas de forma semelhante às modificações executadas assincronamente por um único utilizador. Assim, a sequência de operações executada é propagada para os servidores, onde é integrada de acordo com a política de reconciliação usada pelo coobjecto nos servidores. Note-se que esta sequência de operações deve representar o modo como as operações fo- ram executadas sequencialmente na cópia privada do coobjecto e pode ser resultado do processamento executado pelo componente de reconciliação no cliente. Por exemplo, quando se usam técnicas de trans- formação de operações [46], a sequência de operações enviada para o servidor inclui as operações após terem sido transformadas (i.e., como foram executadas na cópia privada do coobjecto). 4.4.1 Diferentes operações para sessões síncronas e assíncronas Anteriormente descreveu-se a aproximação básica usada no sistema DOORS para permitir a manipula- ção de coobjectos em sessões síncronas. No entanto, esta aproximação não é suficiente para algumas aplicações em que as operações usadas durante a interacção síncrona e assíncrona devem ser diferentes (as razões subjacentes a esta diferença serão discutidas com maior detalhe na próxima subsecção). Consi-
4.4. INTEGRAÇÃO DE SESSÕES SÍNCRONAS 65 dere-se, por exemplo, a edição cooperativa de documentos. Numa sessão síncrona são usadas operações com reduzida granularidade – por exemplo, inserir/remover um carácter. Num sessão assíncrona são usadas operações com uma maior granularidade – por exemplo, definir uma nova versão de um elemento (secção) do documento. Em geral, os coobjectos, ao serem desenhados para serem manipulados em interacções assíncronas, definem apenas as operações adequadas a este tipo de interacção. Adicionalmente, as estratégias de gestão de dados usadas nos servidores (em particular, a estratégia de reconciliação) estão especialmente adaptadas a este tipo de operações e podem ser inadequadas para gerir outros tipos de operações. No sistema DOORS, existem duas alternativas para permitir a utilização de operações diferentes nas sessões síncronas e assíncronas. A primeira alternativa consiste em estender as interfaces dos subobjectos para incluírem as operações usadas durante a interacção síncrona. No entanto, a utilização destas operações com pequena granulari- dade na evolução global dos coobjectos põe problemas em termos da gestão das operações [154] (devido ao espaço necessário para as armazenar e ao elevado número de operações existentes) e da estratégia de reconciliação usada (que deve ter em conta estas novas operações). Assim, propõe-se que, antes de serem propagadas para os servidores, as operações executadas durante uma sessão síncrona sejam convertidas numa pequena sequência de operações “assíncronas” que produzam o mesmo efeito. Por exemplo, uma sequência de inserções/remoções de caracteres é convertida numa operação que define o novo estado de uma secção. O componente de registo utilizado no cliente define um mecanismo de compressão de operações que pode ser utilizado para este efeito (através da definição das funções de compressão adequadas). A segunda alternativa consiste em manipular as operações de pequena granularidade fora do controlo dos coobjectos. As modificações executadas são reflectidas no estado do coobjecto executando uma sequência de operações que produza o mesmo efeito (de forma semelhante ao resultado da compressão das operações). Para clarificar esta alternativa, considere-se o exemplo da edição cooperativa. Cada membro da sessão síncrona mantém um editor que manipula uma cópia do coobjecto — estas cópias são mantidas sincronizadas como se explicou anteriormente. A edição síncrona do texto de um elemento do documento (por exemplo, uma secção) é executada numa aplicação de edição síncrona a partir do estado actual do elemento no coobjecto (e independentemente do coobjecto). No fim da edição síncrona do elemento, o novo estado do elemento é reflectido no coobjecto executando a operação correspondente. Embora esta segunda alternativa possa ser vista como uma “não solução”, ela apresenta, na prática, algumas características interessantes. Primeiro, torna possível a utilização de aplicações já existentes especialmente desenhadas para a gestão das interacções síncronas. Segundo, permite simplificar o de- senho dos coobjectos, definindo apenas um tipo de operações. Terceiro, pode possibilitar uma maior
- 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 and 78: 4.1. RECONCILIAÇÃO 59 No decurso
- Page 79 and 80: 4.3. INVOCAÇÃO CEGA 61 4.3 Invoca
- Page 81: 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
- 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
64 CAPÍTULO 4. DESCRIÇÃO DAS FUNCIONALIDADES PRINCIPAIS DO SISTEMA DOORS<br />
todos os el<strong>em</strong>entos da sessão síncrona — o componente <strong>de</strong> adaptação executa esta difusão através do<br />
mecanismo <strong>de</strong> comunicação <strong>em</strong> grupo associado (a cada invocação é associada informação que permite<br />
traçar a <strong>de</strong>pendência entre operações executadas na sessão síncrona).<br />
Além <strong>de</strong> difundir as operações para todos os el<strong>em</strong>entos do grupo, o componente <strong>de</strong> adaptação sín-<br />
crona condiciona o processamento local das operações. Duas alternativas po<strong>de</strong>m ser adoptadas.<br />
Primeiro, o componente <strong>de</strong> adaptação po<strong>de</strong> propagar as operações para ser<strong>em</strong> processadas localmente<br />
apenas após ter<strong>em</strong> sido recebidas e or<strong>de</strong>nadas pelo subsist<strong>em</strong>a <strong>de</strong> comunicação <strong>em</strong> grupo. Neste caso, o<br />
componente <strong>de</strong> adaptação induz uma estratégia pessimista para a execução das operações. O componente<br />
<strong>de</strong> reconciliação usa a or<strong>de</strong>m estabelecida para executar as operações. O componente <strong>de</strong> reconciliação<br />
po<strong>de</strong>ria executar adicionalmente um mecanismo <strong>de</strong> transformação das operações [46] para garantir a<br />
preservação das intenções dos utilizadores nas operações executadas concorrent<strong>em</strong>ente.<br />
Segundo, o componente <strong>de</strong> adaptação propaga para execução local as invocações locais e as invoca-<br />
ções recebidas pelo subsist<strong>em</strong>a <strong>de</strong> comunicação <strong>em</strong> grupo. Neste caso, o componente <strong>de</strong> reconciliação<br />
<strong>de</strong>ve executar a estratégia a<strong>de</strong>quada à manipulação síncrona do respectivo tipo <strong>de</strong> <strong>dados</strong>. Esta estratégia<br />
po<strong>de</strong> ser optimista ou pessimista.<br />
As aplicações po<strong>de</strong>m registar funções (callbacks) no componente <strong>de</strong> adaptação para ser<strong>em</strong> notifica-<br />
das do processamento <strong>de</strong> uma invocação recebida <strong>de</strong> outro el<strong>em</strong>ento do grupo — <strong>em</strong> geral, as aplicações<br />
usam este mecanismo para reflectir as modificações processadas na interface gráfica da aplicação.<br />
As modificações executadas durante uma sessão síncrona apenas po<strong>de</strong>m ser gravadas pelo primário<br />
do grupo associado à sessão síncrona. Em relação à evolução global dos coobjectos, as modificações<br />
executadas durante uma sessão síncrona são tratadas <strong>de</strong> forma s<strong>em</strong>elhante às modificações executadas<br />
assincronamente por um único utilizador. Assim, a sequência <strong>de</strong> operações executada é propagada para<br />
os servidores, on<strong>de</strong> é integrada <strong>de</strong> acordo com a política <strong>de</strong> reconciliação usada pelo coobjecto nos<br />
servidores. Note-se que esta sequência <strong>de</strong> operações <strong>de</strong>ve representar o modo como as operações fo-<br />
ram executadas sequencialmente na cópia privada do coobjecto e po<strong>de</strong> ser resultado do processamento<br />
executado pelo componente <strong>de</strong> reconciliação no cliente. Por ex<strong>em</strong>plo, quando se usam técnicas <strong>de</strong> trans-<br />
formação <strong>de</strong> operações [46], a sequência <strong>de</strong> operações enviada para o servidor inclui as operações após<br />
ter<strong>em</strong> sido transformadas (i.e., como foram executadas na cópia privada do coobjecto).<br />
4.4.1 Diferentes operações para sessões síncronas e assíncronas<br />
Anteriormente <strong>de</strong>screveu-se a aproximação básica usada no sist<strong>em</strong>a DOORS para permitir a manipula-<br />
ção <strong>de</strong> coobjectos <strong>em</strong> sessões síncronas. No entanto, esta aproximação não é suficiente para algumas<br />
aplicações <strong>em</strong> que as operações usadas durante a interacção síncrona e assíncrona <strong>de</strong>v<strong>em</strong> ser diferentes<br />
(as razões subjacentes a esta diferença serão discutidas com maior <strong>de</strong>talhe na próxima subsecção). Consi-