2008/6/12 Roberto Mello <[EMAIL PROTECTED]>: > O que eu faco na nossa aplicacao e' que mantemos as alteracoes ao BD > no subversion, dentro de diretorios das respectivas versoes `as quais > as alteracoes pertencem.
Aqui tocou num ponto interessante. Não consegui ainda alcançar um estágio de maturidade nessa "coisa" de versionamento de DDL. Basicamente o que fazemos normalmente é versionar models (do mvc) e depois reconstruir a estrutura do banco a partir dessas classes (vide Rails::Migrations). O problema desse método é precisar manter o modelo de dados de acordo com as deficiências do active record para funcionar o versionamento. Outras ferramentas utilizadas foram ggetddl[1], mdb2schema [2] e uma versão modificada de SQL::Fairy [3]. Sinceramente, nenhuma trabalha de forma a atender 100% das necessidades. > O banco de dados tem uma pequena tabela que indica a versao atual. > Para fazer o upgrade basta verificar qual a versao atual, e rodar os > scripts de atualizacao posteriores, dentro de blocos transacionais. > Funciona muito bem. Funciona de acordo com a disciplina dos desenvolvedores, e diga-se de passagem, desenvolvedores (eu sou um) não costumam ter tamanha disciplina. :-) Penso em construir algo bem simples, como é utilizar um VCS. Voce altera o banco, ele faz a diferença entre duas definições e gera o DDL necessário, versionando uma versão anterior também em um formato que seja aplicável ao banco. Vejam bem, o que estou falando é em um sistema que *versione* DDLs e não que apenas façam o diferencial deles como é o caso do apgdiff, por exemplo. Acreditem, não é tão fácil quanto parece, embora que a defnição seja bem simples. [1] https://labs.omniti.com/trac/pgsoltools/wiki/getddl [2] http://pear.php.net/package/MDB2_Schema/ [3] http://sqlfairy.sourceforge.net/ Um abraço! -Leo -- Leonardo Cezar http://pgcon.postgresql.org.br http://www.dextra.com.br/postgres _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
