quinta-feira, novembro 04, 2004
Opções de implementação do Repositório de Dados
Escritas:
- (Log operações, Dados), cada réplica é constituida por um conjunto de operações ordenadas e uma base de dados resultado da execução dessas operações. Propagar operações reduz a quantidade de informação a ser transmitida, assim como evita os conflitos de inserção e remoção de registos. Necessita de espaço para guardar essa informação. Não é necessária para reconciliação do tipo "Total". Mais´eficiente na detecção de conflito e sua resolução.
- Tipo(Total, Diferencial), na propagação diferencial a quantidade de informação a ser propagada é proporcional ás alterações efectuadas em vez de ser depedndente do tamanho da base de dados.
- Modo(Incremental, Transaccional), no modo incremental é possível a recuperação de uma falha de comunicação durante a fase de reconciliação em vez de ter de repetir todas as operações e evita estados inconsistentes. Cada operação reconciliada com sucesso é registada no servidor, assim como o identificador da ultima. Em caso de falha é a partir deta que a reconciliação é recomeçada. Necessita de um protocolo de transporte que garanta a ordem na entrega das mansagens.
Ligações:
- não estruturadas (pares), reconciliação entre qualquer par de réplicas, propagação mais rápida baseada na teoria de epidemia, não necessita de um servidor activo para efectuar actualizações, mais complexo no contorlo de versões, necessidade de duas réplicas se encontrarem online em simultaneo que no nosso caso será quase impossível.
- estruturada (master-slave, ring, ...), maior controlo sobre a propagação de actualizações usando uma hierarquia. As replicas masters reconcilian-se entre sí as slave apenas com o seu master, obriga a ter o master activo para poder reconciliar. Em ring existe um caminho predeterminado para propagação.
No nosso caso usamos a hierarquia master-slaves em estrela, um master(repositorio central) e varios slaves (réplicas locais). Facilita a remoção de informação dos logs, pois cada réplica pode exonerar todas as operações já reconciliadas e no servidor todas as já propagadas para todas as réplicas existentes.