Sincronização de dados - Conflitos

14 views
Skip to first unread message

theo2f

unread,
Oct 16, 2009, 4:28:40 PM10/16/09
to .Net Architects
Boa tarde, amigos.

Estamos realizando um projeto em que teremos de sincronizar dados de
estações locais e pockets, com um banco de dados que está na web.

Utilizamos do Local Database Cache, para facilitar nosso processo de
sincronização.
Com ele, conseguimos realizar tal tarefa. Porém, ocorre que em certos
momentos geram conflitos de ID's das tabelas e estes registros que
pegaram o mesmo ID acabamos perdendo uma das informações.
Exemplo, gera o ID 10 tanto no .sdf do pocket 1, quanto no .sdf do
pocket 2. Logo, eu perco um dos dados.

Gostaria de saber se existe um meio de controlar tal conflito.


Obrigado.

Felipe Teixeira

unread,
Oct 16, 2009, 4:43:36 PM10/16/09
to dotnetar...@googlegroups.com
vê se te ajuda: http://www.danielmoth.com/Blog/2008/02/adonet-sync-services.html


Felipe Teixeira
Microsoft Certified Technology Specialist - MCTS - Microsoft .Net Framework 2.0
Application Development Foundation MS
Web -based Client Development
Mobile: +55 (11) 8021-6457
http://iguessimnotcrazy.wordpress.com/


2009/10/16 theo2f <the...@gmail.com>

tucaz

unread,
Oct 16, 2009, 5:24:45 PM10/16/09
to .Net Architects
Pq nao usar um GUID nesse caso? Ou algum outro mecanismo que gere uma
chave unica?

Att.,
Antonio Carlos Zegunis Filho
http://blog.tucaz.net

On Oct 16, 5:43 pm, Felipe Teixeira <txdot...@gmail.com> wrote:
> vê se te ajuda:http://www.danielmoth.com/Blog/2008/02/adonet-sync-services.html
>
> Felipe Teixeira
> Microsoft Certified Technology Specialist - MCTS - Microsoft .Net Framework
> 2.0
> Application Development Foundation MS
> Web -based Client Development
> Mobile: +55 (11) 8021-6457http://iguessimnotcrazy.wordpress.com/

Cesar Hoeflich

unread,
Oct 16, 2009, 5:30:38 PM10/16/09
to dotnetar...@googlegroups.com
Em um projeto recente que terminei, aonde existem quatro dispositivos para coleta em campo rodando uma aplicação usando Local Database Cache + Linq, aconteceu este problema do conflito de ID's. Resolvemos o mesmo usando GUID, sei que não é aconselhavel em muitas tabelas o GUID, mas como nosso banco sdf tem somente 4 tabelas não vimos problemas em usar. Nossa sincronização funcionou legal, dos 4 dispositvos para o servidor central (SQL 2008).

Se você estiver usando ID do tipo Int (Auto Identity) , faça um teste alterando para (uniqueidentifier) .

att
César Hoeflich
Instituto de Desenvolvimento Sustentável Mamirauá


Felipe Teixeira escreveu:

theo2f

unread,
Oct 16, 2009, 5:44:51 PM10/16/09
to .Net Architects
Bem, até resolveria o problema.
Entretanto, estamos hoje saindo de uma chave de string para, também,
ganhar performance.
Dessa forma, vou estar resolvendo um dos problemas, o da
sincronização, mas o outro - não citado anteriormente, não.

Vou realizar alguns testes por aqui. Mas se alguém tiver alguma outra
dica, por favor, dê a luz.


Obrigado a todos!


On Oct 16, 6:24 pm, tucaz <tuca...@gmail.com> wrote:
> Pq nao usar um GUID nesse caso? Ou algum outro mecanismo que gere uma
> chave unica?
>
> Att.,
> Antonio Carlos Zegunis Filhohttp://blog.tucaz.net

Cesar Hoeflich

unread,
Oct 16, 2009, 5:51:34 PM10/16/09
to dotnetar...@googlegroups.com
da uma olhada neste artigo, se ele é parecido com seu caso: http://www.developer.com/net/article.php/3815506/Handling-Data-Conflicts-in-the-Microsoft-Sync-Framework.htm

att

theo2f escreveu:

tucaz

unread,
Oct 16, 2009, 6:25:29 PM10/16/09
to .Net Architects
Que problemas de performance vc esta tendo?

Se vc der um pouco mais de informacoes sobre o cenario e volume de
dados talvez possamos achar uma solucao :)

On Oct 16, 6:51 pm, Cesar Hoeflich <cesarhoefl...@mamiraua.org.br>
wrote:
> da uma olhada neste artigo, se ele é parecido com seu caso:http://www.developer.com/net/article.php/3815506/Handling-Data-Confli...

Marcello Felipelli

unread,
Oct 17, 2009, 8:49:25 AM10/17/09
to dotnetar...@googlegroups.com
Trabalha com faixas de ID´s. Ex: Pocket 1 - de 1000000 há 2000000, Pocket 2 - de 2000000 há 3000000....

Ou cria uma chave composta com o ID do registro com o "ID" do dispositivo de origem.

A idéia de faixas de ID´s funcionou bem com uma aplicação de PDV onde existiam vários quiosques em N shoppings e um servidor central.


Abs

Marcello Felipelli
mvf.inf.br
  - celular: (21) 9572-6820
  - google Talk: marc...@mvf.inf.br
  - skype: marcellovf
  - msn: marc...@mvf.inf.br
  - twitter: @marcellovf



2009/10/16 tucaz <tuc...@gmail.com>

Vinicius Quaiato

unread,
Oct 17, 2009, 8:59:00 AM10/17/09
to dotnetar...@googlegroups.com
Eu trabalharia com o conceito de surrogate key.

Não deixaria a chave do banco ser a identificação do meu objeto. Trabalharia com a identificação do objeto como um guid, ou então alguma outra chave mais simples (dois inteiros - id equipamento, id do item [nenhum deles sendo o do db]).

Desta forma, você não precisa identificar seus objetos pelo banco de dados, mas sim por valores que fazem sentido na sua aplicação.

É isso aê.

Att,
Vinicius Quaiato.


2009/10/17 Marcello Felipelli <marcello.v...@gmail.com>

Koga, Diego

unread,
Oct 20, 2009, 1:53:05 PM10/20/09
to dotnetar...@googlegroups.com
Já resolveu?

Aqui na empresa utilizamos no número dos cupons ficais dos pdvs que armazenamos algo como: Numero da Filial + Numero do PDV + ID do registro, ficaria assim, 120200000010....

Nas lojas com o código abaixo de zero, o id final tem 11 posições, caso contrário, 12...


[]´s



Att.,
------------------
Koga, Diego



2009/10/17 Vinicius Quaiato <vinicius...@gmail.com>
Reply all
Reply to author
Forward
0 new messages