Revista Do Linux
 


 
EDIÇÃO DO MÊS
 CD do Mês


 Capa
 Entrevista
 Estudo de Caso 1
 Estudo de Caso 2
 Software
 Programação
 Ferramenta
 Serviço Público
 Comunidade
 Emulador
 Banco de Dados
 WEB
 Corporativo
 Distro
assinantes
 

Quem ganha essa guerra

Acompanhe uma análise completa e detalhada dos recursos existentes nos Bancos de Dados Proprietários e Livres

Desde a explosão da Internet nos anos 90, o sistema operacional Linux vem aumentando a sua participação no mercado de redes de computadores, assumindo pouco a pouco as funções antes desempenhadas por sistemas operacionais de rede (NOS) proprietários, como servidores de arquivos, impressão, roteamento, acesso remoto, autenticação, segurança e monitoramento. Softwares livres como o Sendmail, Apache e Bind se tornaram a opção preferencial no fornecimento de serviços de aplicação e, em alguns casos, eliminaram completamente softwares proprietários concorrentes. Isto sem falar no crescimento de softwares como o PHP, o Zope ou o Jboss, voltados para o desenvolvimento de aplicações corporativas e Internet.

Há, entretanto, um segmento vital para todas as redes corporativas onde o crescimento do Linux e do software livre em geral não tem sido tão visível: o de bancos de dados. Por que será? Será porque os softwares livres disponíveis ainda não atingiram o grau de maturidade necessário? Ou por causa da dificuldade de se migrar dados e sistemas de informação para uma nova plataforma? Ou será devido ao medo dos departamentos de TI das empresas de se aventurar neste admirável mundo novo?

Bancos Proprietários e o Linux

Se você deseja nada mais do que um bom servidor para seus bancos de dados, sem se importar se o banco é proprietário ou livre, não existe motivo para não utilizar o Linux. Na verdade, os principais fornecedores de bancos proprietários do mercado consideram o sistema como “tier 1”, à frente de outros sistemas importantes como o HP-UX ou o AIX . Junte-se a isso o suporte 24x7 de fornecedores de hardware como IBM, Compaq e SGI para o Linux em seus servidores Intel ou RISC, e fica difícil justificar não se adotar o sistema operacional livre para o servidor de banco de dados.

O líder do mercado, a Oracle, afirma que o seu banco de dados é 40% mais rápido no Linux do que em outro sistema operacional popular para servidores Intel. A principal concorrente, a IBM, oferece seu carro-chefe DB2 em Linux até para os mainframes da série S/390 - e não é a velha tática de suportar o sistema operacional do concorrente, para depois convencer o cliente a migrar para outra plataforma. A IBM vem estimulando seus usuários DB2 a adotar o Linux em detrimento de seus próprios sistemas para mainframe ou para Intel.

Servidores multiprocessados, clusters, bancos distribuídos, web services, bancos hot-standby, nomeie o recurso e você encontrará suporte para o Linux. Some a isso a economia na aquisição de licenças do sistema operacional, a maior estabilidade e segurança do sistema, e sua extrema “customização”, e não restará a mínima dúvida de que o seu banco de dados estará melhor hospedado no sistema livre. Mas seria viável ter, além do sistema operacional, também o banco de dados livre?

A Evolução dos Bancos de Dados Livres

Os bancos de dados relacionais surgiram no meio acadêmico como software livre. O Ingres, desenvolvido na Universidade de Berkeley entre 1977 e 1985, deu origem ao banco de dados proprietário com o mesmo nome (hoje chamado de OpenIngres) e gerou grande parte da tecnologia utilizada no Oracle, Sybase, Informix e DB2.

Ao contrário de outros softwares, os bancos de dados relacionais não evoluíram muito no meio acadêmico. O fato é que servidores de bancos de dados são aplicações com ordens de grandeza mais complexas do que outros tipos de servidores de rede. Além disso, a maior parte desta complexidade é exigida somente fora do meio acadêmico, nos sistemas de informação transacionais e de apoio à decisão das grandes empresas. Por isso os bancos proprietários assumiram a dianteira na evolução tecnológica.

A explosão da Internet fez com que a situação mudasse. O software livre passou a ter muitos usuários fora do meio acadêmico e os bancos de dados proprietários com seus pesados protocolos de comunicação e exigências de hardware se mostraram inadequados como back-end para sites web (posteriormente o problema foi “corrigido”). Este foi o incentivo para a criação de um banco de dados leve chamado miniSQL, rapidamente suportado pelas linguagens de programação tradicionais no Unix, como Perl, TCL e Python, além da nova linguagem denominada PHP.

