/ / A resolução de conflitos baseada em timestamp é possível? - sqlite, sync, conflict, offline, zumero

A resolução de conflitos baseada em timestamp é possível? - sqlite, sync, conflict, offline, zumero

De acordo com Documentação do Zumero for SQL Server o comportamento de resolução de conflitos padrão é usar um número de versão de registro.

No entanto, é possível basear-se em carimbos de data e hora? A regra de negócios é que o registro que foi atualizado pela última vez deve vencer.

Além disso, é possível (e simples o suficiente) sincronizar para cada dispositivo cliente uma subseção específica do banco de dados do lado do servidor?

PS: A suposição seria que o tempo do dispositivo do cliente está aproximadamente sincronizado com o tempo da Internet - uma verificação será executada periodicamente no dispositivo. Devido à natureza dos dados, não é um problema se o relógio do cliente for alguns segundos fora. No caso excepcional de que as atualizações ocorram dentro de 5 segundos uma da outra, realmente não importa qual delas vence. O mais importante é que, em média, e em todos os clientes, o último registro vence.

Respostas:

1 para resposta № 1

Resolução de Conflitos por Timestamp

Em suma, não. Não é possível escolher uma mudança "vencedora" por timestamp hoje. Mas você deve questionar se é realmente o que você quer. :)

Os documentos do Zumero for SQL Server estão incompletos, mas o detalhes de resolução de conflitos nos documentos do servidor em nuvem ainda estão corretas. (A maneira como você os define muda, mas as regras em si não são alteradas.) Resumindo:

Registros têm números de versão. A menos que dois usuários modifiquem a mesma versão do mesmo registro, a versão mais nova é sempre aceita, que é o mesmo comportamento que você obtém com registros de data e hora (sem os problemas associados a relógios do sistema imprecisos).

Se dois usuários modificarem a mesma versão de uma linha, você terá um conflito. A resolução de conflitos padrão é a mesclagem de colunas:

  • Mudanças para diferentes colunas do mesmo registro são todos aceitos.
  • Para alterações conflitantes na mesma coluna do mesmo registro, o último a atingir o servidor é aceito.

Você pode alterar a resolução de conflitos de tal forma que oservidor aceita a versão mais recente sincronizada, sem mesclagem de coluna, que pode ser o que você deseja. Da perspectiva do servidor, este é o registro mais recente. Você faria isso alterando o situation_mod_after_mod resolução para action_accept.

Dividindo o Banco de Dados do SQL Server

A versão 1.0 (e a versão atual da visualização) permite cortar o banco de dados do SQL Server por tabela. Usando o aplicativo ZSS Manager, você define um dbfile.

  • Um dbfile é a menor unidade capaz de sincronizar.
  • Em um cliente, um arquivo db se torna um arquivo de banco de dados sqlite.
  • No servidor, você escolhe as tabelas para adicionar a um dbfile.
  • Uma tabela do SQL Server só pode pertencer a um único dbfile.

Existem mais detalhes no Documentação do ZSS Manager.