Versionamento de Banco

Ai pessoal tenho um questão bem complexa a tratar neste tópico e espero que venham a surgir das mais diversas opiniões possíveis para um solução.
Bem em primeiro estou iniciando com Java a mais ou menos 8 meses e a minha dificuldade agora é em arranjar uma solução para controlar a versão do Bando de Dados ( no caso postgres ) e da aplicação ( jsp, xml, jasper ) enfim toda a parte que não é banco hehehe :wink:

O que acontece suponhamos:

Meu cliente está usando a versão 1.0 de minha aplicação. O meu CVS já arquivou todos os arquivos e seus estados da versão 1.0. A partir de agora concordamos que os desenvolvedores estão em continuo trabalho para fazer alterações e essas alterações vão gerar com o tempo a versão 2.0, correto ?
Então imaginamos que eu testei e instalei a versão 2.0 certo ? Bem o meu CVS continua controlando a parte da aplicação mas e agora na hora de instalar a versão 2.0 no meu cliente ele já tem dados no Banco não é que nem na implantação que eu crio o banco sem m preocupar com isso então os arquivosda aplicação que eu tenho que mudar é mais fácil pois meu CVS controla mas e as tabelas do Banco ? O que foi mudado ou o que foi preciso alterar ? Esse é o maior problema ao invés de todos terem que ficar anotando as rotinas feitas o que foi alterado o que não foi, vocês conhecem ou sabem como isso poderia ser resolvido da melhor maneira possível ? Algum software que controle as versão e por exemplo da versão 1.0 para 2.0 foi mudado isso então ele gera um script para fazer essa alteração ?

Olha eu espero ter sido claro e ter me feito esclarecer só para garantir imagine uma tabela Pessoa e o analista vai e muda ela para Pessoal, bem vocês sabem como é né no momento em que muitas pessoas dependem umas das outras sempre tem alguém que se esquece de algo e começa a dor de cabeça. Então lá no banco do meu cliente onde já está implantado um programa na versão 1.0 eu não posso dropar tudo e mandar recriar o banco, OBVIO, mas então eu tenho que prever que uma solução para colocar a versão 2.0 seria criar uma tabela Pessoal igual o da versão 2.0 transferir os dados da tabela Pessoa para ela, dropar a tabela Pessoa e instalar a nova versão da aplicação.
O que eu queria com isso é que meu analista não ficasse responsavel por anotar e um software controlasse tudo isso por versionamento e gerar os scripts necessários para mudar da 1.0 para 2.0 e assim por diante.

Bem é isso espero agora com os post podermos trocar idéias ou se vocês já saberiam me dizer a resposta melhor ainda ou um software que faça isso mesmo pago é de se analisar.

Um grande abraço
Junior

Cara,

o que rola é vc sempre manter a versão do banco de dados idependente da versão do seu sistema, assim vc tera um instalador/Atualizador para o banco e outro para o sistema, assim vc realmente terá que fazer varias copias do banco para sua segurança e criar uma especie de compatibilidade entre a aplicação e o banco, como se vc criasse uma tabela no banco que valida a versão do sistema e do banco para o programa ser executado.
Alterações de tabelas de banco de dados podem ser evitadas com um planejamento previo melhor, pois novas tabelas no banco sempre iram surgir, mas se vc quizer alterar uma coluna de uma tabela, terá que pagar o preço por isso que é no caso esperar que se rode todo o script, nao tem jeito mesmo!
Vão trocar mais ideias sobre esse assunto que ele é muito bom!!!
FloW

[quote=“AndersonAugusto”]Cara,

o que rola é vc sempre manter a versão do banco de dados idependente da versão do seu sistema, assim vc tera um instalador/Atualizador para o banco e outro para o sistema, assim vc realmente terá que fazer varias copias do banco para sua segurança e criar uma especie de compatibilidade entre a aplicação e o banco, como se vc criasse uma tabela no banco que valida a versão do sistema e do banco para o programa ser executado.
Alterações de tabelas de banco de dados podem ser evitadas com um planejamento previo melhor, pois novas tabelas no banco sempre iram surgir, mas se vc quizer alterar uma coluna de uma tabela, terá que pagar o preço por isso que é no caso esperar que se rode todo o script, nao tem jeito mesmo!
Vão trocar mais ideias sobre esse assunto que ele é muito bom!!!
FloW[/quote]

AI meu valeu pela resposta acho que entendi, tipo … A minh aversão 1.0 da aplicação está rodando no cliente então logo eu tenho um arquivo .sql de como está o banco naquela versão.
A partir dai tudo que for mudado eu terei um novo script, dai não mais um script completo do banco e sim um script que contém somente o que foi mudado da versão 1.0 para a 2.0 e claro uma versão full no caso de uma instalação do zero a partir da versão 2.0. Mas o que me interessa é a parte de uma atualização de aplicação e banco.
Acho que é isso né ? Mas dai tem todo um cuidado e controle de todo o pessoal que for mecher no banco … eles tem que anotar todos as alterações e depois juntar tudo isso em um script unico.

Cara,

é isso mesmo! Quando trabalhava com delphi, eu usava uma ferramente de controle de versão que se chama: Team source! Lá agente fechava as versões e mantiamos o fonte das aplicações e dos scripts dos bancos!

Agora no java ainda não trabalhei com CVS no java, mas sei que ele serve para isso! A ideia é vc especializar alguem para rodar os scripts do banco! E fazer uns instaladores para atualização que evitem que o banco seja corrompido! Mantendo esse controle o sistema evolui numa boa!
Flow!!!