Comunicação Muito Complicado

16 respostas
C

Pessoal preciso fazer com que uma base de dados presente em dois micros se mantenha atualizada quando ouver alteracao através do sistema de um dos micros, ou seja, quando foi inserido um cliente em um micro ele atualize o outro sistema.

Mas o problema é que esses micros estao em estabelecimentos diferentes e a conexão deles com a internet é via modem. Qual seria a melhor maneira em Java de fazer isso, alguem tem alguma idéia?

OBS.: Os micros nao podem ficar conectados o tempo todo, eles só seriam conectados 2 vezes por dia.

16 Respostas

danieldestro

Primeiro: A alteração de dados ocorre nas duas apontas ou apenas em uma?
Segundo: Porque não usar uma base central ao invés de duas?

C

As duas bases tem que ficar sempre iguais, e a base nao pode ser unica pois os micros vao trabalhar offline

Luca

Olá

Procure por replicação. Aqui mesmo no GUJ falamos sobre isto se não me engano, na semana passada.

[]s
Luca

C

Vou procurar valew Luca

danieldestro

É, realmente é uma situação bem complicada…

Sugestão:

Ter uma base de dados central (X).

Ponto A ter sua base, que é a cópia de X, mais os dados novos de A.
Ponto B ter sua base, que é a cópia de X, mais os dados novos de B.

De tempos em tempos A e B atualizam os seus dados em X. E logo em seguida A e B lêem os dados que estão em X e não estão em sua base local.

Isso garante “independência” caso haja Pontos C, D, E…

Luca, vai dormir, está tarde!

C

Ótima idéia mas essa base X estaria onde? em um servidor web por exemplo?

C

Tava pensando nessa idéia sua mas por exemplo como vou acessar um banco em um servidor web por exemplo? teria que ter um jeito do programa dar download de algo que depois de desconectado atualizasse o banco para ficar menos tempo conectado concorda? que tal xml?

danieldestro

Cria, no programa dos PONTOS (A, B, …) uma função de sincronização de dados.

Onde:

O Ponto gera um arquivo XML ou TXT com os novos dados e o envia para este servidor central.

E depois solicita os dados do servidor central que foram atualizados por outros pontos, vindos em forma de XML ou TXT.

“Simples”, né!!! :roll:

E

Sem querer ser intrometido mas já sendo… :oops:

Essa solução pode causar inconsistência nos dados, não? Se os pontos A e B alteram um mesmo registro, quando for ocorrer a atualização haverá duas modificações em um mesmo registro…certo?

Perigoso… :?

dukejeffrie

Pois eh… é meio que nem CVS: o cara ajuda, mas não resolve.

cbras, se sua aplicação roda offline, ela não tem como saber o que os outros pontos (Ponto já virou termo técnico na discussão) estão fazendo. Por isso, quando vc for sincronizar os dados, podem aparecer conflitos.

Antes de tudo, é bom ver que tipo de conflitos podem aparecer, e como dá pra resolvê-los. A metáfora do CVS é boa. Vc tb pode ter um tipo de token, sem o qual um ponto não pode comitar as alterações, assim vc tem apenas um commit de cada vez, e pode obrigar os outros pontos a baixarem as novidades antes de enviarem suas alterações.

Isso só se sua aplicação tem cada ponto rodando desconectado, senão as melhores idéias caminham na direção oposta…

[]s!

C

Pessoal um amigo meu me sugeriu conexão direta entre os micros ja viram isso em algum lugar?
Explicando Melhor:
Lebram-se do DukeNukem onde era possivel vc deixar um micro esperando e o outro discar para esse micro lembran-se? algo do tipo nunca nem imaginei como fazer algo do tipo vcs tem idéia?

pcalcado

cbras,

Sim, mas vc vai se conectar a cada alteração? Não gostaria de pagar esta conta de telefone :wink: fora que um micro pode discar pro outro ao mesmo tempo, e as linahs teriam que ser exclusivas, não ia ser legal alguém atender o telefone “Loja XYZ, bom dia!” e receber aquela briga de gatos que o mode faz…

Bom, já tive problemas assim, enão tem muito jeito não. Certa vez, rpecisei rpojetar um e-commerce que trabalhava integrado ao sistema de uma loja de conveniência, o projeto-piloto envonvia o estoque de apenas uma loja da rede. O problema é que a emrpesa que fez o ponto-de-venda faliu, então fiquei na mão.

Apresentei algumas soluções, e o cliente escolheu esta separar um pouco do estoque da loja real para a virtual, e para evitar que algo que esteja encalhado na virtual não possa ser vendido pela loja real, eles sincronizavam os dados algumas vezes por dia [se uma das lojas estivesse com estoque baixo, “pedia” a outra algumas peças]. Funciona razoavelmente bem, mas é gambiarra.

Tem certeza que seu cliente/sua emrpesa não pdoe pagar um ADSL da vida? Pode ser o planos mais mixuruca… Aí você mantinha tudo em um servidor de um data center qualquer [R$40/mês] e ambos o acessavam.

[]s

danieldestro

Acontece que não tem ADSL lá na cidade dele.

Mas, segundo o que o rapaz me disse, a aplicação dele não é tão crítica assim não.

Ou seja, é só permitir que clientes novos de uma locadora, tbm possa locar em outra…

A sincronização do fim do dia é suficiente.

Nem na própria Blockbuster vc abre a conta em uma unidade e loca em outra no mesmo dia.

C

Entao pessoal essa idéia de discar de um micro para o outro nao ocorreria toda vez que ouvesse alteração mas sim em determinados horários, era o que eu tinha imaginado. Outra coisa sei que parece besteira mas mesmo que eu nao venha a fazer desse modo (que é o que provavelmente vai acontecer), gostaria muito de saber como si liga de um micro para o outro desse modo. Digo que possivelmente eu nao faça desse jeito pois até agora a idéia melhor acho que foi a do Daniel.

dukejeffrie

“danieldestro”:

Ou seja, é só permitir que clientes novos de uma locadora, tbm possa locar em outra…

Ah, bom, então não tem nem conflito! Bom, não sei, dá pra alugar em uma e devolver na outra??

Se a base compartilhada é só a de usuários, é sussa…

sobre discar com java não sei nada, sei que existe uma tal de java.comm pra falar com modem…

[]s!

caiofilipini

Tem a JTAPI:
http://java.sun.com/products/jtapi/

[]'s

Criado 15 de abril de 2004
Ultima resposta 19 de abr. de 2004
Respostas 16
Participantes 7