Firebird o sucessor do Interbase
Abandonado por sua "mãe", o Firebird cresce e se destaca, sob a tutela de seus padrinhos na comunidade de Software Livre
A curta vida do Interbase OpenSource
Em julho de 2000 a então chamada Inprise, antes conhecida como Borland, decidiu liberar o código-fonte do banco de dados Interbase. Mais conhecido pelos nossos desenvolvedores por ser fornecido junto às edições Enterprise do Delphi, o Interbase é um banco rico em recursos voltado para o segmento "workgroup" ou departamental.
Entretanto, o produto Interbase era uma batata-quente para a Borland: a concorrência gerada pela entrada dos pesos-pesados Oracle, DB2, Sybase e MS SQL Server estava tornando cada vez mais difícil vender licenças do Interbase. Some-se a isso o fato de a Inprise como um todo estar passando por problemas financeiros (ainda hoje não inteiramente resolvidos), o resultado é a demissão da maior parte dos funcionários responsáveis por desenvolvimento, suporte e vendas do Interbase.
Por outro lado, a Inprise precisava fornecer um servidor de bancos de dados relacional: - suas principais concorrentes no mercado de BDs também fornecem ferramentas de desenvolvimento, e as vendas casadas de bancos e IDEs estavam minando as vendas do carro-chefe da empresa, o Delphi, além do C++ Builder e o JBuilder. Portanto, descontinuar o Interbase não era uma opção desejável.
A Inprise optou por uma solução inovadora para a época, que manteria o produto vivo a um custo mínimo: abrir o código da versão 6.0, ainda em beta. Foi uma decisão desesperada, tomada sob grande oposição dos setores da empresa que acreditavam ser melhor encerrar a divisão Interbase.
O sucesso foi imediato: milhares de downloads e uma comunidade de usuários crescente e revigorada. O produto passou a ser suportado ativamente por ferramentas de terceiros, ganhou componentes importantes, porém ausentes na versão proprietária, como o driver ODBC, e pegou uma carona no crescimento do Linux no mercado de servidores.
Em pouco tempo, a "nova" Borland decidiu mudar a estratégia para o Interbase (as idas e vindas dos nomes Inprise e Borland demonstram a falta de direção da empresa nestes últimos anos) e o produto foi novamente transformado em software proprietário. Foi liberada, em 2001, uma versão 6.0 "certificada", que continha código ausente da versão aberta, e, em 2002, foi liberada a versão 6.5 exclusivamente sob licença proprietária.
Nasce o Firebird
Foi então que aconteceu uma das coisas que demonstram por que deveríamos dar preferência ao software livre, especialmente em aplicações de missão crítica: A versão aberta do Interbase criou vida independente da Borland, sendo por questões de propriedade de marca rebatizada "Firebird", em alusão à Fênix, ave mitológica que renasce das próprias cinzas.
A comunidade que girava em torno do Interbase desde antes de sua incorporação à Borland (quando esta comprou a Asthon-Tate, criadora da um dia popular série dBase de linguagens de 4a. geração) e que havia crescido de modo empolgante com a versão OpenSource não aceitou a falta de compromisso da Borland/Inprise, decidindo cuidar dos seus próprios interesses. Assim, em julho de 2000, nasce o projeto Firebird no SourceForge e a Firebird Foundation.
Foi um rompimento difícil. Vários membros ativos da comunidade foram "censurados" nos fóruns e listas de discussão do Interbase (sob o controle da Borland) e o que poderia ter sido uma saudável parceria entre uma respeitada empresa de tecnologia e sua própria comunidade de usuários - tal qual Mozilla/Netscape, OpenOffice/StarOffice, NetBeans/Forte ou Eclipse/WebSphere Studio - acabou em ruptura completa. Para o Interbase, o resultado foi o lento declínio, um retorno à situação problemática de antes da abertura do código.
Recentemente a Borland liberou a versão 7.0 do Interbase, anunciada como um "embedded database" (banco de dados embutido), mas perdeu grande parte da sua comunidade de usuários e do suporte de terceiros. Já o Firebird está prestes a liberar a versão 1.0.5, com recursos exclusivos e suportando ainda mais plataformas.
Edições do Firebird
Na maioria das plataformas (entre elas o Linux) o Firebird é fornecido em duas edições, chamadas de "Classic Server", ou CS, e "Super Server", ou SS.
O Classic Server é a versão original do Interbase, onde cada cliente possui um processo gds_inet_server dedicado a ele, de forma semelhante a servidores como o Apache 1.x ou PostgreSQL. Quando o segundo cliente se conecta ao banco inicia-se um processo gds_lock_mgr, que gerencia o acesso concorrente aos mesmos arquivos de banco de dados. As instâncias do Interbase/Firebird CS são iniciadas pelo inetd, e há também suporte a um modo de conexão local onde o próprio cliente realiza o acesso aos arquivos de banco de dados, de modo que não há um processo separado para este cliente. Esta última opção é bastante interessante para o uso embutido, onde o banco de dados é de uso exclusivo de uma aplicação.
O Super Server surgiu na versão 5.0 do Interbase. O Firebird SS é formado por um único processo ibserver, executando autonomamente (em vez de iniciado pelo inetd), que mantém um pool de threads para atender às solicitações dos clientes remotos. Estas threads compartilham um único cache de páginas do banco de dados, e uma thread especializada gerencia o acesso concorrente aos arquivos. Não existe no SS o modo de conexão local suportado pelo CS. Esta é uma arquitetura bastante semelhante ao MySQL.
O SS é capaz de atender a uma carga de trabalho bem maior do que o CS, consumindo menos recursos do servidor, além de apresentar melhor tempo de resposta e segurança. Mas o CS continua sendo suportado por ser mais leve com poucos clientes e pelas vantagens do modo local para algumas aplicações.
Em algumas plataformas há ainda o processo Guardian (ibguardian), que atua como um "cão de guarda" (watchdog): ele monitora o processo ibserver, e caso seja terminado por algum motivo (por exemplo, um bug do código do servidor), um novo ibserver é iniciado.
A versão 1.5 do Firebird vai mudar os nomes dos executáveis e arquivos, basicamente trocando os prefixos "gds" e "ib" por "fbs" e "fb". Junto com esta mudança de nomes, cujo objetivo é permitir a instalação de versões do Firebird e do Interbase na mesma máquina, há mudanças no formato dos arquivos de banco de dados, que deixarão de ser intercambiáveis entre o banco livre e o seu irmão proprietário. Mas será a mantida a compatibilidade retroativa com aplicações compiladas para versões anteriores do Firebird (ou do Interbase) pelo fornecimento de uma biblioteca de cliente "pass-through" com o nome original.
Instalação do Firebird
O Firebird pode ser instalado via pacotes RPM compatíveis com várias distribuições do Linux, a partir de binários pré-compilados em formato tar+gz ou pela compilação dos fontes. Usuários de outros sistemas operacionais encontrarão pacotes de acordo com os padrões das respectivas plataformas, como um instalador estilo InstallShield, que suporta do Windows95 ao XP. Até a versão 1.0.2 a instalação padrão ocorre no diretório /opt/interbase, mas na versão 1.5, o diretório será /opt/firebird.
Há pacotes separados para as edições CS e SS, mas não existe um pacote "somente cliente". Tudo bem, o cliente do Firebird consiste de uma única biblioteca, a libgds, em versões estática e dinâmica. Basta copiar este arquivo, que qualquer aplicação compilada para acessar o Firebird irá funcionar. Ao contrário de outros bancos, não existe no Firebird o conceito de "aliases" de banco de dados: o cliente, ao se conectar ao servidor, especifica o caminho completo para o arquivo de banco de dados no servidor.
A instalação do Firebird cria o banco de dados de sistema isc4.gdb (isc5.fdb no 1.5), que contém o cadastro de usuários do banco. Inicialmente, ele contém apenas o usuário "sysdba" cuja senha é "masterkey". Não é necessário dizer que esta senha deve ser modificada logo após a instalação.
Administrando o Firebird
O Firebird não inclui o aplicativo gráfico de administração do Interbase, o IBConsole, pois ele não fazia parte da versão aberta. A versão aberta incluía o IBClient, cliente escrito em Java (mas não "100% pure" Java) ao qual o Projeto Firebird decidiu não dar continuidade devido aos problemas de compatibilidade com versões do Java e à necessidade de configuração extra de processos no servidor apenas para atender ao IBClient. Assim sendo, a instalação padrão do Firebird inclui apenas utilitários de linha de comando, tal qual o MySQL ou o PostgreSQL, mas existem várias ferramentas de terceiros que fornecem ferramentas gráficas ou web para administração do Firebird, tanto livres quanto proprietárias.
O conjunto de utilitários padrão do Firebird inclui, entre outros:
isql: ferramenta para execução interativa de comandos e scripts SQL
gsec: ferramenta para configuração de usuários e senhas no banco de sistema
gbak: ferramenta para backup e restore de um banco de dados ativo
Desenvolvendo aplicações para o Firebird
O Firebird, assim como todos os demais bancos livres e proprietários no mercado, oferece sua própria API para linguagem C, mas também é possível utilizar as APIs independentes de banco tradicionais de cada linguagem e plataforma: ODBC e OLEDB em Windows, DBI para Perl, Pear::DB para PHP e JDBC para Java. Ou seja: você pode utilizar qualquer ferramenta de desenvolvimento para Windows, Linux ou outro SO suportado para desenvolver aplicações acessando bancos de dados Firebird.
É digno de nota o fato de o projeto Firebird ter desenvolvido um novo driver JDBC 100% Java, com suporte ao protocolo XA (para transações distribuídas) e que não depende do antigo IBClient do Interbase, tornando o Firebird uma opção bem mais interessante para desenvolvedores Enterprise Java. Também vale a pena lembrar que drivers para o Interbase (como os fornecidos pelo BDE e dbExpress do Delphi/Kylix) funcionam com o Firebird.
Documentação sobre o Firebird
A única documentação disponível sobre o Firebird até recentemente era o conjunto de manuais (em formato PDF) liberado junto com o Interbase Open Source, mas sem permissão de modificação, além de tutoriais e artigos disponíveis na Internet. O projeto de documentação livre do Firebird ainda não decolou, devido à falta de voluntários e ao enorme esforço necessário para reescrever toda a documentação do zero.
Entretanto a empresa IBPhoenix está trabalhando em um novo conjunto de documentação, que pode ser adquirido em CD no site da empresa (veja referências). Já estão disponíveis o "User's Guide" e o "Reference Guide", além do "Quick Start Guide" que pode ser baixado gratuitamente.
Firebird x Outros bancos livres
Uma comparação detalhada entre o Firebird e outros bancos livres ou comerciais está além do escopo deste artigo. A Tabela 1 acima sumariza algumas diferenças entre os três principais bancos livres, para dar ao leitor uma primeira idéia de quando optar por cada um deles.
Conclusão
Apesar de pouco conhecido pela comunidade de software livre, o Firebird é um projeto que agrega mais uma opção de banco de dados livre poderoso, rico em recursos e capaz de suportar aplicações corporativas. Multiplataforma e suportado pela sua ferramenta de desenvolvimento favorita, pode se mostrar uma escolha mais interessante do que os tradicionais MySQL e PostgreSQL em algumas aplicações, especialmente para desenvolvedores Windows interessados em migrar para Linux.
Tabela 1
Recurso |
Firebird |
MySQL 3.x |
PostgreSQL |
Transações |
sim |
opcional |
sim |
Procedimentos armazenados
(incompatíveis com ODBC) |
sim |
não |
sim |
Triggers |
sim |
não |
sim |
Integridade referencial |
sim |
não |
sim |
Consultas aninhadas (subselects) |
sim |
não |
sim |
Outer Joins |
sim |
não |
sim |
Funções agregadas (count, sum, avg, ...) |
algumas |
poucas |
muitas |
Recursos para OLAP / DatawareHouse |
não |
não |
não |
Extensões Orientadas a Objetos |
não |
não |
sim |
Servidor baseado em múltiplos processos |
sim (CS) |
não |
sim |
Servidor baseado em múltiplas threads |
sim (SS) |
sim |
não |
Acesso direto, sem servidor |
sim (CS) |
não |
não |
Um arquivo por tabela |
não |
sim |
sim |
Um arquivo por BD |
sim |
não |
não |
BD ocupando vários discos |
não |
sim (via
links, apenas
Linux/Unix)
|
sim (via SQL) |
Liberação automática de registros deletados |
sim |
sim |
não |
Servidor estável em Windows |
sim |
sim |
não |
Servidor em Netware |
não |
sim |
sim |
Para Saber Mais:
Projeto Firebird no Sourceforge - firebird.sourceforge.net
Ferramenta livre gráfica para administração - www.ibaccess.org
História do Interbase e Firebird - firebird.sourceforge.net/index.php?op=history
Suporte comercial ao Firebird e documentação - www.ibphoenix.com
Ferramentas de terceiros para Firebird e Interbase - www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_contrib_download
O que ainda existe sobre Interbase na Borland - www.borland.com/interbase
Fernando Lozano - fernando@lozano.eti.br