Array
(
)

Lógica de sincronismo SQLCE - Firebird.

Sufolk
   - 26 mar 2007

Saudações!!!!!
Gostaria de um direcionamento a respeito da lógica que devo seguir para a elaboração de uma aplicação para sincronizar as informações entre uma base de dados em SQLServer CE e uma base de dados firebird.
Na realidade não precisa ser firebird, o que eu preciso na realidade é um direcionamento sobre a lógica que devo elaborar para criar esse vínculo de sincronismo entre o pocket e uma base de dados.
Desde já agradeço a intenção e a ajuda de todos!!!

Rjun
   - 26 mar 2007

Se você utilizar SQL Server pode fazer uso da replicação.

Sufolk
   - 27 mar 2007

Olá Miyazaki, agradeço pela resposta!

Eu estarei utilizando um WebService para fazer a comunicação com o sincronizador e com o meu banco de dados. A minha dúvida seria quanto à lógica de replicação da informação, isto é, como farei a comparação dos dados entre a base Pc/PPc. Como tratarei conflitos de alterações nos 2 lados. Por exemplo, adicionar às minhas tabelas que serão replicadas bi-direcional um campo de data de alteração para manter a que foi alterada por último.
Ví algumas aplicações PPc que tem uma aplicação armazenando todas as informações colhidas dos coletores em uma base de dados paralela e assim gerando arquivos TXT para serem importados pelo sistema da empresa. Essa base possui todos os dados de todos os PPc.
O que eu preciso seria o uso de boas técnicas para mim fazer essa replicação das informações não utilizando o SQL Server.
Não sei se fui claro o suficiente.

Agradeço a atenção!!!!

Carlosrodrigop
   - 27 mar 2007

Para te ajudar posso te passar uma logica simples que faço aqui nos sistemas que desenvolvo.

Carrego os dados que preciso trabalhar no coletor de dados atraves de carga de um arquivo XML gerado pela minha aplicação de carga em uma estação de trabalho ( isso pode ser substituido logicamente por um Web Service como vc usa e como eu também uso).

Toda vez que altero um dado, eu crio um novo arquivo XML com os dados que foram removidos, e ou altreados, cada registro possui um campo onde identidico com o valor ´E´ se o registro foi excluido, ´I´ se foi inserido ou ´A´ se foi alterado.

QUando retorno esse arquivo para a aplicação de carga de dados, via web service ou estacao de trabalho, o meu programa le esses dados e executa a ação correspondente a cada registro. Se o dado foi excluido, exclui no banco de dados principal fazendo as tratativas para nao perder o relacionamento e guardando um log para isso, se foi alterado, atualizo os dados referentes ao registro alterado fazendo as tratativas pertinentes ao mesmo e assim por diante.

Não esqueça, o ideal seria a todo momento guardar as alteracoes/exclusoes/insercoes logados em um arquivo ou no seu proprio banco de dados para seguranca informando os dados que foram alterados, data e usuario, no caso de uma exclusao, o ideal seria guardar no log todos os dados do registro excluido (VALORES DE CAMPOS, DATA E HORA DA EXCLUSAO, USUARIO, etc...)

Ajudei ?

Sufolk
   - 27 mar 2007

Olá Carlos, ajudou sim amigo e te agradeço!

Entendi a lógica de geração dos registros para dar carga no dispositivo, mas surgiu-me algumas dúvidas:

- Como você faz o caminho inverso, do PPc para PC? Seguindo o mesmo critério?
- Como você trata os conflitos que porventura aconteçam numa replicação bi-direcional de uma tabela?

Novamente agradeço pela mão!

Carlosrodrigop
   - 27 mar 2007

bem, eu retorno para o web service um dataset, como ele é um objeto serializavel pode ser passado como parametro de um ws.

os dados que retorno para o coletor, no caso dos sistemas de coleta de dados que crio, eu separo os dados por operador do sistema no coletor de dados.

para cada operador existe um tange de dados de sua responsabilidade que pode ser separado por area geografica por exemplo que esse operador atua e retorno somente os dados pertinentes zerando os dados anteriormente existentes no coletor.

Sufolk
   - 27 mar 2007

Agora me confindi mais ainda Carlos :)
Acredito que estamos falando de aplicações com funcionalidades diferentes.
O que me refiro é o seguinte, imagine uma empresa que possui um cadastro de clientes que está sendo utilizando tanto pela aplicação ERP e tenho também no software de força de vendas para os representantes comerciais. No dispositivo tenho essas informações replicadas para uma base SQLCE da forma como você mensionou, envio para o pocket através do WebService XML a carteira de clientes daquele representante.
O problema seria a respeito da volta. Na questão dos pedidos não há problema pois não vou ter concorrência com os pedidos do meu ERP pois trato ele em outro módulo incorporando aos mesmos posteriormente, o problema seria por exemplo de o representante atualizar a informação no cadastro do cliente no pocket e alguém do RH alterar também uma informação do mesmo cliente no ERP, portanto, vai haver um conflito dessas informações.
Esse caso é um caso de replicação bi-direcional forma esta que tenho que tratar de alguma forma.

Agradeço a ajuda a todos..........

Carlosrodrigop
   - 27 mar 2007

O operador com o PPC vai estar na mesma rede de RF 100¬ do tempo, vc pode afirmar isso com precisão.

Caso vc possa, basta criar um web service que faça isso em tempo real, verifique se o registro foi alterado antes de ser visualizado e mostrar os dados mais rescentes para o operador do PPC.

E caso o operador do PPC esteja alterando os dados do cliente vc vai ter que priorizar por tipo de alteracao, ou seja, se alteracao mais confiavel é a feita dentro do sistema ou se é a do operador do PPC.

Sendo assim vc so atualiza antes a base de dados do PPC e replica as alteracoes no web service, assim vc nao tem que esperar retorno nenhum, a nao ser de registros novos no sistema.

Citação:
Agora me confindi mais ainda Carlos :)
Acredito que estamos falando de aplicações com funcionalidades diferentes.
O que me refiro é o seguinte, imagine uma empresa que possui um cadastro de clientes que está sendo utilizando tanto pela aplicação ERP e tenho também no software de força de vendas para os representantes comerciais. No dispositivo tenho essas informações replicadas para uma base SQLCE da forma como você mensionou, envio para o pocket através do WebService XML a carteira de clientes daquele representante.
O problema seria a respeito da volta. Na questão dos pedidos não há problema pois não vou ter concorrência com os pedidos do meu ERP pois trato ele em outro módulo incorporando aos mesmos posteriormente, o problema seria por exemplo de o representante atualizar a informação no cadastro do cliente no pocket e alguém do RH alterar também uma informação do mesmo cliente no ERP, portanto, vai haver um conflito dessas informações.
Esse caso é um caso de replicação bi-direcional forma esta que tenho que tratar de alguma forma.

Agradeço a ajuda a todos..........


Sufolk
   - 27 mar 2007

ok Carlos clareou mais as minhas idéias.

Somente a cargo de complementação, essa aplicação do PPc ela não vai rodar somente on-line. O sistema vai ser totalmente em batch sendo que o serviço de comunicação wireless vai servir somente para sincronizar as informações da base do PPC quando o vendedor estiver nas dependências da empresa ou pela internet.

Agradeço a ajuda Carlos e voltarei a perguntar novamente minhas dúvidas :)

Grato!!!!!

Carlosrodrigop
   - 27 mar 2007

Ok,

espero realmente ter ajudado...