Atualização - Sincronização entre Banco de Dados

6 respostas
F

Bom Dia a todos! :XD:

Recorro até vocês em busca de idéias, pois não sei que rumo tomar. É o seguinte: Usamos banco de dados postgree. Cada vez que é feita uma atualização/manutenção no banco por nós, programadores, é gerado um arquivo de script contendo o sql referente a tal operação.

Quando vamos atualizar a base de dados em nossos clientes, mandamos este arquivo para os vendedores/técnicos que abrem o postgree e executam o arquivo texto. Pronto, o banco do cliente, encontra-se atualizado.

Mas ocorrem situações em que o cliente está há meses com o banco desatualizado, e nestes casos, já existem dezenas de arquivos de scripts novos, e então os vendedores/técnicos precisam rodar cada um dos arquivos no cliente. Isso resulta em muito trabalho, pouca eficiência, muito desconforto, pois os clientes muitas vezes são descontrolados e rodar dezenas de arquivos textos com o cliente te pressionando do lado, não é muito bom (não queria estar na pele do técnico nesta hora).

E este fato, gera ainda outros problemas, como:

  • Temos clientes em todo o RS e alguns em outros estados. Para o cliente atualizar a base de dados, somente quando nossos técnicos os fazem uma visita, pois o cliente, por si só, não saberia abrir o postgree e rodar o script.
  • E outro, cada vez que nós, os programadores, precisamos retornar para uma versão antiga do banco, novamente, temos que rodar todos aqueles script, quando vamos atualizá-los posteriormente.

Gostaria, que os amigos do Guj, com experiência no assunto, pudessem me dar alguma sugestão, de como fazem a atualização das suas bases de dados. Me dar sugestões de metodologias, tecnologias, alguma forma que pudesse automatizar a atualização do banco de dados.

Atualmente, nós fizemos assim: Abrimos o postgree, abrimos o arquivo texto, copiamos o sql do arquivo texto, colamos ele na opção “sql” do postgree e executamos. E quando são dezenas de arquivos com falei, esse processo é repetido dezenas de vezes. E quando o processo acontece no cliente, isso se torna ainda pior.

Gostaria de por exemplo, dar dois cliques em cima de um arquivo de script, ele ser capaz de identificar qual foi o último script rodado e atualizar a base de dados a partir deste.

:arrow: O que eu desejava mesmo era que pudessemos mandar somente, por exemplo, um executável(?) para o cliente, e ele mesmo pudesse roda-lo e atualizar seu banco. De maneira simples, pratica e eficiente.

Agradeço possíveis ajudas.
Desculpem se fui meio enrolado e não consegui explicar direito.

6 Respostas

M

Você poderia integrar os migrations do rails a sua aplicação Java usando JRuby -> http://wiki.rubyonrails.org/rails/pages/UnderstandingMigrations

F

Só para informação, o sistema é desktop.

Mauricio, tu poderia me dar uma descrição de como funciona isso? E o que eu precisaria para implementar uma possível solução baseado neste teu link?

F

Bem… resgatei um post meu de algumas semanas atrás. Deixei um pouco de lado esta implementação mas agora preciso fazer.

Vou refazer a pergunta de uma maneira simples e direta, sem enrolação - e mantendo a política de evitar duplicação de tópicos.

:?: Como posso manter o banco de dados do cliente atualizado exatamente igual ao meu (tabelas, colunas - exceto os registros né). E fazendo o cliente executar a atualização, de maneira simples e prática.

Agradeço.

L

Fera, não sei se entendi…
Se entendi, você pode desenvolver uma aplicaçãozinha que gere esse scrit para um arquivo de texto .sql contendo somente a estrutura inteira do banco, e possibilite a leitura desse arquivo e consequente execução dele no postgreSQL…
Estou trabalhando num Criador de Instaladores para destribuições .jar que deverá gerar o script do banco informado (também uso PostgreSQL) e o instalador no momento da instalação deverá ler esse script e gerar o banco com toda a sua estrutura.
Segue a mesma idéia sua.
É uma solução legal e fácil de se fazer usando leitura/gravação aleatória a arquivo de texto com a classe Scanner, por exemplo…
Um abraço!

F

É, é esta mesma a idéia do que quero fazer. Porém não sabia muito por onde iniciar, agora já sei.

Por exemplo:
:arrow: Como pegar toda a estrutura do banco? Agora eu consegui, não sei se você já fez isso, mas neste tópico, supri minhas dúvidas.
http://www.guj.com.br/posts/list/87511.java
Não sabia como fazer isso. Esta foi a solução que encontrei. Se vc tiver alguma outra sugestão.

Bem, então agora consigo pegar toda a estrutura de um banco de dados através de linha de comando. Agora, precisa fazer isso através do java… quero começar isso amanhã.

E, o próximo passo é fazer com o que o cliente leia este arquivo e execute na sua máquina.
Mas eu fico pensando, porque o cliente já possui o seu banco devidamente funcionando. Eu não quero reconstruir todo o banco ou gerar um novo e sim somente atualiza-lo.

Bom ainda estou amadurecendo e pensando, não sei bem o que devo fazer. A inexperiência me impede de ter uma solução pronta na cabeça. Mas é por aí…

Abração.

L

Então, fera…
Sua própria aplicação pode fazer um dump do seu banco de dados via JDBC gerando um arquivo de texto com a extensão .sql, isso apenas para os dados do BD do cliente, sendo que a estrutura do banco pode ser feita com o pgAdminIII mesmo ou pg_dump, já que isso deve ser tarefa rotineira de qualquer desenvolvedor de aplicações com acesso a banco de dados, rsrsrsrsr…
Você poderia estar disponibilizando esse arquivo de script do banco por e-mail, sei lá, ou por um site seu da web, para facilitar e automatizar o processo, assim você poderia implementar em sua aplicação um “get” desse script pela URL e executar automaticamente a atualização sem o usuário nem perceber, rsrsrs…
Um script .sql é muito pequeno em tamanho físico no disco por maior que seja seu banco… Sendo assim não tem problema você gerar o script do banco inteiro, aliás assim é muito mais seguro, porque garante a integridade global de todo o banco… Para isso tem uns parâmetros no processo de dump do PostgreSQL que possibilitam gerar no script os comandos de, primeiramente, apagar o BD obsoleto, criar o mesmo BD posteriormente e então criar a sua estrutura atualizada de novo, daí viria o script gerado pela aplicação do lado do cliente que reabasteceria esse BD com seus dados… É simples…
Estamos aí!
Um abraço!

Criado 3 de abril de 2008
Ultima resposta 11 de abr. de 2008
Respostas 6
Participantes 3