De que se trata o artigo

O artigo trata de demonstrar a criação de uma interface gráfica para realização de operações de Backup/Restore utilizando o Firebird e o utilitário de linha de comando Gbak, tornando a maneira de realizar estas tarefas muito mais amigável.

Em que situação o tema é útil

O tema é útil quando se deseja implementar aplicações personalizadas para automatização de tarefas cotidianas, fazendo com que o processo de realizar backup/restore seja mais simples, podendo ser realizado por pessoas sem um alto nível de conhecimento técnico.

Aplicação de Backup/Restore com Firebird

Tarefas como Backup/Restore são comuns. Principalmente no caso do Backup, já que é recomendado como uma forma de prevenção de possíveis problemas, tornando assim o seu ambiente menos suscetível a erros. Como já abordado em diversos artigos meus, a criação de aplicativos para a realização de tarefas rotineiras pode poupar grandes dores de cabeça. Embora através de uma busca rápida pelo Google seja possível obter inúmeros aplicativos como este, nada melhor do que criar sua própria ferramenta e adaptá-la conforme a necessidade. Sendo assim, neste artigo veremos como criar uma ferramenta para automatizar estes processos.

O Firebird desde seu nascimento, conta com alguns utilitários de linha de comando que podem (e devem) ser utilizados para manutenção e obtenção de estatísticas do banco de dados. Através destes, é possível realizar tarefas como Backup/Restore, verificações de índices, monitoramento de transações, correção do banco de dados, reindexação, limpeza do coletor de lixo (Garbage Collector – ver Nota do DevMan 1), além de outras tantas tarefas, como o Trace do banco (ver Nota do DevMan 2).

Nota do DevMan 1 – Garbage Collector

O Garbage Collector é um recurso bastante conhecido em programação. Neste caso, ele é responsável por fazer o gerenciamento de objetos que não foram destruídos, encarregando de gerenciá-los na memória e evitando assim os famosos Memory Leaks. Assim como no conceito da programação, o Garbage Collector está presente em bancos de dados. No Firebird não é diferente. Por padrão, o Firebird automaticamente gerencia os registros previamente deletados do banco de dados, de qualquer modo, realizar os processos de Backup/Restore do banco de dados realizam uma completa limpeza no banco de dados, fazendo com que o banco inclusive reduza drasticamente em algumas situações.

Embora exista essa grande quantidade de utilitários, todos são baseados em uma interface de comandos o que claramente pode proporcionar alguns pontos um tanto quanto desagradáveis. Isto porque a interface de comandos geralmente não é amigável, o que dificulta a visualização das informações, análise dos resultados e é claro, requer um conhecimento/domínio maior sobre os comandos, parâmetros e etc.

A maior justificativa para a criação deste tipo de aplicação é fazer com que o próprio usuário ou um suporte técnico esteja apto a fazer o backup ou restauração do banco de dados de forma simples e ágil, o que traz como benefício uma redução no tempo gasto para este tipo de tarefa. Vale lembrar que este tipo de recurso pode ser facilmente incorporado ao seu sistema, além de permitir adicionar uma gama grande de outros recursos como backup agendado, compactação dos arquivos e envio por FTP por exemplo.

Nota do DevMan 2 – Trace

O recurso de Trace nada mais é do que o monitoramento completo das atividades do servidor de banco de dados. Neste caso é possível realizar uma completa auditoria utilizando esta ferramenta, mapeando os detalhes de cada conexão ativa. Veja mais detalhes na sessão Saiba Mais ao final deste artigo.

O principal utilitário usado para a elaboração do nosso aplicativo será o gbak. O gbak está disponível desde a primeira versão do Firebird (geralmente dentro da pasta bin da instalação padrão). Através dele é possível utilizar passagem de parâmetros para definir as melhores maneiras de realizar tanto o Backup quanto o Restore do banco de dados, possuindo uma grande variedade de parâmetros configuráveis. O processo de Backup é dado basicamente pela chamada do gbak passando como parâmetro o local do banco de dados, usuário e senha e o local dos arquivos a serem gerados, que possuirão a extensão .fbk. O Restore é realizado praticamente do mesmo modo, porém, invertendo os parâmetros de .fbk e caminho do banco. Veremos isto no decorrer do artigo e abordaremos um pouco sobre os tipos de parâmetros, bem como suas respectivas funcionalidades.

Definindo a aplicação

Como anteriormente dito, o Firebird embora possua inúmeras ferramentas para auxílio de tarefas relativas ao banco de dados, estas não utilizam interfaces gráficas, sendo utilizadas e manipuladas principalmente através de linhas de comando (prompt de comandos). Neste caso, criaremos uma interface gráfica que realizará algumas das tarefas disponíveis vinha linha de comandos. Por se tratar de uma aplicação de baixa complexidade, não utilizaremos bancos de dados para realizar a persistência das configurações, que neste caso serão feitas por meio de arquivos xml. Vale apena aqui fazer uma breve comparação dos tipos de arquivo normalmente utilizados em criações de aplicações, o que pode justificar melhor a escolha do formato .xml.

Geralmente, quando há a necessidade de criar arquivos de configurações, as maneiras mais comuns são:

  • Arquivos de extensão .ini
  • Arquivos de registro .reg
  • Arquivos xml/binários do ClientDataSet

Arquivos de extensão .ini são demasiadamente utilizados em aplicações por ser facilmente criados, configurados e manipulados por qualquer pessoa. Comumente suas configurações são separadas em forma de sessões/configurações da sessão.

Exemplo:

  [BANCO DE DADOS]
  Caminho = C:\DB.fdb

Uma das grandes vantagens como se pode notar, é sua simplicidade. Já como desvantagem, observa-se que este tipo de arquivo é muito suscetível a erros. O Delphi disponibiliza a unit IniFiles para a total manipulação deste tipo de arquivo.

Por outro lado, arquivos de registro (.reg) são utilizados para armazenamento de configurações no registro do Windows. Este é um detalhe importante, pois este tipo de implementação apenas é funcional nesta plataforma. Seu manuseamento é realizado pelo Delphi através da unit Registry.

Por último, temos os arquivos de configuração xml/binário. As vantagens destes tipos de arquivo tratam da facilidade de manipulação e utilização como fonte de dados, tornando assim a forma de manuseio semelhante às fontes de dados. Tanto o arquivo xml quanto o binário são extremamente leves de serem utilizados (mesmo que o arquivo binário neste quesito leve vantagem). Estes arquivos são gerados facilmente pelo ClientDataSet através do método SaveToFile, configurando os parâmetros dfXML e dfBinary ou diretamente na extensão do arquivo a ser gerado. Outros fatores a serem considerados são a facilidade para a criação dos campos que farão parte das configurações utilizadas e também a redução considerável dos erros, já que a manipulação de arquivos xml podem ser realizadas por qualquer tipo de editor. Esta é uma vantagem em relação ao arquivo binário, pois este possui uma dificuldade de manipulação maior, o que de certa forma pode proporcionar um aumento das questões de segurança.

...

Quer ler esse conteúdo completo? Tenha acesso completo