O miniSQL, ou mSQL, foi criado na Bond University, na Austrália, e seu criador fundou a empresa Hughes Technologies para comercializar o produto sob uma licença que era “aberta”, mas não livre. Infelizmente, a empresa não foi capaz de trabalhar junto com a comunidade que se formou em torno do mSQL e o banco estagnou, mas antes gerou uma “cria”.

A empresa suiça TcX Datakonsult AB utilizou as APIs e protocolos de rede do miniSQL sobre um formato de arquivo ISAM desenvolvido internamente e daí surgiu o MySQL. Desta forma, o MySQL herdou o suporte de software de terceiros criado para o miniSQL, só que mais rápido e tinha mais recursos. Além disso, os desenvolvedores do MySQL aceitavam e estimulavam a participação da comunidade, de modo que o software foi um sucesso, principalmente em sites web.

A TcX Datakonsult AB mudou o seu nome para MySQL AB e tornou a licenciar o MySQL sob a GPL, o que era coerente com o seu modus operandi. Enquanto isso, a Universidade de Berkeley dava prosseguimento às suas pesquisas, desta vez focalizando Orientação a Objetos, no projeto Postgres iniciado em 1986. Curiosamente, o Postgres (assim como o Ingres) não utilizava a linguagem SQL. Este suporte surgiu somente na versão Postgres95, criada por dois estudantes de graduação em 1994.

Nessa época, o Postgres não era mais um projeto oficial da Universidade de Berkeley. Porém, um grupo de ex-alunos da universidade e voluntários de várias partes do mundo assumiu, em 1996, a tarefa de organizar a “bagunça” que era o código experimental do banco e transformá-lo em um servidor confiável para ambientes de produção, pois não havia ainda um outro banco de dados livre com suporte completo aos padrões SQL e a aplicações transacionais pesadas.

Este grupo se transformou em entidade jurídica (ao contrário da FSF ou da Apache Foundation) e renomeou o banco como PostgreSQL, levando anos até compreender todo o código herdado da universidade e corrigir os bugs conhecidos. A versão 6.5, liberada em 1999, marcou o primeiro release realmente “de produção” e, desde então, cada nova versão é mais rápida e fornece mais recursos do que a anterior.

Hoje, tanto o MySQL quanto o PostgreSQL são ativamente desenvolvidos, com sua capacidade e confiabilidade comprovada por centenas de grandes usuários (que não são restritos a sites web) e são a fonte de renda de diversas empresas (até no Brasil) dedicadas a oferecer serviços de suporte, consultoria e desenvolvimento. Os dois já chegaram até a “roubar” alguns clientes importantes dos pesos-pesados do mercado.

MySQL ou PostgreSQL?

Para o DBA, acostumado a gastar horas no planejamento de tablespaces, os dois bancos livres serão decepcionantes: os dois utilizam arquivos comuns, um por tabela ou índice, e um “banco de dados” é apenas o diretório que contém estes arquivos. Por outro lado, com a popularização de HDs de grande capacidade e de controladoras RAID, dificilmente se encontra na prática um projeto físico “correto” de banco de dados espalhado por vários discos independentes.

As semelhanças entre os dois acabam por aí: enquanto que o MySQL segue um design multi-threaded, o PostgreSQL utiliza múltiplos processos. Mas isto não significa que o primeiro seja necessariamente mais rápido. Lembramos que o Apache, o Samba e o Sendmail também são servidores baseados em múltiplos processos e superam por larga margem concorrentes baseados em threads.

O MySQL busca produzir o banco mais leve, simples de administrar e rápido possível, abrindo mão de recursos “supérfluos”, como isolamento de transações, views, triggers, subqueries, procedimentos armazenados e integridade referencial. Embora alguns desses recursos estejam previstos para a série 4.x, o MySQL nunca será um banco equivalente aos pesos-pesados proprietários. Por outro lado, uma grande quantidade de aplicações não necessita realmente dos “recursos extras” e, assim, se beneficia da eliminação de overhead proporcionada pelo MySQL.

