Atualização - Sincronização entre Banco de Dados  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
fernandoeick
JavaEvangelist

Membro desde: 24/01/2007 14:18:48
Mensagens: 489
Localização: Campinas-SP
Offline

Bom Dia a todos!

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.

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.

This message was edited 2 times. Last update was at 10/04/2008 10:02:53


Analista/Desenvolvedor Java
Graduado em Informática - Sistemas de Informação.
Sun Certified Java Programmer 6.0
Next Step: SCWCD 5

E dá-lhe Grêmio!
[MSN]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

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

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
fernandoeick
JavaEvangelist

Membro desde: 24/01/2007 14:18:48
Mensagens: 489
Localização: Campinas-SP
Offline

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?

Analista/Desenvolvedor Java
Graduado em Informática - Sistemas de Informação.
Sun Certified Java Programmer 6.0
Next Step: SCWCD 5

E dá-lhe Grêmio!
[MSN]
fernandoeick
JavaEvangelist

Membro desde: 24/01/2007 14:18:48
Mensagens: 489
Localização: Campinas-SP
Offline

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.

Analista/Desenvolvedor Java
Graduado em Informática - Sistemas de Informação.
Sun Certified Java Programmer 6.0
Next Step: SCWCD 5

E dá-lhe Grêmio!
[MSN]
Linkel
JavaEvangelist
[Avatar]

Membro desde: 09/08/2007 10:51:16
Mensagens: 476
Offline

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!

http://intelectolivre.blogspot.com "A liberdade dominando a mente!"
__
Lindoélio Lázaro
Pós-graduado em Desenvolvimento de Sistemas para a Web
[Email] [WWW] [MSN]
fernandoeick
JavaEvangelist

Membro desde: 24/01/2007 14:18:48
Mensagens: 489
Localização: Campinas-SP
Offline

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

Por exemplo:
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.

Analista/Desenvolvedor Java
Graduado em Informática - Sistemas de Informação.
Sun Certified Java Programmer 6.0
Next Step: SCWCD 5

E dá-lhe Grêmio!
[MSN]
Linkel
JavaEvangelist
[Avatar]

Membro desde: 09/08/2007 10:51:16
Mensagens: 476
Offline

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!

http://intelectolivre.blogspot.com "A liberdade dominando a mente!"
__
Lindoélio Lázaro
Pós-graduado em Desenvolvimento de Sistemas para a Web
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team