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 № 1Resoluçã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.