Banco de dados: Atualização de estruturas de dados

Neste artigo vamos desenvolver, didaticamente, um atualizador automático usando patches.

Gostaria de iniciar este artigo voltando ao passado quando os SGBD’s nem eram tão utilizados no dia a dia e SQL parecia uma linguagem extremamente difícil tanto de entender quanto de usar. Nem sou tão velho assim, mas me lembro como era difícil atualizar o banco de dados de meus clientes feito em Paradox. Era tabela pra cá, telefonema pra lá e muitos, muitos e-mails.

Hoje a situação mudou, aliás, de um bom tempo pra cá, às coisas tem mudado. Porém ainda me perguntam freqüentemente: “Como atualizar a base de dados de maneira rápida e prática?”. Todos sabemos que desenvolver aplicações comerciais significa que, além de um sistema bem estruturado, uma base de dados confiável, estável e sólida são de suma importância.

Um dos elementos básicos, entre vários, pra ter isso, é trabalhar com um banco compatível com a aplicação. Significa que campos, tabelas e uma série de outros objetos devem existir na base do cliente exatamente igual a estrutura de desenvolvimento.

Ou seja, é no mínimo inadmissível que um campo programado pra receber determinado valor não exista no SGBD do cliente o que acarretaria um crash do sistema nas telas que o utilizam. Esse é apenas um dos por menores que podem ocorrer em um sistema incompatível com seu próprio bando de dados.

Esse é o assunto deste artigo. Vamos desenvolver, didaticamente, um atualizador automático usando patches.

Nota: Segundo o Wikipedia (pt.wikipedia.org/wiki/Patch) um patch é um programa de computador do sistema operacional UNIX que aplica as diferenças textuais entre dois programas e, mais freqüentemente, a arquivos de computador contendo essas diferenças, ou arquivos diff.

Bem, em nosso caso o patch será na verdade um arquivo de script renomeado de SQL para PATCH, o que não deixa de ser uma boa idéia, assim diferenciamos o arquivo de outros da pasta de instalação.

A ideia é que o desenvolvedor crie o patch da forma que achar mais conveniente. No meu dia a dia gosto de trabalhar com o IBExpert, pois desenvolvo minhas aplicações em Firebird. Rapidamente posso criar um script apenas extraindo o metadados do banco de testes e gerar o script. Após, envio para o cliente que utiliza alguma ferramenta que faça o processo inverso, como o IBConsole ou IBOConsole.

Essa não é uma boa prática, pois preciso forçar o cliente a ter um desses programas, instalado e configurado pra então executar a tarefas de atualizar o banco. Com nosso atualizador automático, podemos focar apenas em desenvolver o script correto para atualização do banco.

Então basta enviar os arquivos por e-mail ou desenvolver alguma ferramenta capaz de fazer o download dos patches de um servidor FTP o que tornaria o processo ainda menos dependente do usuário.

A classe TPatche

Para este artigo preparei a criação de uma classe capaz de receber o "

[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados