Ir para o conteúdo

 Voltar a i-Educar De...
Tela cheia

Normalização e controle de aplicação de Deltas

10 de Junho de 2015, 15:49 , por Desconhecido - | 2 Pessoas seguindo este artigo.
Visualizado 54 vezes

Oi colegas do i-Educar;

 

Uma coisa que tem me deixado preocupado é a questão da aplicação dos deltas no Banco de dados. Hoje, essencialmente, temos um método que consiste em:

  1. Criar um arquivo em ieducar/misc/database/deltas/ com as alterações, e dar um nome sequencial para ele.
  2. Executar esse arquivo.
  3. Repetir para futuras alterações no banco de dados.

Não é um procedimento complicado, e futuros problemas em potencial são:

  • Sequenciação por numeração: isso começou com um dígito, e em seguida foram para dois dígitos. Hoje estamos no número 71.
  • Rastreabilidade: é preciso ter um controle separado ao banco para saber qual foi o último delta aplicado. Ou ficar olhando a estrutura do banco o tempo todo quando se for aplicar uma atualização.
  • Segmentação: hoje temos dois sub-diretórios abaixo de deltas. Diversos da Portabilis, e um da mytdt. Aqui no SERPRO temos um nosso, mas por padrão eu já replico os deltas da Portabilis. E futuros colaboradores, como podem proceder?

Por último porém não menos importante, tem a questão de novas instalações. Eu mantenho o arquivo ieducar/misc/database/ieducar.sql atualizado com os novos deltas, e é algo que dá um pouco de trabalho para manter.

 

Existem soluções geniais que resolvem isso tudo e automatizam o processo todo. No nosso caso não via como amarrarmos algum framework em PHP que cuide disso sem dar muito trabalho, até descobrir esse cara aqui:

https://github.com/robmorgan/phinx

Ele é instalado via Composer e tem uma abordagem bem parecida com a do Django. Você cria uma nova Migration, que é especifica para aquela mudança, e tudo fica tão simples quanto:

    public function change()
    {
        // create the table
        $table = $this->table('user_logins');
        $table->addColumn('user_id', 'integer')
              ->addColumn('created', 'datetime')
              ->create();
    }

E ele ainda permite que você visualize o estado do banco de dados e veja quais deltas foram aplicados e quando, e faz todo o trabalho sujo, e resolve potenciais problemas futuros.

 

Eu cogitei a hipótese de criar uma tabela 'deltas' no banco de dados e uma página boba para visualizar ela, pelo menos para finalidade de rastreabilidade. Hoje mesmo, os deltas que eu gero eu já coloco data para facilitar a sequenciação, mas vejo a utilização do Phinx como uma garantia necessária para longo prazo.

 

O que vocês pensam de eu fazer algo nessa linha?

Autor: Carlos Morais dos Santos


22 comentários

  • Db55bf80b4839a3c549f1789e0570089?only path=false&size=50&d=404Gabriel Matos de Souza(usuário não autenticado)
    12 de Junho de 2015, 17:03

     

    Olá Carlos,

     

    Esta também é uma preocupação minha e venho tentando parar para fazer esta alteração, porém ainda não tive tempo.

    Apoio 100% sua ideia e acho essencial para o i-Educar hoje.

    Se quiser trocar uma ideia sobre o assunto estou à disposição.

    Atenciosamente,

    Gabriel Matos de Souza

    Portabilis Tecnologia   

    www.​port​abil​is.c​om.b​r&nb​sp;

    • 7a8919c03027d6e77450a1042ea5369a?only path=false&size=50&d=404Lucas D'Avila(usuário não autenticado)
      15 de Junho de 2015, 18:00

       

      Oi Carlos e Gabriel,

      Eu acho uma ótima ideia usar uma ferramenta de migração, pois é bem complexo manter as bases atualizadas manualmente, ainda mais quando existem várias bases em produção, e a base bootstrap para novas instalações.

      Para resolver isto eu criei um bash script que roda um comando SQL em todas as bases, mas isto é uma solução paliativa.

      A solução ideal é usar um sistema de migração como o sugerido por você Carlos,  eu acredito que o phinx tenha sido baseado nas migrations do Active Record, um framework Ruby, as migrations do Active Record funcionam muito bem, então o phinx deve funcionar bem tambem.

      O i-Educar conta com um sistema de migrações nativo, que eu avaliei usar no passado, mas desisti não tenho certeza porque agora, possivelmente pois não seria possivel atualizar todas as bases de produção uma após a outra (coisa que o migration do active record permite).

      Eu super apoio usar o phinx, se eu poder ajudar em alguma coisa, me fale :)

      Abraço.

      Lucas D'Avila

      linkedin.com/in/lucasdevilla

      lucas@ieducativa.com.br

      iEducativa

      Gestão Escolar Inteligente

      ieducativa.com.br

Mapeamento do i-Educar por todo o Brasil

23 de Abril de 2018, 16:31, por Tiago Giusti

A Portabilis, organização que é integrante da comunidade desde 2009 e que atua no papel de mantenedora do projeto, propôs uma renovação de energias, ao final de 2017, para levar o i-Educar ainda mais longe.



Situação atual do lançamento do maior software livre de gestão escolar do Brasil

10 de Abril de 2018, 11:29, por Tiago Giusti

O Coordenador da Comunidade i-Educar e CEO da Portabilis, Tiago Giusti, foi a Brasília, no fim do ano passado, representando a Comunidade i-Educar numa visita ao Ministério do Planejamento para discutir soluções para alguns assuntos de interesse da Comunidade, tais como:



Em 2018, queremos o i-Educar por todo o Brasil

28 de Dezembro de 2017, 23:08, por Tiago Giusti

Esta mensagem é diferente das de retrospectiva dos anos anteriores. Vamos abordar primeiro sobre o futuro, encerrando com um resumo de como foi 2017.



Prefeitura de Criciúma implanta o i-Educar na rede municipal de ensino

20 de Dezembro de 2017, 11:04, por Tiago Giusti

Buscando melhorar o sistema de informações da rede municipal de ensino de Criciúma, a Administração Municipal, através da Secretaria de Educação e da Diretoria de Tecnologia da Informação (TI), implantará um software de gestão de dados nas unidades educacionais. Denominado i-Educar, o sistema aperfeiçoará o armazenamento de dados e auxiliará gestores e professores de Criciúma.



Retrospectiva i-Educar 2016: o que conseguimos realizar?

31 de Dezembro de 2016, 12:00, por Tiago Giusti

Chegamos a mais um 31/12 e é hora de fazermos a retrospectiva da Comunidade i-Educar, como temos feito todos os finais de ano.