Facilidades para o desenvolvedor
O Software Livre oferece ferramentas
que facilitam o dia-a-dia do programador
Sistemas Gerenciadores de Bancos de Dados estão no coração de todas as empresas hoje. O Software Livre, como não poderia deixar de ser, está presente de forma crescente com pacotes como o MySQL, PostgreSQL, Interbase e SAP-DB. Ou então, temos sistemas livres como o Linux fornecendo uma base sólida e segura para pesos-pesados da indústria como o Oracle ou o DB2.
Mas o banco de dados é apenas parte de uma estrutura integrada, que deve incluir ferramentas de desenvolvimento e de administração para o banco em si e para os dados armazenados por ele. Usuários de bancos livres sentem a falta dessas ferramentas com seus bancos, recebendo apenas ferramentas básicas de linha de comando mas isto é parte da filosofia do software livre: criar bons softwares com um único propósito e facilmente integráveis em vez de pacotes gigantescos e monolíticos que tentam fazer várias coisas. Outros projetos se especializam em criar estas ferramentas, muitas vezes suportando múltiplos bancos.
Usuários de bancos proprietários estão acostumados a receber ferramentas como parte dos produtos, e nos últimos anos houve um tremendo esforço no sentido de melhorar tais ferramentas e torná-las gráficas. Mas nem sempre os usuários estão satisfeitos com elas, que são ou muito pesadas ou nada intuitivas. Por outro lado, se a empresa utiliza dois ou mais bancos diferentes, a falta de ferramentas padronizadas cria um custo maior de treinamento e manutenção do ambiente.
O software livre fornece ótimas ferramentas tanto para complementar bancos livres como para tornar mais produtivo o uso de software proprietário. Isto pode parecer um contra-senso (ferramentas livres para bancos proprietários), mas o software livre busca sempre atender às reais necessidades dos seus usuários, sem restrições artificiais como as que as empresas criam sobre os seus produtos proprietários para manter “presos” os seus usuários.
Uma busca em sites como o freshmeat.net irá mostrar centenas de softwares livres com variadas capacidades e utilidades, relacionados com administração e desenvolvimento em bancos de dados. Apresentaremos um pequeno apanhado, indicando algumas das ferramentas mais úteis.
Acesso ao Bancos de Dados
Ao contrário do que muitos possam pensar, a integração entre ferramentas livres de desenvolvimento e bancos de dados livres ou proprietários é comparável com os melhores ambientes RAD do mercado. Não há necessidade de se escrever para as APIs de baixo nível para linguagem C proprietárias de cada banco. A grande quantidade de ferramentas e utilitários para bancos de dados é uma prova disso.
Usuários de Perl podem utilizar a API padrão DBI, que com drivers DBD apropriados pode acessar qualquer banco e no CPAN você pode encontrar drivers para praticamente todos os bancos existentes hoje.
Usuários de Java tem o padrão JDBC, e os próprios drivers JDBC costumam ser escritos em 100% Java, garantindo portabilidade às aplicações.
Usuários de PHP tem os vários módulos específicos para cada banco, mas estão disponíveis várias bibliotecas de classes fornecendo APIs padrões, como a PHPlib, e as versões mais recentes do PHP estão incluindo uma biblioteca genérica como parte do PEAR.
Os projetos KDE e Gnome têm construído objetos para acesso a dados, que vão sendo pouco a pouco integrados com os ambientes KDevelop e Glade, via Kparts e Bonoobo, mas também existem pacotes de terceiros, como o libbond, que fornece widgets GTK+ apropriados para uso com o Glade.
Nem mesmo o Microsoft SQL Server está fora do nosso alcance, graças ao projeto FreeTDS, que fornece uma biblioteca C, drivers JDBC e DBD para acesso ao SQL Server e ao Sybase, pois ambos utilizam o protocolo TDS.
Ferramentas Básicas
A primeira ferramenta que necessitamos é uma ferramenta de execução de comandos SQL arbitrários, que, preferencialmente, também execute scritps SQL armazenados em um arquivo texto. Ela serve desde o teste de um comando SELECT isolado, que faz parte de uma aplicação, até a execução de todo o conjunto de comandos CREATE TABLE, CREATE INDEX e etc., que são importantes para a construção de todos os objetos necessários para o funcionamento de um sistema de informações. Em geral, desejamos que esta ferramenta esteja integrada a um navegador de tabelas, índices e constraints, de modo que seja possível verificar quais objetos existem no banco, suas definições e, preferencialmente, fazer pequenas correções nos dados sem ter que executar comandos INSERT ou UPDATE.
Usuários de Perl têm uma ótima ferramenta, o dbish, que opera em modo texto e utiliza a API de acesso a banco de dados DBI. Portanto, você pode utilizar o dbish para praticamente todas as necessidades de desenvolvimento e administração, qualquer que seja o banco. Ou então, utilizando o poder da linguagem Perl, você pode facilmente automatizar qualquer tarefa administrativa e, o que é melhor, aproveitar os scritps para bancos diferentes.
Em todas áreas de aplicação, o uso de um navegador web se mostra muito interessante pela facilidade com que se acessa qualquer aplicação, sem a necessidade de instalação local em cada estação de desenvolvimento ou de operação/suporte. Um dos aplicativos mais populares nesta área, aproveitando os mesmos recursos que permitem a criação de sites sofisticados de comércio eletrônico, é o phpMyAdmin, que em pouco tempo gerou os “filhos” phpPgAdmin e phpOracleAdmin e phpSybaseAdmin.
Ferramentas GUI
Se você prefere um ambiente GUI, pode experimentar o iSQL e o Fredy's Admin, também chamado de Java SQL Admin Tool. São aplicações escritas em Java utilizando drivers JDBC, o que lhes garante compatibilidade com praticamente qualquer banco ou sistema operacional. São ferramentas simples e focadas, portanto o overhead adicional do Java não prejudica a sua usabilidade em relação a softwares nativos.
Mas estão disponíveis várias ferramentas nativas tanto para usuários Linux quanto para usuários Windows. O KSQL (antigo KMySQL), o Koala e o Knoda fornecem aplicações poderosas para o ambiente KDE, sendo que o último segue um modelo bastante parecido com o MS Access, fornecendo inclusive construtores de formulários para facilitar a interação com o banco.
Usuários Gnome irão encontrar o gaSQL, baseado no Gnome-DB, além do dbMetrix e do Druid. Este último chega a orientar e organizar a construção de documentação em HTML sobre o seu banco de dados, além de ser capaz de gerar a declaração de classes Java para a interação com o seu banco.
Para Usuários Oracle
O Oracle não foi o primeiro banco conhecido ou rico em recursos a estar disponível para sistemas Linux, mas o lançamento do Oracle 8 para Linux fez com que as empresas passassem a reconhecer o valor do sistema fora do nicho de provedores Internet. Entretanto, quando o Oracle para Linux foi liberado, nenhuma das ferramentas de administração com as quais usuários de outras plataformas estavam acostumados foi oferecida. Somente na terceira versão disponível para Linux, o Oracle 8i Release 2 (8.1.6) o Oracle Enterprise Manager (OEM) foi portado.
Os pioneiros encontraram rapidamente duas ferramentas baseadas no GTK+ ricas em recursos, o SQL Worksheet e o Object Manager da OraSoft. O primeiro é uma ferramenta para a execução de comandos e scripts SQL (muito superior ao pobre Plus fornecido com o Oracle) enquanto que o segundo é uma ferramenta genérica para administração de instâncias, table spaces, segmentos de rollback, tabelas, índices e tudo o mais que compõe um banco Oracle.
Infelizmente, o desenvolvimento do Object Manager parece ter estagnado no último ano (ou então os autores acham que ele não precisa de mais nada...), mas temos outra ferramenta GUI, desta vez baseada no Qt chamada Toolkit for Oracle ou Tora, que também tem uma versão Windows. O Tora tem inclusive a capacidade de depurar código PL/SQL, executando suas stored procedures passo-a-passo.
Se você é fã de Java, experimente o jDBA, uma ferramenta semelhante ao Object Manager mas escrita em Java.
Mas as ferramentas que realmente fornecem um “algo a mais” para administradores de bancos Oracle são o Orac e o Oracletool, ambas escritas em Perl e utilizando DBI. Elas fornecem várias informações sobre ocupação de tablespaces, uso de memória, comandos SQL e aplicações com maior demanda de recursos do banco e etc. Ambos os projetos almejam, no futuro, suportar outros bancos, mas este é um processo difícil devido às diferenças entre os dicionários de dados em cada banco. Enquanto que o Orac é uma ferramenta GUI, utilizando Tk, o Oracletool foi escrito para funcionar como uma aplicação CGI em um servidor web. Na verdade, o Orac também suporta Sybase e Infomix.
Finalizando, não deixe de verificar o Karma, que é uma ferramenta especializada na monitoração de bancos Oracle, disparando alarmes em situações críticas como um segmento que não pode ser estendido ou um redo log cheio.
Para saber mais
libbond
bond.treshna.com/
dbish
dbi.symbolstone.org/index.html
PHPMyadmin
phpwizard.net/projects/phpMyAdmin/
PhpPGAdmin
gborg.postgresql.org/project/phppgadmin
phpOracleAdmin
phporacleadmin.org/
phpSybaseAdmin
www.itlab.musc.edu/phpSybaseAdmin/
iSQL
isql.sourceforge.net/
Java SQL Admin Tool
www.trash.net/~ffischer/admin/index.html
KSQL
ksql.sourceforge.net/
Koala
koala.sourceforge.net/
Knoda
knoda.sourceforge.net/
GASQL
gasql.sourceforge.net
DbMetrix
www.tamos.net/sw/dbMetrix/index.html
Druid
druid.sourceforge.net/
Object Manager
www.mattshouse.com
Tora
www.globecom.net/tora
jDBA
www.jdba.org/
Orac
ftp.funet.fi/pub/languages/perl/CPAN/authors/id/A/AN/ANDYDUNC/
Oracletool
www.oracletool.com/
Karma
www.iheavy.com/karma/index.html
Fernando Lozano
fernando@lozano.eti.br