Opinião escrita por Thiago Borges
Sobre o autor: Bacharel em Ciência da Computação e atualmente cursa Mestrado em Sistemas Distribuídos na UFG (Universidade Federal de Goiás). Trabalha com desenvolvimento de soluções ERP em Delphi desde 2002. É o autor dos drivers DBX4 para Firebird e PostgreSQL disponíveis em:
http://www.tbosystems.bluehosting.com.br/dbx4
Contato: thborges at gmail.com
Tive oportunidade de trabalhar com alguns SGDB's, dois deles com grande nível de detalhes: Oracle e Firebird. Obviamente, escolher entre um e outro depende muito das necessidades de cada projeto em particular.
O Firebird é um projeto que está evoluindo, não tão rápido quanto desejado, mas está. Porém, algumas limitações são gritantes quando se considera um ERP de grande porte, com um considerado crescimento da base de dados. Enumerando alguns, por ordem de importância:
1. O escalamento do banco. Não existe um suporte real a máquinas com vários núcleos e processadores. Existe a versão classic, mas não resolve o problema completamente. Embora a versão 2.5 esteja vindo com promessa do suporte parcial (SuperClassic) e a 3.0 com a finalização (evolução do SuperServer), ainda estou em dúvida quanto a real solução do problema. Mas as promessas são boas.
2. O otimizador de consultas pena pela falta de recursos para ajudá-lo a acertar. Está previsto o uso de histogramas para a versão 3.0, mas acredito que há um longo caminho para usar mais estatísticas, a fim de gerar melhores planos de execução. "Quase" que a única métrica utilizada é a seletividade do índice!
3. Não há um cache de cursores preparados no banco. Esse recurso está sendo adiado há um bom tempo.
Não é que o Oracle não tenha problemas quanto ao otimizador. Mas a geração de planos dele é a mais "experta" que já conheci. A quantidade de recursos para fazê-lo acertar são grandes: Hints nas consultas, histogramas, análise mais profunda de colunas, valores mínimos e máximos de colunas, dentre outros.
Dos três bancos que construí drivers DBX (Firebird, PostgresSQL e Oracle), o Firebird tem a API mais "fácil" de manusear e distribuir, e que não muda com frequência, o que garante compatibilidade quase entre todas as versões de fbclient.dll. Não posso dizer o mesmo do Oracle, que só libera bibliotecas para linkagem em compiladores específicos. Aí de você se trocar/não verificar as versões das dll (oci.dll e occi.dll)!
Necessidades à parte, o Firebird atende muito bem projetos de pequeno/médio porte. E sem dúvida, é o banco da maioria dos Brasileiros.