Ao contrário da crença popular, o MySQL suporta transações e funções agregadas. Tanto o MySQL quanto o PostgreSQL suportam criptografia, grants, replicação, backups on-line, mecanismos acelerados para carga de dados, outer joins e BLOBs.

O PostgreSQL tem por objetivo aderência total e completa aos padrões ANSI para o SQL e fornecer valiosos recursos, como dados espaciais ou tipos abstratos de dados para aplicações especializadas. Ele possui todos os recursos avançados existentes em bancos proprietários, exceto pelo suporte a transações distribuídas e a stored procedures que retornam cursores. Mas ele possui outros recursos, como herança, travamento de linha e concorrência por múltiplas versões, que não existem ou foram implementados apenas recentemente pela maioria dos bancos proprietários.

Desta forma podemos ver os dois bancos estão ganhando mercado: o MySQL se ajusta a aplicações que necessitam simplicidade e performance, para as quais os bancos proprietários são inadequados por serem muito pesados ou muito complexos. Já o PostgreSQL atende a quem necessita de riqueza de recursos e não abre mão das vantagens fornecidas pelo software livre: confiabilidade, segurança e independência do fornecedor.

Outros Bancos de Dados Livres

O MySQL e o PostgreSQL são os principais bancos de dados livres existentes, mas não são os únicos. Dentre mais de uma dúzia de outras alternativas, duas delas merecem destaque: o Interbase e o SAP DB.

O Interbase foi criado pela Borland, originalmente para o mercado de workgroup ou embeded. Quando os pesos-pesados decidiram oferecer versões dos seus bancos para este mercado, ficou inviável manter o banco e a Borland decidiu abrir o seu código. Foi uma maneira de não matar o produto, cuja manutenção ainda era interessante para complementar as ferramentas de desenvolvimento da empresa.

O primeiro resultado da abertura do Interbase em 2000 foi a versão 6.0 para várias plataformas. Ele continua evoluindo, segundo um modelo semelhante ao do Mozilla/Netscape e do Open Office/StarOffice, no qual existe também uma versão proprietária do software.

Até recentemente, não havia um driver ODBC gratuito para o Interbase, o que impedia seu uso por desenvolvedores Windows que não adotassem o BDE nem linguagens com interfaces nativas como Perl, Java ou PHP. Por outro lado, o Interbase é o banco de dados livre que suporta um SQL mais parecido com bancos proprietários, incluindo stored procedures que retornam cursores. Entre os pontos negativos, está o fato de que um banco de dados deve estar fisicamente contido em um único arquivo. (O recurso de bancos multi-arquivos serve apenas para contornar limitações de tamanho máximo de arquivos em alguns sistemas operacionais.)

O SAP-DB é o back-end do sistema de ERP mais popular do mercado, o SAP. Em 2000 o seu código foi aberto porque a SAP AG acredita que “bancos de dados se tornaram parte integrante da infra-estrutura tecnológica de qualquer empresa, por isso devem ser abertos”. A abertura do código do SAP-DB coincidiu com o anúncio das versões web do ERP e dos pacotes de e-Businness da empresa para o Linux.

Quando não escolher um banco de dados livre

Hoje existem bancos de dados livres adequados para sistemas de informação de todos os portes, contando inclusive com suporte comercial, mas temos que ser realistas e admitir que nenhum deles ainda é adequado para aplicações OLAP como Data Warehouses e Data Mining. O motivo é que os bancos livres ainda não implementam otimizações como star schems, views materializadas e índices de bitmap. Outra área onde bancos livres ainda não são adequados é a área de bancos de dados distribuídos. Mas a maioria dos bancos deste tipo em produção poderia ter sido implementados com vantagens como bancos replicados ou então hospedados em servidores maiores, coisa que o Linux torna viável e barato.

Veja na Tabela 1 a comparação entre os Bancos Livres e o Oracle, tomado como referência para representar os bancos proprietários.

Bancos de Dados Livres no Windows?

Tanto o MySQL quanto o PostgreSQL possuem versões para Windows (apenas NT, 2000 e XP, no caso do PostgreSQL). Se suas necessidades se restringem ao uso de front-ends como Access, Excel, Visual Basic ou Delphi, existem drivers ODBC nativos que permitem o acesso a ambos. Ou seja, adotar um banco de dados livre em Linux não implica em migrar imediatamente suas aplicações para o sistema operacional livre.


Fernando Lozano - fernando@lozano.eti.br


A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade
Anuncie na Revista do Linux