[firebase-br] Versionamento de Banco - GitHub

Carlos H. Cantu listas em warmboot.com.br
Segunda Fevereiro 8 11:42:45 -03 2021


Eu particularmente sou conservador no que tange a aqutalização de
metadata. Já palestrei sobre isso no FDD, a palestra inclusive está
disponível pra quem quiser ver, no canal do FDD:

https://youtu.be/9vXWEbWtUFQ

O método que uso hoje é basicamente o mesmo que mostrei nessa
palestra, resumindo, scripts incrementais de atualização de metadata
que são disparados automaticamente quando o sistema é atualizado. Como
já tenho controle de versão do código do sistema, indiretamente acabo
tendo tb todo o histórico dos scripts aplicados.

Mum passado longinquo chequei a testar componentes de automatização de
atualização, que comparavam a estrutura atual com a final e geravam
scripts específicos pra atualizar/sincronizar, mas lembro que eles
falhavam em algumas situações bem especificas, então resolvi não
arriscar.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

MMSvl> Se isso te ajuda: aqui também usamos scripts.
MMSvl> Desenvolvemos nosso primeiro sistema em VB6 e agora estamos migrando 
MMSvl> para C#, e precisamos continuar o legado. Antes de iniciarmos o processo
MMSvl> de migração, procuramos várias ferramentas, métodos, jeitos, até 
MMSvl> acharmos essa "gambiarra", de rodar os scripts de alteração um a um 
MMSvl> quando o atualizador do sistema é iniciado.
MMSvl> Bom, o C#, pra quem conhece, disponibiliza um complemento, o Entity 
MMSvl> Framework, mas o EF ainda não esta pronto para o firebird. Tem vários 
MMSvl> erros que acontecem sem explicação nenhuma. Em algumas consultas nas 
MMSvl> issues no git do EF para firebird, tem vários relatos dos problemas, e
MMSvl> promessas para arrumarem, estamos na expectativa. Se isso acontecer ai
MMSvl> sim terei uma ferramente automatizada pelo software de retaguarda, onde
MMSvl> sem intervenção do usuário, as atualizações acontecem como que por 
MMSvl> mágica. O que mais me desanima, é que o PGSQL ja contempla esse recurso
MMSvl> a tempos.

MMSvl> Agora se o nosso guro @Cantu, tiver alguma carta na manga. Também tenho
MMSvl> interesse.

MMSvl> Abraços a todos e boa noite


MMSvl> Em 04/02/2021 15:26, Marcos R. Weimer via lista escreveu:
>> Ola!
>>
>> Aqui tambem fazemos o script "inteligente" que cria os campos se não
>> existir e tal, porém, temos procedures gigantescas.
>>
>> Digamos que queira comparar a procedure "quente" com uma alterada por algum
>> desenvolvedor? Este é o processo que queremos melhorar, está muito
>> trabalhoso.
>>
>> Uma idéia seria ter a SQL de cada tabela, procedure e afins versionada no
>> github, o problema seria na hora que sair a versão de produção, ter de
>> passar todas estas SQLs montando o script da versão na mão.
>>
>> Hoje temos um processo que está funcionando bem (a mais de 10 anos), mas a
>> idéia é facilitar e otimizar este processo.
>>
>>
>> -=Ma®©oS=-
>> Marcos R. Weimer
>> Pessoas quietas têm as mentes mais barulhentas - Stephen Hawking
>> Viver significa ter algumas alegrias e muito sofrimento - Pepe Mujica
>> Muitos daqueles que te chamam de louco queriam ter a sua coragem - Silvio
>> Santos
>>
>>
>>
>>
>>
>> Em qui., 4 de fev. de 2021 às 14:58, Gladiston Santana <
>> gladiston em vidy.com.br> escreveu:
>>
>>> Olá Marcos,
>>>
>>> Há muito tempo eu tenho feito scripts gradativos que testam a existencia
>>> dos objetos e na falta deles os cria e segue uma certa ordem domains,
>>> tables, alter tables, indices, constraints,...., procedures, triggers...
>>> enfim entendeu né. Esses scripts rodam desde a inauguração na base até
>>> torná-la a versão vigente.
>>>
>>> Estes scripts voce pode versionar com git, mas recomendaria um repositório
>>> central com a opção 'bare' para que todos possam ter a mesma versão de
>>> referência.  Ter alguém que conheça bem o banco de dados e possivelmente
>>> centralizar as coisas nele pode ser muito bom porque dá medo de pessoas mal
>>> disciplinadas subirem 'lixo' não testado para este repositório de onde
>>> outros sincronizarão.
>>>
>>> Aqui eu criei um programa de atualização que vai aplicando estes scripts
>>> do zero até o fim, se nenhum falhar então a tá pronto para ser enviado e
>>> compartilhado.
>>> Quando tenho que atualizar a produção segue o mesmo princípio, rodo os
>>> scripts na sequência desde o script que fez a fundação da base até as
>>> últimas atualizações. Apenas há um .exe que automatiza isso para não
>>> fazê-lo manualmente. Estes programas foram feitos com o Delphi, mas estou
>>> estudando fazê-los em node.js, o qual estou aprendendo, eu tô perdendo
>>> tempo em escrever UI para coisas banais que servem para automatizar.
>>>
>>> Hoje tem ferramentas bem melhores que te ajudam a criar um script com a
>>> diferença do banco A para o banco B, mas pessoalmente acho que se vc cuidar
>>> disso internamente desde o inicio do desenvolvimento nunca precisará de
>>> ferramentas assim.
>>>
>>>
>>> Em qui., 4 de fev. de 2021 às 10:05, Marcos R. Weimer via lista <
>>> lista em firebase.com.br> escreveu:
>>>
>>>> Ola!
>>>>
>>>> A alguns anos estamos versionando o banco na mão (salvando procedures,
>>>> montando scripts...) mas temos um banco grande (muitas tabelas,
>>>> procedures,
>>>> triggers, views...)
>>>>
>>>> Então venho perguntar o que estão usando para controlar/versionar o banco
>>>> (procedures, triggers e afins), se alguem tiver alguma ferramenta ou algo
>>>> do tipo  integrado ao github seria excelente.
>>>>
>>>>
>> ______________________________________________
>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
>> Para consultar mensagens antigas: http://www.firebase.com.br/pesquisa_lista.html
MMSvl> ______________________________________________
MMSvl> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
MMSvl> Para saber como gerenciar/excluir seu cadastro na lista, use:
MMSvl> http://www.firebase.com.br/fb/artigo.php?id=1107
MMSvl> Para consultar mensagens antigas:
MMSvl> http://www.firebase.com.br/pesquisa_lista.html




Mais detalhes sobre a lista de discussão lista