Sincronizar Base de dados

Tenho Um sistema PDV com uma base local (derby)… com suas tabelas de registros de clientes, produtos, etc…
O que presciso fazer é pegar os dados das vendas e enviar para uma base central remota… (Postgresql)… e atualizar o cadastro de clientes e produtos no pdv…
O problema é…existe alguma técnica já elaborada pra isso? ou não?.. Eu teria …cada vez que fizesse uma Importação de clientes, apagar todos os cadastrados no pdv e gravar todos denovo? ou tem um esquema para alterar somente os que foram alterados e gravar somente os novos… e assim por diante…

Editando agora… Para clarear um pouco a minha dúvida…Existe alguma técnica para sincronizar a tabela, por exemplo, de clientes de uma base de dados local para uma base de dados remota?

Boa tarde!

Eu não vejo uma forma em que você não tenha que efetuar uma leitura na base de dados x, recuperar as informações que necessita e passa-la a uma base de dados y, seja local ou remota. De uma forma ou outra, terá de executar ao menos a leitura em uma base e a gravação em outra.

Talvez tenha uma API que já ofereça este tipo de funcionalidade sem que seja necessário que você implemente, mas não foge dessa idéia.
Se fugir disso, vou gostar de saber :slight_smile:

Abraços.

se fosse 2 bancos de dados semelhantes como Postgresql -> teria varias ferramentas de espelhamento de dados ( como o Slony)
mais como são bases totalmente diferentes vai precisar criar uma camada de aspecto para tratar isso no Java…

Na empresa onde trabalho utilizamos apenas para geração de relatórios no final do mês, onde é criado uma tabela temporária onde se junta todos os dados para o mesmo…

Conheço um sistema que faz das duas maneiras, enviando apenas os alterados ou a base inteira.

É necessário toda a base, pois quando é colocado um novo PDV se faz necessário uma carga completa, agora apenas os alterados é utilizado para dar carga rapida e o pdv ficar o menor tempo possivel parado.

Apenas para comentar, um pdv tem varios tipos de tabelas que o mesmo utiliza, produtos, barras, aliquota, cliente (fidelização), promoção, etc, dependendo de como você está desenvolvendo e os recursos que você vai implantar… mas é interessante deixar o usuário escolher que base ele quer dar carga… !!! se eu apenas alterei alguns produtos, não tem porque enviar todo o cadastro, desde clientes, promoções, etc.

Att.

O hibernate não tem algum recurso disso? de sincronizar tabelas de bases de dados? Já que o hibernate tem a idéia de deixar transparente a parte de comunicação com as bases de dados…