FACULDADE LOURENÇO FILHO Flávio Martins Colares ANÁLISE COMPARATIVA DE BANCO DE DADOS GRATUITOS FORTALEZA 2007 FLÁVIO MARTINS COLARES ANÁLISE COMPARATIVA DE BANCO DE DADOS GRATUITOS Monografia apresentada à coordenação do curso de Ciências da Computação da Faculdade Lourenço Filho, como requisito para obtenção do grau de Bacharel em Ciência da Computação. Orientadora: Valneide Cabral, M.Sc. FORTALEZA 2007 MONOGRAFIA APRESENTADA À COORDENAÇÃO DO CURSO DE CIÊNCIA DA COMPUTAÇÃO DA FACULDADE LOURENÇO FILHO INTITULADA, ANÁLISE COMPARATIVA DE BANCO DE DADOS GRATUITOS, COMO REQUISITO PARA OBTENÇÃO DO GRAU DE BACHAREL EM CIÊNCIA DA COMPUTAÇÃO. POR: FLÁVIO MARTINS COLARES APROVADA EM:10/08/2007 BANCA EXAMINADORA CONSTITUÍDA DOS SEGUINTES PROFESSORES: Profa. M.Sc. Valneide Cabral Faculdade Lourenço Filho Profa. Msc Fabiana Gomes Marinho Faculdade Lourenço Filho Prof. Msc. William de Araújo Sales Faculdade Lourenço Filho Agradecimentos Agradeço a professora e orientadora M.Sc. Valneide Cabral, pela dedicação, apoio e encorajamento contínuo para o desenvolvimento deste trabalho, aos demais Professores, pela cobrança e incentivo nas disciplinas por eles ministradas, e todos os funcionários que fazem esta Instituição de ensino, pelo seu trabalho que em muito contribuiu e auxiliou em nossa trajetória, e à direção da Faculdade Lourenço Filho, pelo apoio institucional e pelas facilidades oferecidas. DEDICATÓRIA Dedico à minha mulher, Tarcyana, aos meus filhos, Victor e Déborah, pelo apoio, incentivo, contribuição e compreensão durante todo o curso. Aos meus amigos, colegas de trabalho e faculdade, pela ajuda, incentivo dispensados a mim em toda a elaboração deste trabalho. RESUMO Software Livre (Free Software) é o software disponível com a permissão para qualquer um usá-lo, copiá-lo, e distribuí-lo, seja na sua forma original ou com modificações, seja gratuitamente ou com custo. Em especial, a possibilidade de modificações implica em que o código fonte esteja disponível. Se um programa é livre, potencialmente ele pode ser incluído em um sistema operacional também livre. E importante não confundir software livre com software grátis porque a liberdade associada ao software livre de copiar, modificar e redistribuir, independe de gratuidade. Existem programas que podem ser obtidos gratuitamente mas que não podem ser modificados, nem redistribuídos. A finalidade deste estudo é conhecer um pouco deste mundo livre, buscando conhecer os três maiores expoentes hoje existentes no mercado mundial de SGBD's. Será avaliada a viabilidade da adoção de Banco de Dados Gratuitos, pelas organizações que pretendam adotar a prática da informatização das informações, com integridade dos dados e com redução de custos e serão analisados três principais bancos de dados livres que podem concorrer de fato com as grandes empresas como a IBM, Microsoft e Oracle: Firebird 2.0, MySQL 5.0.26 e PostgreSQL 8.2.0. Este trabalho tem como objetivo geral investigar se a adoção de banco de dados gratuitos é segura e viável, e como objetivos específicos: analisar conceitos e características de bancos de dados; e apresentar o que sejam bancos de dados gratuitos com suas vantagens e limitações. Quanto ao método de abordagem do presente trabalho, foi feito uso do método indutivo, acompanhado da técnica de pesquisa bibliográfica. Com as consultas a fontes bibliográficas diversas, será possível o exame e estudo do tema sob os mais diversos enfoques e entendimentos, o que propiciará um aprofundamento na matéria e, conseqüentemente, um embasamento teórico para a realização do trabalho e a obtenção dos fins por ele visados. Como resultados finais verificou-se que o MySQL e o PostgreSQL, são os bancos mais utilizados e como se pode ver, possuem muitas facilidades para o dia-a-dia. Além disso, por serem os mais populares, desfrutam de uma grande gama de ferramentas desenvolvidas por terceiros e suporte especializado. Atualmente, ao que tudo indica ambos estão convergindo em termos de recursos. Enquanto o MySQL busca aumentar o seu conjunto de funcionalidades, o que era uma grande necessidade, o PostgreSQL busca aumentar sua performance: a nova versão 8.2.0 tem como um dos destaques o aumento de 20% em performance segundo seus desenvolvedores. Palavras-chave: Banco de dados, Firebird, MySQL PostgreSQL, Benchmark, SGBD's. SUMÁRIO INTRODUÇÃO 8 1 BANCOS DE DADOS 12 1.1 CONCEITO E CARACTERÍSTICAS DE BANCO DE DADOS 12 1.2 O MODELO RELACIONAL 18 1.2.1 Conceitos 18 1.2.2 Restrições do modelo relacional 20 1.3 PADRÃO SQL 22 2 FATORES DETERMINANTES NA ESCOLHA DE UM BANCO DE DADOS 24 2.1 O SISTEMA DE BANCOS DE DADOS VERSUS SOFTWARE LIVRE 26 2.2 TIPOS DE LICENÇA DE SOFTWARE 28 3 BANCOS DE DADOS GRATUITOS 33 3.1 MYSQL 33 3.2 POSTGRESQL 36 3.3 FIREBIRD 37 4 NOVA VISÃO DAS EMPRESAS QUE COMERCIALIZAM BANCO DE DADOS 40 4.1 CARACTERÍSTICAS DO ORACLE EXPRESS 42 4.2 CARACTERÍSTICAS DA DB2 EXPRESS-C 44 4.3 CARACTERÍSTICAS DO SQL SERVER 2005 EXPRESS EDITION 48 4.4 TENDÊNCIAS 52 5 COMPARATIVOS E TESTES DE PERFORMANCE (Benchmark) 56 5.1 COMPARANDO FIREBIRD, MYSQL, POSTGRESQL 57 5.1.1 Análise de Desempenho (Benchmark) 67 5.2 COMPARATIVO DE PERFORMANCE ENTRE BANCO DE PROPRIETÁRIOS E GRATUITOS 68 5.3 ANÁLISE DE CUSTOS NA AQUISIÇÃO DE LICENÇAS DE BANCOS PROPRIETÁRIOS 69 6 CONCLUSÃO 71 BIBLIOGRAFIA 73 INTRODUÇÃO Inicialmente se faz necessário estabelecer a diferença entre Banco de Dados (BD) e Sistema Gerenciador de Banco de Dados (SGBD). BD é uma coleção de dados que mantém relações entre si e está armazenada em um dispositivo que permite armazenar, modificar e recuperar dados. Este dispositivo é o SGBD. Uma camada entre os dados e as aplicações responsável pela execução de tarefas de manipulação, gerenciamento, concorrência e recuperação de falhas. No decorrer do processo de escolha do SGBD deve-se levar em consideração aspectos como: características do sistema, habilidades, licença e suporte. Hoje, com um mercado cada vez mais competitivo, as empresas buscam diuturnamente informatizar seus processos. A grande massa de informações provenientes destes processos de integração de sistemas, do comércio pela internet e business intelligence é de grande valor para a tomada de decisões destas organizações e estes dados são armazenados utilizando-se Banco de Dados. Os Bancos de Dados são repositórios que não possuem a função específica de armazenagem; podem recuperar, efetuar backup em tempo real e 9 manter a segurança dos dados muitas vezes críticos para os negócios das empresas (CANTU, 2005). Quando o assunto banco de dados vem à tona em rodas de profissionais de informática, os nomes mais lembrados são na sua grande maioria, aqueles ditos comerciais ou proprietários: Oracle, SQL Server e DB2. No entanto o mundo do armazenamento de informações não se limita a estes sistemas. Além deles, existem os chamados bancos de dados livres, ou seja, bancos de dados cujo licenciamento e uso não obriga a aquisição por meio do pagamento de licenças, sejam por servidor, por usuários ou por processador. Estas bases de dados há muito mostraram que são capazes de enfrentar seus concorrentes proprietários e de altos custos de igual para igual em vários segmentos e ambientes, tornando-se uma alternativa viável para diversas corporações ao redor do mundo. Além disso, a cada dia estes sistemas estão mais maduros, trazendo para o profissional ou empresa, mais segurança, confiabilidade, estabilidade e principalmente, redução no custo de licenciamento. Assim como o Software Livre, onde dentre eles destaca-se o Linux, hoje os Bancos de Dados Gratuitos também já se tornaram uma realidade. Mesmo sabendo-se que Bancos de Dados Comercias (pagos) estão bastante consolidados, incluindo aí as grandes empresas como IBM, Microsoft e Oracle, os bancos gratuitos, alguns deles Open Source (código aberto), começam a mostrar sua força. Dentre outras vantagens, o uso destes bancos de dados não obriga a aquisição por meio de pagamento de licenças, sejam por servidor, por usuário ou por processador. Repetindo o que já aconteceu com o Linux, o banco 10 de dados relacional está se tornando uma commodity1, quer pela oferta de bons produtos ou até mesmo pela concorrência dos softwares livres. Para os padrões tecnológicos atuais, garantir a segurança, a integridade e a autenticidade de informações, quer sejam acessadas localmente ou na troca de informações pela Internet, é o mínimo que se pode esperar. Uma alternativa para informatização e com baixo custo é a adoção de Banco de Dados gratuitos, uma prática ainda pouco utilizada pelas empresas, mais que atende plenamente as necessidades da grande maioria, dependendo é claro do porte da aplicação e das características da aplicação. Neste contexto, pretende-se responder ao seguinte questionamento: adoção de banco de dados gratuitos é viável? Dessa forma, a finalidade deste estudo é conhecer um pouco deste mundo livre, buscando conhecer os três maiores expoentes hoje existentes no mercado mundial de SGBD's. Será avaliada a viabilidade da adoção de Banco de Dados Gratuitos pelas organizações que pretendam adotar a prática da informatização das informações, com integridade dos dados e com redução de custos e serão analisados três principais bancos de dados livres que podem concorrer de fato com os gigantes do mercado: Firebird 2.0, MySQL 5.0.26 e PostgreSQL 8.2.0. Este trabalho tem como objetivo geral investigar se a adoção de banco de dados gratuitos é segura e viável, e como objetivos específicos: analisar conceitos e características de bancos de dados; e apresentar o que sejam bancos de dados gratuitos com suas vantagens e limitações. 1 O termo commodity é utilizado nas transações comerciais de produtos de origem primária nas bolsas de mercadorias. É uma referência aos produtos em estado bruto ou com pequeno grau de industrialização, de qualidade quase uniforme, produzidos em grandes quantidades e por diferentes produtores. Estes produtos in natura, cultivados ou de extração mineral, podem ser estocados por determinado período sem perda significativa de qualidade. Exemplos: borracha, ouro, aço, prata, cobre, soja e trigo. Também pode ser utilizado para referir-se a produtos sem diferenciação. 11 Quanto ao método de abordagem do presente trabalho, foi feito uso do método indutivo, acompanhado da técnica de pesquisa bibliográfica. Com as consultas a fontes bibliográficas diversas, será possível o exame e estudo do tema sob os mais diversos enfoques e entendimentos, o que propiciará um aprofundamento na matéria e, conseqüentemente, um embasamento teórico para a realização do trabalho e a obtenção dos fins por ele visados. O trabalho apresenta-se dividido em quatro capítulos: primeiro capítulo aborda conceitos e características de banco de dados, o sistema de bancos de dados, o padrão SQL, fatores determinantes na escolha de um banco de dados, e tipos de licença de softwares. O segundo capítulo discorre a respeito de bancos de dados gratuitos. O terceiro capítulo, por sua vez, analisa uma nova visão das empresas que comercializam bancos de dados. No quarto capítulo é apresentado um comparativo de custo de licenciamento dos bancos de dados analisados bem como testes de performance (Benchmark) entre eles. 1 BANCOS DE DADOS 1.1 CONCEITO E CARACTERÍSTICAS DE BANCO DE DADOS Um sistema de banco de dados é uma forma de armazenar dados e gerir informações para a posterior recuperação ou atualização dessas informações por um usuário. Deve evitar perdas de dados por falhas no sistema, acessos não autorizados e anomalias de dados (TANENBAUM, 2000). Um sistema de banco de dados tem como principais componentes, além dos dados, o hardware, o software e os usuários. Os dados devem ser integrados, ou seja, deve permitir que diversos usuários possam acessar os mesmos dados. O hardware é composto pelos sistemas de armazenamento secundários, como os discos magnéticos e pelas unidades de execução, como os processadores e memória principal. Os softwares, conhecidos como Sistemas de Gerenciamento de Banco de Dados (SGBDs), são os responsáveis por atender às solicitações dos usuários, prover segurança e gerenciamento das atividades. E por fim, os usuários 13 que são os principais interessados no banco (AGHAZARM; MIRANDA JUNIOR, 1993). Existem três classes de usuários: os programadores, que são os responsáveis pelo desenvolvimento das aplicações; os administradores de banco, que são responsáveis pelo gerenciamento das informações e das aplicações, procurando atender às necessidades dos usuários e os usuários finais. Os usuários finais são as pessoas que terão acesso às informações do banco através de terminais e estações de trabalho. Estes últimos estão alheios à implementação, limitando-se apenas a consultar ou modificar o banco de dados de acordo com as suas permissões. O crescente interesse das empresas e do mercado mundial nas informações tem determinado o surgimento de muitos estudos nesta área e com isso o desenvolvimento de conceitos, técnicas e dos sistemas de banco de dados. Os bancos de dados e os sistemas de banco de dados se tornaram componentes essenciais no cotidiano da sociedade moderna. Um banco de dados pode ser definido como um conjunto de dados relacionados armazenados juntos, sem redundâncias nocivas ou desnecessárias, que modela um sistema do mundo real e pode servir para diferentes aplicações (CANTU, 2005) Um banco de dados é criado e mantido por sistema gerenciador de banco de dados. Um Sistema Gerenciador de Banco de Dados (SGDB) é uma coleção de programas que permite aos usuários criar e manter um banco de dados. O SGDB é, portanto, um sistema de software de propósito geral que facilita os processos de definição, construção, manipulação e compartilhamento de banco de dados ente vários usuários e aplicações (NAVATHE,2002). A definição de um banco de dados 14 implica especificar os tipos de dados, as estruturas e as restrições para os dados a serem armazenados em um banco de dados. Na abordagem utilizando um banco de dados, um único repositório de dados é definido uma única vez, mantido e então acessado por vários usuários. As principais características de abordagem de um banco de são: • Natureza auto-descritiva do sistema de banco de dados; • Isolamento entre os programas e os dados, e a abstração; • Independência de dados; • Suporte para as múltiplas visões dos dados; e • Compartilhamento de dados e processamento de transações de multiusuários. A independência de dados pode ser definida como a capacidade de mudar o esquema em um nível do sistema de banco de dados sem que ocorram alterações do esquema (descrição do banco de dados) no próximo nível mais alto. Na figura 1 temos a definição de uma arquitetura para os sistemas de banco de dados, chamada arquitetura de três-esquemas (também conhecida como arquitetura ANSI/SPARC, segundo o comitê que a propôs (Tsichritzis e Klug 1978), proposto para auxiliar a realização e visualização das três características importantes de abordagem com uso de banco de dados: 1) Separação de programas e dados (independência de dados e operação de programas); 2) Suporte a múltiplas visões (views) de usuários e 3) Uso de catálogo para armazenar a descrição de banco de dados (esquema). 15 FIGURA 1 - A arquitetura três-esquemas Fonte: Tsichritzis e Klug (1978, p. 32) O objetivo da arquitetura de três-esquemas (Figura 1) é separar o usuário de aplicação do banco de dados físico. Nessa arquitetura, os esquemas podem ser definidos por três níveis: • Esquema interno – Descreve a estrutura física de armazenamento do BD, a organização de arquivos e os métodos de acesso; • Esquema conceitual – Descreve a estrutura do BD completo sob o ponto de vista do usuário. Descrições de entidades, atributos, relacionamentos,operações e restrições; • Esquema externo – também chamado de visões de usuário. Nível Interno: O nível interno tem um esquema interno que descreve a estrutura de armazenamento físico do banco de dados. Esse esquema utiliza um modelo de dado físico e descreve os detalhes completos de armazenamento de dados e caminhos de acesso ao banco de dados. 16 Nível Conceitual: Possui um esquema conceitual que descreve a estrutura de todo o banco de dados para a comunidade de usuários. O esquema conceitual oculta os detalhes das estruturas de armazenamento físico e se concentra na descrição de entidades, tipos de dados, conexões, operações de usuários e restrições. Geralmente, um modelo de dados representacional2 é usado para descrever o esquema conceitual quando o sistema de banco de dados for implementado. Nível Externo: O nível externo ou visão(view) abrange os esquemas externos ou visões de usuários. Cada esquema externo descreve a parte do banco de dados que um determinado grupo de usuários tem interesse e oculta o restante do banco de dados representacional, possivelmente baseado em um projeto de esquema externo em um modelo de dados de alto nível. Um sistema de banco de dados consiste basicamente na manutenção de registros por computador, ou seja, um sistema cujo principal objetivo é manter as informações e torná-las disponíveis quando estas são solicitadas (CANTU, 2005). Inicialmente se faz necessário esclarecer a utilização do banco de dados. Há bastante tempo os bancos de dados deixaram de ser simples repositórios de informações. Hoje, entre os principais produtos disponíveis do mercado, há uma grande quantidade de serviços agregados a estes. Estruturas de dados cada vez maiores e complexas estão sendo geridas e armazenadas pelos bancos de dados para atender necessidades específicas, em especial a grande demanda da internet. Usa-se banco de dados em função dos seguintes benefícios: é condensado, uma vez que suprime grande quantidade de documentos; é veloz, pois pode reconstruir e transformar as informações com maior rapidez do que o trabalho braçal de uma pessoa; associa as informações e impede repetição, uma vez que o sistema 2 Características derivadas da forma como a informação é apresentada. 17 de banco de dados adequa ao usuário o domínio unificado de suas informações operacionais. Torna-se diferenciado do que ocorre em organizações que não têm um sistema automatizado, em que cada aplicação é responsável por seus próprios arquivos de tal forma que as informações operacionais são muito espalhadas; permite compartilhamento, uma vez que as informações podem ser divididas por diferentes usuários em um só banco de dados; valida a entrada de dados com advertência de segurança; e possui modelos bem estabelecidos, o que viabiliza a troca de dados. Em uma organização na qual muitas pessoas usam os mesmos recursos, há a necessidade de um administrador-chefe para gerenciar esses recursos. No ambiente de banco de dados, o principal recurso é o próprio banco de dados e, a seguir, o SGBD e os softwares relacionados. Administrar esses recursos é responsabilidade do administrador de banco de dados – database administrator (DBA). As principais responsabilidades do DBA incluem a decisão do conteúdo do banco de dados e da estrutura de armazenamento, a estratégia de acesso e recuperação, monitoramento do desempenho, além de ter que garantir a segurança e a integridade dos dados (RAMALHO, 2002). Uma característica fundamental dos bancos de dados é que eles provêm um nível de abstração dos dados, escondendo detalhes de armazenamento dos dados que não são necessários para a maioria dos usuários de banco de dados. O modelo de dados é a ferramenta principal utilizada para garantir esta abstração. Um modelo de dados é um conjunto de conceitos que se usa para descrever a estrutura do banco de dados e certas restrições que o banco deve garantir. 18 Existem três conjuntos de modelos de dados, o conceitual (expõe a composição dos dados de forma abstrata sem se incomodar com a prática), o físico (apresenta formas físicas de implantação) e o de implementação (um grupo com peculiaridades dos dois primeiros). Neste trabalho, três modelos de informação são abordados: o modelo entidade relacionamento (conceitual), o modelo orientado a objetos (implementação) e o modelo relacional (implementação) (RAMALHO, 2002). Em qualquer modelo de informações é necessário diferenciar a definição do banco de dados, do banco de dados propriamente dito. A descrição de um banco de dados é denominada de projeto de banco de dados. O modelo de dados é o critério básico empregado para se qualificar os SGBDs. O mais habitual é o relacional, mas alguns SGBDs modernos são fundamentados em modelos guiados por objetos. 1.2 O MODELO RELACIONAL 1.2.1 Conceitos No modelo relacional a representação dos dados é feita através de tabelas, cada uma delas com sua própria denominação. Estas tabelas se relacionam através de um elemento comum, chamada de chave primária, que atenda às restrições impostas pelo próprio modelo, garantindo a integridade dos dados. A tabela é considerada uma relação, as linhas da tabela serão chamadas de tuplas e as colunas de atributos. O número total de atributos da tabela será chamado de grau, enquanto que o número de tuplas será a cardinalidade. O conjunto de valores válidos para um determinado atributo é chamado de domínio (TANENBAUM, 2000). 19 Os blocos básicos do modelo relacional são o domínio, ou tipo de dado. Uma tupla é um conjunto de atributos que são ordenados em pares de domínio e valor. Uma relvar (variável relacional) é um conjunto de pares ordenados de domínio e nome que serve como um cabeçalho para uma relação. Uma relação é um conjunto desordenado de tuplas. Apesar destes conceitos matemáticos, eles correspondem basicamente aos conceitos tradicionais dos bancos de dados. Uma relação é similar ao conceito de tabela e uma tupla é similar ao conceito de linha (Figura 2). FIGURA 2 - Representação de uma Tupla em uma tabela de dados O princípio básico do modelo relacional é o princípio da informação: toda informação é representada por valores em relações. Assim, as relvars não são relacionadas umas às outras no momento do projeto. Entretanto, os projetistas utilizam o mesmo domínio em vários relvars, e se um atributo é dependente de outro, esta dependência é garantida através da integridade referencial (DANTAS, 2002). Os sistemas de gerenciamento de banco de dados evoluíram dos modelos hierárquicos para os modelos de rede e relacionais. O modelo de dados mais aceito é o relacional. O Oracle o estende para um modelo objeto-relacional, o qual possibilita o armazenamento de modelos complexos de negócios em um banco de dados relacional. 20 1.2.2 Restrições do modelo relacional - Regras de Integridade O termo integridade de dados refere-se ao formato como os dados são armazenados, ou seja, duas entradas inconsistentes podem gerar arquivos com falha na integridade. Cabe ao administrador do banco de dados implementar restrições de integridade que devem ser verificadas sempre que houver uma alteração no banco de dados ou tentar impedir a inserção de dados inconsistentes. Como exemplo pode-se citar o caso em que um indivíduo coloca caracteres de texto em um campo numérico (TANENBAUM, 2000). As restrições de integridade consistem em tentar impedir que o usuário entre com dados com formatos diferentes do que o campo exige e garante que as mudanças feitas no banco de dados por alguns usuários não violem as regras, que devem ser informadas ao SGBD. - Visões Consiste em uma forma que o SGBD utiliza para gerar uma tabela virtual com resultados oriundos de outras tabelas fisicamente existentes no banco de dados. Isto significa que se pode restringir o acesso a um determinado usuário para que ele não possa enxergar dados que não façam parte do seu trabalho. As visões são muito úteis como uma forma de segurança, não deixando usuários acessarem informações sem permissão; permite que usuários com diferentes permissões vejam uma mesma informação de forma diferente e, também, são úteis para simplificar consultas em um banco de dados (TANENBAUM, 2000). 21 De acordo com Dantas (2002), o modelo relacional apresenta as seguintes restrições: - Restrições de Domínio. Especifica que o valor de cada atributo A deve ser um valor atômico do domínio dom(A). - Restrições de chave. Por definição, todos os elementos de um conjunto são distintos. Consequentemente, todas as tuplas em uma relação devem também ser distintas. Isto significa que não deve existir duas tuplas com a mesma combinação de valores para todos os atributos. Usualmente, existem outros subconjuntos de atributos com a mesma propriedade acima, que são chamados super-chave, que especifica a restrição de ser único. Toda a relação tem, no mínimo, uma super-chave que é a junção de todos os atributos. Uma super-chave pode ter, entretanto, atributos redundantes (ou seja não necessários para serem únicos). Um conceito mais útil é o de chave, que é uma super-chave com a propriedade de que se eliminarmos qualquer atributo leva a um conjunto de atributos que não mais é uma super-chave. A restrição de ser única é para todo o estado da relação no esquema, ou seja, deve ser atingida mesmo quando novas tuplas são inseridas na relação. Se uma relação tem mais de uma chave, estas são chamadas chaves candidatas. Uma das chaves candidatas é designada chave primária. - Restrição de nulo. Pode ser especificado se valor nulo pode ou não ser permitido. - Restrição de Integridade Referencial. A restrição de integridade referencial envolve duas relações distintas, ou dois atributos distintos de uma relação. Por exemplo, supondo um relacionamento entre duas entidades “Estudantes” e “Cursos”, onde estudantes estão ligados a um curso, podemos supor que haja na relação dos estudantes um atributo contendo o código do seu curso. A 22 restrição de integridade referencial define que este atributo “código do curso” deve corresponder ao valor da chave primária que identifica o curso realizado pelo estudante, ou caso não esteja ligado a um curso, este valor seja nulo. Não é possível este atributo conter algum valor diferente dos que estão na chave primária da relação dos cursos 1.3 PADRÃO SQL Com o aumento na utilização de banco de dados nas mais diversas aplicações, um padrão para manipulação das informações de um banco de dados foi necessário. Desta forma o primeiro padrão de linguagem a surgir foi a SQL (Structured Query Language) em 1986 (CANTU, 2005). Definido pela ANSI (American National Standards Institute) este primeiro padrão ficou conhecido como SQL-86. Após algumas melhorias realizadas, um novo padrão foi adotado sendo chamado então de SQL-89. Já em 1992 o modelo foi definido. Este novo modelo ficou conhecido como SQL-92. Estas mudanças foram finalizadas em 1999 (SQL-99) com alterações significativas e uma delas relacionada com a definição de padrões para banco de dados Objeto-Relacionais. Independente do software ser livre ou proprietário, este mesmo padrão deve ser mantido. Isto quer dizer que um usuário que trabalha, por exemplo, no MySQL não terá grandes dificuldades ao se deparar com um Oracle. O que os difere é a forma de lidar com as informações, a maneira em que as informações serão tratadas, gerenciamento, garantia de integridade diferentes, etc, ou seja, uns mais complexos e outros mais simples (CANTU, 2005). 23 De acordo com Garcia-Molina et al (2001), SQL é o acrônimo3 de Structured Query Language, uma linguagem que apareceu para acessar bancos de dados de forma simples, baseado nos conceitos do modelo Relacional propostos pelo Dr. Codd em 1970. Esta linguagem vem tendo grande aceitação na comunidade, e essa aceitação cresce cada vez mais graças ao bem sucedido esforço de padronização e à evolução dos produtos de banco de dados e ambientes de desenvolvimento na busca de soluções para Sistemas Abertos e arquiteturas Cliente servidor. A adoção do padrão SQL por um banco de dados é um indicativo de que o usuário poderá, com facilidade, implementar soluções personalizadas em diversos bancos de dados. O SQL seria apenas este indicador. 3 Um acrônimo ou sigla é um agrupamento das letras iniciais de várias palavras. Os acrônimos são especialmente úteis nas telecomunicações, uma vez que permitem condensar várias palavras em poucas letras, poupando largura de banda e, em alguns casos dinheiro. 2 FATORES DETERMINANTES NA ESCOLHA DE UM BANCO DE DADOS Segundo Cantu (2005) constituem-se fatores determinantes para a escolha de um adequado banco de dados as seguintes variáveis: − Controle de redundância: o banco de dados deve ser capaz de garantir que os dados não tenham duplicidade. Desta forma, não seria possível incluir dois registros com o mesmo código (integridade de entidade). Também não seria possível excluir um registro que tivesse relacionamento com outras tabelas (integridade referencial). Esta integridade é a base do modelo relacional, portanto é necessário que o banco de dados tenha a capacidade de gerenciar o controle de redundância. − Compartilhamento de dados: a informação deve estar disponível para qualquer número de usuários de maneira rápida, concomitante e segura. É impensável, nos dias atuais, imaginar um banco de dados exclusivo para um usuário. A informação, cada vez mais, deve ser compartilhada por diversas pessoas da empresa. Disponibilizar a 25 informação com rapidez e segurança é requisito fundamental para determinar a escolha do banco de dados. − Controle de acesso: é essencial saber quem fez e o que cada usuário pode fazer dentro do banco de dados. Disponibilizar a informação não é o suficiente. Deve haver controle sobre o que é disponibilizado. Deve-se analisar as possibilidades de controle de acesso às tabelas e colunas do banco de dados e às operações que cada usuário pode realizar (inclusão, alteração, consulta ou exclusão). − Cópias de Segurança (back-up): deve haver rotinas específicas para realizar cópias de segurança dos dados armazenados. − Suporte às Transações: as transações são originadas em qualquer operação que seja feita nos dados armazenados. Realizar o controle sobre essas transações, garantindo a integridade das informações armazenadas mesmo quando há diversos usuários realizando operações ao mesmo tempo, é uma necessidade cada vez mais importante para os bancos de dados. Há diversos níveis para o controle de transações. O mínimo necessário para os dias atuais é o bloqueio por linha, ou seja, cada alteração bloqueará apenas uma linha no banco de dados. Com isso, há uma maior disponibilidade da informação armazenada visto que poucas linhas estarão efetivamente bloqueadas por transações pendentes. − Suporte à programação: mesmo para quem utiliza arquitetura de desenvolvimento em três ou mais camadas, algumas operações continuam sendo mais rápidas se forem realizadas diretamente no banco de dados. Com isso, o banco de dados deve possuir uma linguagem de 26 programação que permita realizar rotinas específicas diretamente sobre ele. Além disso, muitas regras de negócio são implementadas diretamente no banco de dados. Por exemplo, realizar o pedido de compra toda vez que o estoque do produto chegar ao nível mínimo ou bloquear a venda, caso o cliente esteja comprando além do seu limite de crédito. − Recuperação: falhas acontecem. Um bom backup pode resolver boa parte dos problemas. Mecanismos de backup on-line e em diversos servidores e clusters, entre outros, são ferramentas importantes quando um problema acontece. − Desempenho: de nada adianta ter um banco de dados completo se este for lento para as necessidades da empresa. O desempenho do banco de dados muitas vezes pode ser melhorado com técnicas de tunning (ajuste) realizadas diretamente no banco. Convém ter certeza de que o banco de dados permite realizar estes ajustes, se eles podem ser realizados e em qual escala. − Escalabilidade: é necessário saber os limites do banco de dados. Convém, principalmente para os bancos de dados livres, considerar o tamanho máximo do banco de dados e o número máximo de linhas em cada tabela. Conhecer casos de sucesso é fundamental para determinar se o banco de dados está dentro da necessidade da empresa. 2.1 O SISTEMA DE BANCOS DE DADOS VERSUS SOFTWARE LIVRE Segundo Garcia-Molina et al (2001), a partir da ampliação na procura de soluções computacionais cada vez mais constantes e a procura de aplicações com menor 27 gasto de implantação, o software livre vem conseguindo em pouco espaço de tempo novos partidários que se estendem desde novos desenvolvedores até organizações de grande porte que os usam como servidores ou terminais desktop. Sistemas operacionais Open Source (código aberto) se encontram em etapa ascendente e o mais conhecido lançamento tem sido o Linux. Acoplado aos sistemas Open Source, várias aplicações de iguais características aparecem para as mais diferentes demandas e entre estas, aparecem os banco de dados livres, concepções maduras e muito bem desenvolvidas que sustentam a forte propriedade de softwares estáveis e seguros. Os sistemas de banco de dados estão disponíveis em máquinas que abrangem desde os micros portáteis, os desejáveis e cobiçados notebook´s, até os computadores de grande porte, os famosos mainframes. Os recursos proporcionados por um determinado sistema são, até certo ponto, definidos pelo tamanho e pela potência da máquina servidora. Os sistemas em máquinas de médio a grande porte tendem a ser multi-usuário, já nas de pequeno porte a ter usuário único, ou seja, mono-usuário. Um sistema mono-usuário é aquele no qual somente um único indivíduo pode operar num determinado momento; já os sistemas multiusuários são aqueles em que diversas pessoas podem operar simultaneamente. Porém para o nosso contexto esta diferença é praticamente irrelevante, já que um dos principais objetivos da maioria dos sistemas multi-usuários, e aqui se enquadram os principais Banco de Dados, é permitir que cada usuário comporte-se como se estivesse trabalhando com um sistema mono-usuário. Os problemas especiais dos sistemas de usuários múltiplos são essencialmente internos do sistema, não visíveis ao usuário (CANTU, 2005). 28 É evidente que o software livre veio para ficar. Os produtos que existem no mercado estão evidenciando isso. Com a conseqüente maturidade que um projeto deste alcança com o tempo, unido a um grupo de pessoas de fato obcecadas pela qualidade do produto, fica sempre mais evidente que as organizações que vivem de venda de banco de dados têm que passar a se preocupar (LAMAS, 2004). 2.2 TIPOS DE LICENÇA DE SOFTWARE O termo software livre, algumas vezes também chamado de livre distribuição, é usado para designar o software que pode ser livremente copiado e que possui código fonte disponível para quem quiser vê-lo e alterá-lo (LAMAS, 2004). Inicialmente é necessário esclarecer os conceitos. É muito comum a confusão entre os termos software livre e software gratuito. Quando se aborda sobre software livre ou comercial, pode-se dar a entender que livre e comercial são definições opostas, como claro e escuro, mas, como se pode observar isto não é verdade. A palavra software livre, segundo o GNU Project tem ligação com a definição de liberdade e não gratuidade. Segundo o GNU, tem-se a liberdade de executar, copiar, distribuir, estudar, modificar e melhorar qualquer componente de software livre. É, por conseguinte, um pré-requisito o pleno acesso a seu código-fonte (ANDERSON, 2004). Por acepção, é consentido difundir um determinado software livre para qualquer pessoa ou organização sem a necessidade de autorização, seja de forma gratuita ou recebendo algum pagamento em troca. Pode-se então estabelecer uma aplicação específica fundamentada em um software livre e depois comercializar esta aplicação. O software livre é também uma oportunidade de negócio. Um exemplo 29 clássico disto é o Linux, que, quando comercializado, pode chegar a 2.500 dólares a licença (LAMAS, 2004). É importante também dizer que, embora o software livre possa ser distribuído comercialmente por muitos, sempre se poderá encontrá-lo de forma gratuita, pois esta é sua forma original. Acontece que os distribuidores comerciais de software livre agregam valor ao software, seja pelo empacotamento, seja pelas ferramentas e funcionalidades que agregam ao código original, seja pelos serviços que oferecem, como instalação, suporte, treinamento e outros. Dessa forma, ainda que esteja disponível uma versão gratuita, dependendo do tipo de usuário e do uso que se dê ao software, o custo total de propriedade (TCO) será menor se contar com o apoio de uma organização especializada que vai garantir, dentre outros, a qualidade, a robustez e a disponibilidade deste software (ANDERSON, 2004). Como exemplos podem ser citados os softwares de categoria geoespacial. Existe uma grande excitação em torno do software livre e a cada dia surgem novas alternativas para os usuários. Há desde aplicações batch para conversão de formatos, passando por bibliotecas, plataformas de desenvolvimento, sistemas de navegação por GPS, servidores de web, ferramentas de análise, até bancos de dados espaciais (LAMAS, 2004). A mais recente novidade é a fundação da OSGeo (Open Source Geospatial Foundation), iniciativa capitaneada pela Autodesk e em parceria com outros importantes atores do mundo open source, aberta à participação de todos, inclusive de outros fabricantes de software comercial. Esta organização, sem fins lucrativos, tem como missão o suporte ao desenvolvimento de software geoespacial e a promoção de seu amplo uso. A OSGeo conta hoje com diversos projetos, dentre os 30 quais o Autodesk MapGuide OpenSource, o MapServer, GDAL/OGR, GeoTools, GRASS, Mapbender, MapBuilder e OSSIM, todos eles com download gratuito (ANDERSON, 2004). Existem várias tipos de licença de software. Dentre elas podem ser citadas (LAMAS, 2004): − A Licença Pública Geral GNU (GNU General Public License GPL) é a licença que acompanha os pacotes distribuídos pelo Projeto GNU, e mais uma grande variedade de software, incluindo o núcleo do sistema operacional Linux. A formulação da GPL é tal que ao invés de limitar a distribuição do software por ela protegido, ela de fato impede que este software seja integrado em software proprietário. A GPL é baseada na legislação internacional de copyright, o que deve garantir cobertura legal para o software licenciado com a GPL. − A licença Debian é elemento do contrato social realizado entre a Debian e o grupo de usuários de software livre, e é denominada de Debian Free Software Guidelines (DFSG). Em particular, esta licença apresenta além da exigência da publicação do código fonte, critérios para a distribuição. Estes critérios são: (a) a redistribuição deve ser livre; (b) o código fonte deve ser incluído e deve poder ser redistribuído; (c) trabalhos derivados devem poder ser redistribuídos sob a mesma licença do original; (d) pode haver restrições quanto a redistribuição do código fonte, se o original foi modificado; (e) a licença não pode discriminar contra qualquer pessoa ou grupo de pessoas, nem quanto a formas de utilização do software; (f) os direitos outorgados não podem depender da distribuição onde o software se encontra; e (g) a licença não pode contagiar outro software. 31 − A licença do Open Source Initiative é emanada da Licença Debian, com as alusões à Debian removidas. − A licença BSD cobre as distribuições de software da Berkeley Software Distribution, além de outros programas. Esta é uma licença considerada 'permissiva' porque impõe poucas restrições sobre a forma de uso, alterações e redistribuição do software licenciado. O software pode ser vendido e não há obrigações quanto a inclusão do código fonte, podendo o mesmo ser incluído em software proprietário. Esta licença garante o crédito aos autores do software mas não tenta garantir que trabalhos derivados permanecem como software livre. − O Consórcio X distribui o X Window System sob uma licença que o faz software livre, mas não adere ao copyleft. Existem distribuições sob a licença da X.org que são software livre, e outras distribuições não o são. Existem algumas versões não-livres do sistema de janelas X11 para estações de trabalho e certos dispositivos do IBM-PC que são as únicas funcionais disponíveis, sem similares distribuídos como software livre. − Software em Domínio Público Software em domínio público é software sem copyright. Alguns tipos de cópia, ou versões modificadas, livres porque o autor permite que restrições adicionais sejam impostas na redistribuição do original ou de trabalhos derivados. − O Software semi-livre é software que não é livre, mas é concedida a permissão para que indivíduos o usem, copiem, distribuam e modifiquem, incluindo a distribuição de versões modificadas, desde que o façam sem o propósito de auferir lucros. Exemplos de software semi-livre são as 32 primeiras versões do Internet Explorer da Microsoft, algumas versões dos browsers da Netscape, e o StarOffice. − Shareware é uma modalidade de distribuição e comercialização de software, onde o software pode ser livremente copiado, mas ele funciona em um modo de demonstração por determinado período de tempo. O usuário deve então, após esse período de tempo, comprar o software e ao fazer isso adquirir uma chave (normalmente um número serial) que desbloqueia as funções não disponíveis no modo demonstração. − Software proprietário é aquele cuja cópia, redistribuição ou modificação são em alguma medida proibidos pelo seu proprietário. Para usar, copiar ou redistribuir, deve-se solicitar permissão ao proprietário, ou pagar para poder fazê-lo. − Software comercial é o software desenvolvido por uma empresa com o objetivo de lucrar com sua utilização. É necessário observar que comercial e proprietário não são o mesmo. A maioria do software comercial é proprietário, mas existe software livre que é comercial, e existe software não-livre não-comercial. É muito importante deixar claro que projetos Open Source e Software livre não são grátis, ou seja, para tudo há um preço, pois assim como existem engenheiros que cobram ao desenvolver projetos, programadores também precisam sobreviver de alguma forma, afinal todos tem contas a pagar. Software Livre siginifica que se tem toda a liberdade de utilizar aquele produto da maneira que bem entender, podendo até fazer alterações no programa que ache necessário e até mesmo redistribuí-lo novamente cobrando ou não uma taxa para isso (ANDERSON, 2004). 3 BANCOS DE DADOS GRATUITOS Dentro do universo dos sistemas de bancos de dados existem os pagos (Oracle, SQL Server, DB2 e outros) e os gratuitos (MySQL, PostGreSQL, FireBird e outros). O SQL Server, da Microsoft é considerado por muitos um SGDB para empresas de pequeno a médio porte, já o Oracle é o banco de dados mais adquirido, e o DB2 da IBM o mais utilizado por instituições financeiras (CANTU, 2005). A seguir são realizadas algumas abordagens apresentadas por Ramalho (2002), a respeito dos bancos de dados gratuitos. 3.1 MYSQL Seguindo o padrão SQL-99, o MySQL é o software mais popular quando o assunto é banco de dados livres. Este está sendo o banco de dados mais adquirido do mundo, com 30 mil downloads diários e 5 milhões de instalações (entre websites, datawarehouse, aplicações comerciais, etc). O MySQL é um banco de dados voltado 34 para aplicações de missão crítica de alto volume de dados. Sendo utilizado em 40% (segundo estatísticas dos portais Slashdot.com e Linux.com) de todos os sites publicados atualmente, Yahoo!finance, MP3.com, Motorola, NASA, Silicon Graphics e Texas Instruments confiam e utilizam banco de dados MySQL. Sua aquisição pode ser feita através do site oficial para aplicações sob licença GPL (General Public Licence). Está disponível não somente para sistemas operacionais Open Source (Linux, FreeBSD, MAC OS, etc) mas também para softwares proprietários (Microsoft Windows). Para aplicações não GPL uma pequena taxa poderá ser cobrada, porém não há limite de usuários, upgrades e processadores (ANDERSON, 2004). Na época da criação deste sistema, um dos objetivos era que ele rodasse em Linux, embora existam hoje versões para diversos Sistemas Operacionais, o que acabou popularizando o sistema em 1999, quando Linus Torvalds e o Movimento Open Source deslanchou no mercado mundial. O resultado disso foi que hoje, o MySQL, considerado o banco de dados mais rápido do mercado, e tornou-se uma alternativa barata e viável para uma grande parte do mercado corporativo e on-line. Desenvolvido pela empresa MySQL AB, o MySQL ainda possui: suporte, treinamento e consultoria oficial no Brasil, suporte à integridade referencial, transações e views, ferramentas gráficas de administração e extração de dados, atualizações constantes através de equipe própria, suporte a cluster, stored procedure e subselects (MySQL, 2005). O MySQL é considerado o banco de dados mais rápido. Agilidade tem sido um ponto bastante relevante em matéria de sistemas, principalmente para a Internet. E para que os sonhos de muitos programadores se realizem, a equipe de desenvolvimento do MySQL tem se mostrado bastante calcada no que diz respeito à 35 performance. Isso significa que a cada dia que passa o SGBD mais rápido do mercado tende a ficar mais ágil e eficaz, dando conta do recado ao qual foi designado. Outro ponto forte e decisivo em um banco de dados é a sua segurança. Com seus diversos tipos de tabelas, característica exclusiva do MySQL, é possível ter um banco de dados bastante seguro e estável contando com integridade referencial, backup e restore, controle de usuários e acessos, e ainda, se necessário, verificação e correção de corrompimento de tabelas. O MySQL não é usado somente para aplicações internet, podendo ser utilizado como banco de dados desktop, ou seja, em aplicações corporativas; também dá suporte a diversas linguagens de programação incluindo o Delphi da empresa Borland e o Java da Sun. Ambos podem acessar o MySQL através dos drivers MySQL ODBC e MySQL JDBC, respectivamente. Os drivers estão disponíveis para download no site do produto. O MySQL é gratuito. Outras grandes vantagens devem ser citadas como a velocidade de operação que pode ser comparada com os grandes nomes de banco de dados proprietários. Mesmo com um longo caminho para se igualar aos grandes softwares proprietários existentes, o MySQL é conhecido mundialmente, garantindo assim seu inevitável sucesso no futuro (MySQL, 2005). Apresentava como principal desvantagem a falta de suporte a stored procedures e triggers em versões anteriores a 5.0. Pode ser visto como deficiência a falta de integridade referencial em todos os seus tipos de tabelas. 36 3.2 POSTGRESQL O sistema gerenciador de banco de dados PostgreSQL teve seu início na Universidade de Berkeley, na Califórnia, em 1986. À época, um programador chamado Michael Stonebraker liderou um projeto para a criação de um servidor de banco de dados relacionais chamado Postgres, oriundo de um outro projeto da mesma instituição denominado Ingres. Essa tecnologia foi então comprada pela Illustra, empresa posteriormente adquirida pela Informix. Porém, mesmo diante disso, dois estudantes de Berkeley (Jolly Chen e Andrew Yu) compatibilizaram o Postgres à linguagem SQL. Este projeto recebeu o nome de Postgres95. Em 1996, quando o projeto estava estável, o banco de dados recebeu o nome de PostgreSQL. No entanto, enquanto ainda possuía o nome Postgres95, o banco de dados teve várias mudanças. O seu código foi totalmente revisado e a linguagem SQL foi definida como padrão (ANDERSON, 2004). Tecnicamente falando, o PostgreSQL é um banco de dados relacional e orientado a objetos. Um de seus atrativos é possuir recursos comuns a banco de dados de grande porte, o que o deixa apto a trabalhar, inclusive, com operações de missão crítica. Além disso, trata-se de um banco de dados versátil, seguro, gratuito e de código aberto (disponível sob uma licença BSD). Suas principais características são: Compatibilidade multi-plataforma, ou seja, executa em vários sistema operacionais, como Windows, Mac OS X, Linux e outras variantes de Unix; Compatibilidade com várias linguagens, entre elas, Java, PHP, Python, Ruby, e C/C++; Base de dados de tamanho ilimitado; Tabelas com tamanho de até 32 TB; Quantidade de linhas de até 1.6 TB ilimitada; Campos de até 1 GB. 37 O PostgreSQL é o SGBD mais avançado. Também compatível com o padrão SQL-99, existe uma similaridade muito grande entre este e o Oracle, uma vez que ambos são objeto-relacional. Outra comparação a ser feita é a similaridade na linguagem para programação no PostgreSQL e o Oracle (PL/SQL). Sem custo algum, sua aquisição pode ser realizada no site oficial para os sistemas operacionais Linux ou Microsoft Windows (OLIVEIRA, 2005). Uma desvantagem do PostgreSql era não ter uma versão nativa para a plataforma Windows, precisava de uma camada de emulação, lançada apenas a partir da versão 8.0. Outra é não ter suporte a envio de e-mails integrado ao banco. 3.3 FIREBIRD O FireBird é um produto Open Source que oferece uma excelente solução como sistema gerenciador de bancos de dados de alta performance. A origem do FireBird é a versão Open Source do Interbase® 6.0 de julho de 2000, quando a Borland liberou os fontes de seu produto. O FireBird atualmente é totalmente independente do InterBase®. O desenvolvimento é realizado em C e C++ para várias plataformas entre elas Windows, Linux, Hp-UX, FreeBSD e outros. Utiliza-se do padrão ANSI SQL-92 para prover a manipulação dos bancos de dados e algumas funções que complementam tal padrão (ANDERSON, 2004). Além disso, o FireBird oferece excelente controle de concorrência de acesso, alta performance, e uma poderosa linguagem com suporte a stored procedures e triggers de bancos. 38 O Firebird é um banco de dados relacional que oferece muitas características do ANSI SQL-92 que funcione em Linux, em Windows, e em uma variedade de plataformas de Unix. Oferece a simultaneidade excelente, desempenho elevado, e a sustentação poderosa da língua para procedimentos e disparadores armazenados. (ANDERSON, 2004). O Firebird suporta integridade referencial, junções, visões, funções definidas pelo usuário e, principalmente, a programação cliente/servidor através de procedimentos armazenados e gatilhos. Este banco de dados, dispensa maiores estruturas dentro da empresa ( DBA / Preparação ), onde basta instalar o software e usá-lo, sem a interferência freqüente de profissionais, especializados na manutenção do banco de dados de produção. É extremamente bem apropriado, por embutir dentro de aplicações distribuídas. Acompanhando isso tudo, ele ainda dispensa o uso de superservidores, usando pouco espaço em disco para sua instalação e utilizando pouca memória em situações normais de uso. Por isso a plataforma necessária para a sua instalação e utilização pode ser reduzida diminuindo consideravelmente os custos do projeto As empresas detentoras de softwares proprietários avaliam que os bancos de dados livres estão muito aquém dos seus produtos. O fato não parece ser bem este. Dependendo da precisão pode-se usar um banco de dados livre sem ausência de qualidade para a organização. Se a saída for uma aplicação departamental, a alternativa do software livre é ainda mais adequada. Várias organizações estão escolhendo por instalar versões destes bancos de dados em saídas periféricas aos sistemas fundamentais para poder testá-los e, em caso de êxito, migrar totalmente para a nova base. 39 Uma limitação do Firebird é não trazer nenhuma interface de administração, porém essa carência é facilmente contornável: no site oficial, http://www.firebirdsql.org, diversos programas estão disponíveis que possibilitam realizar essas operações. Outra é não ter “point in time recovery”, recuperação do banco em caso de falhas, prometido para a próxima versão. 4 NOVA VISÃO DAS EMPRESAS QUE COMERCIALIZAM BANCO DE DADOS Diante do crescente progresso do desempenho e da credibilidade dos bancos de dados gratuitos, as três maiores empresas do mercado: Oracle, IBM e Microsoft já estão disponibilizando versões de seus aplicativos, ainda que com grandes limitações, também gratuitos (INFO, 2006-2). Dentre as três maiores fabricantes de bancos de dados do mundo, a IBM foi a última anunciar a versão gratuita do seu SGDB. A Microsoft foi a primeira, lançando o SQL Server Express, e a Oracle veio logo em seguida com o Database 10g Express. Todos com restrição ao tamanho máximo da base de dados, número de processadores e ao gerenciamento de memória RAM(Random Access Memory). Com a crescente popularidade do banco de dados multi-plataforma MySQL, os maiores fabricantes de sistemas de bancos de dados se voltaram para as demandas apresentadas pelas pequenas empresas, que atualmente apresentam necessidades mais simples e futuramente podem ser transformadas em clientes das versões pagas do produtos usados. 41 O Oracle 10g Express Edition tem esse público como seu objetivo. O software é adquirido sem ônus, e contém os principais recursos das versões comerciais do banco de dados Oracle, mas, em contrapartida, apresenta limitação de tamanho da base de dados (até 4 GB) e do hardware utilizado. O gerenciador de bancos de dados utiliza somente um processador e no máximo 1 GB de RAM, mesmo que o micro apresente mais memória (INFO, 2006). O DB2 Express-C é um passo significativo no compromisso da IBM em potenciar e suportar o contínuo crescimento da comunidade de programadores e de organizações que utilizam o DB2. Para tal, a IBM surge com uma versão sem custos, tornando assim mais fácil a criação e a disponibilização de aplicações e de soluções que assegurem os diferentes requisitos de gestão de informação. A nova versão disponibiliza as mesmas capacidades do servidor de DB2 clássico num pacote mais reduzido e especificamente desenhado para ser utilizado no desenvolvimento de software, disponibilização, redistribuição e integração nas respectivas aplicações. O DB2 Express-C suporta os sistemas operativos Windows e Linux em arquiteturas de processadores 32-bit e 64-bit. Alguns dos distribuidores de software Linux anunciaram já que passarão a incluir o DB2 Express-C nas suas distribuições futuras. Este software pode ser instalado em todos os sistemas AMD ou Intel x86 até a um máximo de dois processadores core ou em alternativa dois chips dual core. Não existe limite quanto à dimensão da base de dados. A memória suportada não ultrapassa os 4GB. O DB2 Express-C permite grande flexibilidade quanto a ambientes de desenvolvimento. 42 Adicionalmente, as empresas podem facilmente proceder ao upgrade para qualquer uma das edições do DB2 Universal Database que suportam servidores ou clusters de grandes dimensões. Programadores que usem uma ampla variedade de ambientes de desenvolvimento podem utilizar recursos como o developerWorks e alphaWorks para obterem acesso gratuito ao apoio da comunidade IBM de recursos tecnológicos e às tecnologias emergentes a partir dos laboratórios de investigação e desenvolvimento da IBM. As ferramentas e aplicações desenvolvidas com o DB2 Express-C são diretamente aplicáveis à família DB2. 4.1 CARACTERÍSTICAS DO ORACLE EXPRESS A licença do Oracle Express é bastante aberta: é possível, sem pagar nada, distribuir e implantar o programa, além de utilizá-lo para desenvolvimento de software. Nos testes de INFO (2005), realizados com o sistema operacional SUSE Linux 10.0, o Oracle Express Edition operou bem, sendo instalado rapidamente num micro com processador Pentium 4 de 2,4 GHz e 512 MB de memória RAM. A instalação é bastante simples. Toda a administração do banco de dados é realizada pelo browser, o que também promove o acesso remoto para quem quer deixar o servidor separado. A interconexão através da web permite criar usuários, manusear objetos do banco de dados, realizar comandos na linguagem SQL, além de importar e exportar dados. Um componente interessante é o Query Builder, que estabelece consultas arrastando e soltando campos das tabelas (INFO, 2006). Apesar de ser relativamente simples, a interconexão web funciona bem, originando soluções satisfatórias para a concepção e conservação de bancos de 43 dados. Ainda apresenta uma ferramenta para passar um banco de dados do Oracle Express para o Oracle 10g pago. Uma grande prerrogativa do Oracle Express em relação ao MySQL se encontra no suporte ao PL/SQL, a variante turbinada do SQL realizada pela Oracle. Com ela, é possível adicionar mais funcionalidade em stored procedures, ou rotinas arquivadas, o que pode atenuar a necessidade de manutenção futura dos programas que empreguem o banco de dados. Outro benefício do Express é a eficácia do banco de dados, que apresenta a base do respeitado Oracle 10g. Para quem vai desenvolver software, a versão Express apresenta o mesmo suporte a linguagens de programação do Oracle 10g, integrando-se com Java, C++, PHP, com os principais dialetos da tecnologia Net (como C# e VB.NET), entre outros (MUTO, 2006). Com relação ao suporte do Oracle Express, ele é fornecido pelos próprios usuários, que auxiliam uns aos outros em um grupo de discussão intercedido por profissionais da empresa. Ao baixar o Oracle 10g Express Edition, é possível cadastrar-se nesse grupo automaticamente. A Oracle se preocupou muito em estabelecer uma interface gráfica de simples emprego, principalmente para os que estão iniciando a utilização da tecnologia Oracle. Nesta variante, foram agrupados programas peculiares totalmente gráficos, para ajudar na utilização da ferramenta. De acordo com Muto (2006), são características do Oracle Express: − gerenciamento do banco de dados feito totalmente pelo browser; − permite a criação de novos logins de acesso ao banco, assim como permite a definição das permissões de acesso para cada tabela, 44 indicando quais usuários podem acessar, apagar, modificar e criar novos registros no banco de dados; − serve como portal de acesso às outras funções, contando com links para acessar diretamente a comunidade do Oracle Express; − apresenta controle direto (alteração, remoção, criação e outras) sobre tabelas, consultas gravadas, stored procedures, entre outros elementos; − inclui ferramentas para importar dados de planilhas e arquivos XML, assim como migrar os dados para o Oracle 10g; − traz atalhos para executar comandos e o Query Builder, para montar consultas arrastando e soltando campos. 4.2 CARACTERÍSTICAS DA DB2 EXPRESS-C Depois da Microsoft e da Oracle, foi a vez da IBM apresentar uma versão gratuita de seu banco de dados, o DB2 Express-C. Como as demais edições expressas dos concorrentes, a do DB2 tem limitações, suporta até 4 GB de memória RAM, mas possui peculiaridades que admitem sua utilização em aplicações comerciais e sensíveis de um pequeno negócio. Apresenta os benefícios de suportar tanto a plataforma Windows quanto a Linux, não restringir o tamanho do banco de dados e rodar em máquinas com até dois processadores, enquanto as edições gratuitas do SQL Server e do Oracle só admitem um (INFO, 2006-2). Apesar da limitação de hardware, o software está autorizado para qualquer número de conexões simultâneas, ou tamanho do banco de dados, e pode ser 45 empregado comercialmente, ou até mesmo incluído em pacotes de softwares, como distribuições gratuitas ou pagas do sistema operacional Linux, como exemplo. O DB2 Express-C apresenta menos recursos do que a sua variante paga, DB2 Express, compreendendo as ferramentas DB2 Warehouse Manager, Informix e DB2 Connect (MUTO, 2006). Anteriormente, a IBM também divulgou o código do Cloudscape, um pequeno servidor Java que teve seu desenvolvimento transferido à Apache Software Foundation, que o renomeou para Derby (DATE, 2006). Para o final do ano, a companhia deseja também aplicar atualizações tecnológicas ao DB2 Express-C, ao mesmo tempo em que as versões pagas auferirão novos recursos. O banco de dados gratuito está disponível para download. A técnica de instalação do DB2 Express-C é rápida, mas completar o download pela web pode ser difícil. O arquivo tem mais de 450 MB e, mesmo numa boa conexão, irá demorar bastante para baixar. Conhecer os pré-requisitos e as notas nos menus do instalador é necessário para impedir dificuldades durante e depois da instalação. Por exemplo, no Windows XP, só dá para instalar o produto na versão Professional. No momento da instalação, o DB2 Express-C coloca em ação as alternativas Java indispensáveis. Permite testar imediatamente seu funcionamento, criando ou carregando os bancos de dados de exemplo que o acompanham. Uma série de caixas de diálogo e janelas de confirmação recomenda o que fazer a cada passo da instalação em bom português. A atualização para versões mais recentes fica a um clique de distância no próprio instalador. Basta acionar o botão Atualizar Versão para o programa verificar qual é a versão em uso e executar o upgrade. Acessando o item Visualizar 46 Introdução, o usuário encontra tutoriais e informações particularizadas sobre o produto e outros assuntos de interesse, como a migração indolor de versões anteriores. Os outros primeiros passos disponíveis, criar banco de dados e acessar exemplos, abrem o Centro de Controle (INFO, 2006-2). O Centro de Controle é o ponto de partida de todas as operações, controles e administração das bases de dados criadas no DB2 Express-C. Como pode haver mais de uma instância operando na mesma máquina, o Centro de Controle domina todas elas. O utilitário é rico em funcionalidade para criar e modificar tabelas, executar consultas (queries) e análises complexas, monitorar o status dos bancos de dados e importar e exportar dados (INFO, 2006-2). Os usuários contam com uma interface bastante simplificada para utilizar, parecida com a dos sistemas operacionais Windows e Linux. Essa estratégia de padronização segue a da concorrente Oracle, que utiliza os navegadores de internet para manter interface semelhante em todas as plataformas que suporta (DATE, 2006). No Windows, a Central de Controle pode ser aberta via menu Iniciar ou clicando-se com o botão direito do mouse no ícone do DB2 na bandeja do sistema. Uma janela com uma lista similar à do Explorer, contendo banco de dados e seus objetos, é mostrada ao abrir o programa. A quantidade de utilitários disponíveis no DB2 Express-C impressiona. Existem programas para monitoramento de memória e de aplicativos, um Centro de Tarefas em que podem ser programadas tarefas características para a execução em lote e ser feita a configuração do sistema. Para ajudar o administrador ou o programador, funções como criar ou alterar banco de dados, fazer backup e recuperar informações são controladas por assistentes. 47 Conseguir um bom desempenho das aplicações com banco de dados é considerado essencial para a realização satisfatória das consultas. Na tentativa de se aproximar do ótimo, o DB2 Express-C apresenta ferramentas, em sua grande parte gráfica, para garantir que as aplicações não sejam lesadas pela má utilização dos recursos. São diversas as ferramentas disponíveis: db2batch, que constata o desempenho das consultas em tempo real; Visual Explain, que avalia graficamente as consultas; Design Advisor, que recomenda a colocação de indicadores em tabelas para restringir o tempo de acesso fundamentado nas consultas executadas, e, finalmente, o Activity Monitor, que produz relatórios do desempenho dos sistemas para avaliação. O DB2 Express-C inclui os drivers e a interconexão necessários para o incremento de aplicações nas linguagens C/C++, Java e .Net, além de PHP e Perl. Suporta linguagens no servidor para a ampliação de procedimentos armazenados (stored procedures), gatilhos (triggers) e funções. Esses elementos de base de dados podem ser escritos em C/C++, Cobol, Java (JDBC e SQLJ), .Net (qualquer linguagem suportada pelo compilador CLR) e SQL PL (Procedure Language). A SQL PL é considerada nativa e fica conservada no banco de dados como objeto DB2, reconhecida como padrão ANSI SQL. Uma ferramenta gerenciamento, gráfica, desenvolvimento, o Centro teste e de Desenvolvimento, implantação de permite o procedimentos armazenados. A integração e o desenvolvimento de aplicações Java são pontos fortes do produto. Os mais conhecidos drivers acompanham o pacote. O Websphere Studio, da IBM, pode ser usado no desenvolvimento de aplicações com o DB2 Express-C, da mesma forma que o Visual Studio 2003, da Microsoft. Um driver de 48 acesso compatível com o ambiente de desenvolvimento 1.1 está disponível dentro do produto (DATE, 2006). A documentação não é tão completa como deveria, mas o usuário consegue as informações, em inglês, no site da IBM. No conjunto da obra, o DB2 Express-C é um banco de dados que vale a pena experimentar. 4.3 CARACTERÍSTICAS DO SQL SERVER 2005 EXPRESS EDITION Este possui distintivos não presentes no MSDE como um potente e simplificado setup GUI, suporte a CLR, ferramentas gráficas e conexão com o Visual Studio. No entanto, algumas peculiaridades foram retiradas do SQL Server Express como, suporte a DTS4, replication publishing e SQL Agent. A limitação de conexões concorrentes do MSDE foi removida e ao invés disso o SQL Server Express usa as limitações de CPU, RAM e banco de dados para se diferenciar das outras edições. Em princípio é necessário esclarecer que o SQL Server 2005 Express Edition (SQL Server Express) não é o SQL Server 2005, propriamente dito. O SQL Server Express é uma plataforma de banco de dados fundamentada nas tecnologias do SQL Server 2005 e chega para suprir o MSDE 20005. Ele é um produto gratuito e apresenta características de rede e segurança que o distinguem das demais edições do SQL Server 2005. Este exemplar do SQL Server Express tem como grande compromisso uma elevada facilidade de emprego com um processo de instalação simples e robusto e com uma ferramenta gráfica (SQL Express Manager), que permitirá desempenhar a administração do servidor de uma maneira fácil e prática. Esta ferramenta gráfica 4 O Microsoft SQL Server possui entre suas ferramentas o DTS (Data Transformation Services) , que pode ser utilizado para transferir dados de SQL. 5 Versão gratuita e limitada do SQL Server 2000 para rodar com o Traffic Control. 49 ainda está em desenvolvimento e será disponibilizada como um download gratuito no site da Microsoft. O SQL Server Express foi desenvolvido tendo como finalidade dois empregos básicos: a primeira, como um servidor de produtos, especialmente como um Web Server ou Database Server. O segundo, como um cliente stand-alone6, onde a aplicação não necessite depender de uma rede para conseguir ingresso aos dados. O SQL Server Express utiliza o mesmo engine que as demais edições do SQL Server 2005, mas por ser uma edição mais leve, possui algumas barreira. O engine suporta 1CPU, 1GB RAM e banco de dados com até 4GB. Uma alteração significativa em relação ao MSDE 2000 é que o engine do SQL Express não possui a limitação de usuários concorrentes, conhecida como Concurrent Workload Governor onde o desempenho do MSDE 2000 é extremamente prejudicado na medida em que as conexões concorrentes de usuários aumentam. O SQL Server Express até pode ser instalado em máquinas multiprocessadas, mas somente 1 CPU será reconhecida pelo engine. Como resultado, peculiaridades como execução de consultas em paralelo não é suportado pelo SQL Server Express (MUTO, 2006). O limite de 1GB RAM é somente para o buffer pool. O buffer pool é utilizado para o armazenamento de páginas de dados e outras informações. A memória necessária para o gerenciamento de conexões, locks e outros não estão incluídos neste limite de 1GB. Sendo assim, o SQL Express pode ser instalado normalmente em máquinas com mais de 1GB, mas ele nunca usará mais que 1GB para o buffer pool. AWE ou /3GB não é suportado. 6 Sem conexão com o mundo exterior. 50 O limite de 4GB para o banco de dados é aplicado somente para o arquivo de dados. Entretanto, não existe limite para o número de banco de dados que se pode colocar no servidor. O SQL Server Express admite instalação side-by-side com outras variantes do SQL Server, podendo conviver na mesma máquina junto com instalações do SQL Server 2000, SQL Server 2005 ou MSDE 2000. A instalação Side-by-Side trabalha com o sistema de Instâncias Múltiplas, onde se mantém a instalação já existente e se adiciona uma nova instância da última versão existente. Uma instalação Side-bySide permite um processo de migração menos traumático e com a possibilidade de testes, sem alterar no sistema que já está em funcionamento. Admite um número máximo de 50 instâncias na mesma máquina desde que cada instância seja unicamente identificada, ou seja, pode-se desempenhar até 50 instalações do SQL Express desde que cada instância tenha um nome distinto. Por padrão o SQL Server Express é instalado com uma named instance chamada SQLEXPRESS. Distinto do MSDE 2000 que não possui ferramenta gráfica, o SQL Server Express possuirá uma ferramenta gráfica chamada SQL Server Express Manager (XM). Está, ainda, em fase de desenvolvimento, permitindo uma simples administração dos bancos de dados e será difundida separadamente em forma de download (DATE, 2006). O XM suportará conexões para SQL Server Express e outras montagens do SQL Server 2005, SQL Server 2000 e MSDE 2000. Uma janela de conexão conduzirá o usuário por meio da escolha de uma instância e o método de autenticação a ser usado, tolerando conexões locais ou remotas. Diversas funcionalidades de gerenciamento de banco de dados estarão disponíveis por meio do menu de contexto (botão direito) e wizards. Entre elas pode-se citar, criar e 51 modificar banco de dados, tabelas, usuários e logins. O Query Editor do XM aceitará o desenvolvimento e execução de instruções T-SQL e scripts. Algumas das ferramentas inclusas no SQL Server Express são o SQL Computer Manager, SQL Command e o utilitário BCP. O SQL Computer Manager substitui os atuais Service Manager, Client Network Utilities e Server Network Utilities, ele é usado para iniciar ou parar os serviços do SQL Server e para capacitar e descapacitar os protocolos de rede. O SQL Command (sqlcmd.exe) é uma variante OLE DB do osql.exe, ele não somente tenta conservar as funcionalidades do OSQL como também apresenta suporte aos novos tipos de dados do SQL Server 2005. SQL Computer Manager e SQL Command são os mesmos em todas as edições do SQL Server 2005. Apesar de o usuário poder habilitar o suporte a protocolos como TCP/IP e Named Pipes, por regra o SQL Server Express é instalado somente com suporte a shared memory. Isto faz com que por padrão o SQL Server Express opere apenas localmente na máquina onde foi alojado e não suporte vinculações de clientes em uma rede. Para suportar conexões de clientes distantes, é indispensável habilitar o suporte a rede no SQL Server Express. Para habilitar o suporte à rede, tem-se as seguintes alternativas: empregar o SQL Computer Manager para habilitar os protocolos indispensáveis (normalmente TCP/IP) e dar início ao serviço SQL Browser; utilizar a parâmetro DISABLENETWORKPROTOCOLS=0 na linha de comando no ato da instalação. O SQL Browser é um serviço inédito do SQL Server 2005 que agrupa as portas que as named instances estão utilizando. Este serviço vem desativado por padrão e deve ser ativado para que a comunicação entre um cliente distante e um servidor SQL Server Express opere perfeitamente. O SQL Server Express suporta a 52 maior parte das funcionalidades do SQL Server 2005. O SQL Express Edition é o sucessor do MSDE e está fundamentado nas peculiaridades do SQL Server 2005. 4.4 TENDÊNCIAS Dentre as tendências emergentes nesta conjuntura está o armazenamento em memória. Um padrão de armazenamento em memória é o Prevayler. Lançado independentemente por um grupo de brasileiros, essa ferramenta incide em um repositório de objetos com desempenho de acesso bastante superior aos bancos de dados tradicionais, notadamente pela propriedade de conservar os objetos em memória no servidor de aplicações. Essa tecnologia ainda tem limitações, especialmente atreladas à recuperação dos dados em caso de falha e aumento da necessidade de memória. Existem, e são bem acolhidos no mercado atual, os sistemas de banco de dados objeto-relacionais. Estes podem ser observados como uma tentativa de estender aos sistemas de banco de dados relacionais, algumas funcionalidades dos bancos de dados orientados a objetos, que se fazem necessárias para oferecer suporte a uma categoria mais ampla de aplicações e, de certa maneira, prover uma ligação entre esses modelos. Além dos sistemas gerenciadores de banco de dados objeto-relacionais, como Oracle (2006), e PostgreSQL (2006), já bastante disseminados no mercado, outra intenção são as interconexões objeto-relacionais que incidem em uma abstração do modelo relacional para uma categoria que provê interconexão de banco de dados orientado a objetos para uma aplicação e pode ser explicada por ferramentas como o Hibernate. Essa tecnologia permite que as aplicações 53 apresentem os dados de maneira transparente em quaisquer tipos de bancos, inclusive arquivos texto, cuidando de toda a complexidade inerente à tarefa. Para a aplicação é como se existisse um banco de dados orientado a objeto servindo de repositório. As novas arquiteturas orientadas a serviço, como a SOA (Service Oriented Architecture), também estão compelindo os desenvolvedores a produzirem sistemas com um emprego cada vez maior de componentes e, conseqüentemente, com menor vinculação. Por essa razão, as bases de dados relacionais, onde até o momento os dados são persistidos, deixam de atender a esse tipo de solicitação, tornando as bases de dados orientadas a objetos uma alternativa mais atraente para uma escala ainda maior de aplicações (HEUSER, 2005). Com isso, a probabilidade do aparecimento de novas tecnologias ligadas ao modelo da orientação a objeto, que tenham como incumbência auxiliar na constância dos dados de cada um dos objetos tende a crescer nos próximos anos. Os bancos de dados orientados a objetos nasceram como uma alternativa revolucionária para os bancos de dados relacionais. Diversos benefícios são oferecidos por esses sistemas de bancos de dados, como o armazenamento direto de tipos de dados complexos e a representação dos dados e das operações de um objeto. Além disso, um único modelo (orientação a objeto) é empregado em diversas fases do desenvolvimento de um sistema, durante a apreciação, a partir da modelagem dos dados e no transcorrer da codificação (DATE, 2006). Apesar de toda a variedade de ferramentas disponíveis no mercado, o uso da tecnologia de banco de dados orientado a objetos continua bastante pequeno, quando confrontada ao modelo relacional. Alguns dos motivos para a parca adoção dos bancos de dados orientados a objetos estão ligados à cultura empresarial: em 54 função do tempo necessário e custos envolvidos, muitos vacilam na migração para um banco de dados orientado a objetos. A ausência de familiaridade com um SGBDOO, em comparação com um SGBD relacional, o medo de adotar uma nova tecnologia, o tamanho do domínio da aplicação/empresa a modelar, o tamanho reduzido das equipes de desenvolvimento e o pouco conhecimento em orientação a objetos também são fatores que influenciam na adoção do novo paradigma. Além disso, nos primeiros SGBDOOs a confiabilidade, o desempenho e a disponibilidade eram bastante deficientes, principalmente devido à falta de investimento em ferramentas de gerenciamento. Essas ferramentas não suportavam SQL (Structured Query Language), a linguagem de consultas padrão dos sistemas de bancos de dados (SILBERSCHATZ, KORTH, H, SUDARSHAN, 2006). Outro motivo é a incompatibilidade entre as implementações existentes. Segundo Heuser (2005), existem variações significantes nas capacidades de modelagem das ferramentas existentes. Por exemplo, em alguns SGBDOOs, os relacionamentos são suportados por meio de declarações de alto nível, permitindo a definição de propriedades mantidas pelo próprio desenvolvedor. Em outros, o desenvolvedor deve programar a semântica das relações explicitamente. Processos comumente efetuados em um banco de dados relacional, como otimização, migração e restauração de dados, ainda carecem de amadurecimento no paradigma orientado a objetos, haja vista que esses processos delegarem grande parte do trabalho a um nível mais alto, obrigando a aplicação a se responsabilizar por algumas tarefas que deveriam ser controladas pelo SGBD. Ainda, tal qual no modelo relacional, existe a necessidade de constantes ajustes e monitoramentos do banco de dados a fim de melhorar o desempenho 55 (tuning). A diferença está na quantidade de metodologias e ferramentas de ajuste existentes para cada um dos modelos. Apesar das vantagens discriminadas, vê-se que existem grandes obstáculos a serem superados, daí o domínio dos sistemas de bancos de dados relacionais no mercado. Atualmente, BDOO é bastante utilizado em mercados verticais, como telecomunicações, finanças e saúde e mesmo assim, em um número reduzido de aplicações. Contudo, sua utilização como repositório de dados multimídia ou de outros tipos de dados complexos, tem potencial para elevar o nível de utilização dessa tecnologia. 5 COMPARATIVOS E TESTES DE PERFORMANCE (Benchmark) Um benchmark é definido, segundo o dicionário Webster’s II, como sendo “um padrão para medida ou avaliação”. Em ambientes computacionais, um benchmark é tipicamente um software que realiza um conjunto restrito e pré-definido de operações (uma carga de trabalho) e retorna um resultado em algum formato (uma métrica), que descreve o comportamento do sistema. As métricas dos benchmarks computacionais podem medir rapidez (em qual velocidade a carga de trabalho foi completada) ou vazão (quantas cargas de trabalho por unidade de tempo foram medidas). Ao executar o benchmark em múltiplos computadores, é possível realizar comparações (GRAY, 1993, apud MUTO, 2006). O benchmark AS3AP (TURBYFILL et al. 1992, apud HEUSER, 2006) possui como características principais a amplitude na medição do desempenho das principais funcionalidades de um banco de dados, e a variação de tipos de carga de trabalho aplicados. O benchmark é dividido em módulos que podem ser executados separadamente ou em conjunto. Cada módulo é responsável por testar uma certa 57 funcionalidade. Algumas organizações de interesse público, como universidades e laboratórios de pesquisa, criaram implementações de código aberto do benchmark AS3AP, como o Open Source Database Benchmark (OSDB 2001, apud GARCIAMOLINA et al, 2001), da Compaq Computer Corporation®. Nossa proposta é apresentar um estudo comparativo entre os SGBD Firebird, MySQL e PostgreSQL. O estudo consiste em analisar os resultados gerados para orientar na decisão de uma futura adoção destes gerenciadores, demonstrando as melhorias nas funcionalidades dos SGBD relacionadas com segurança e desempenho. Além disso, Firebird, MySQL e PostgreSQL possuem as três maiores comunidades de usuários de bancos de dados de código aberto. Embora poucos trabalhos acadêmicos de criação de benchmarks tenham sido publicados, sendo que o principal motivo é uma restrição imposta pela “cláusula DeWitt” (Moran, 2003), que proíbe a realização de testes em bancos de dados comerciais sem a prévia autorização do fabricante. Em virtude desta cláusula, foram construídos vários benchmarks para comparar o desempenho de SGDB de código aberto, o que leva muitas vezes os resultados a serem contraditórios e tendenciosos. 5.1 COMPARANDO FIREBIRD, MYSQL, POSTGRESQL7 Muitas aplicações necessitam de um banco de dados que possa ser embutido ou que possibilite ser instalado no cliente e seja administrado pelo mesmo. Além disso, a crescente volatilidade nos negócios exige soluções flexíveis onde mudanças não impactem significativamente a infra-estrutura de TI. Há diversas soluções de 7 As considerações apresentadas neste subtítulo foram adaptadas do artigo Comparando Firebird, MySQL,PostgreSQL e SQLite (SANTOS, 2007, In: SQL magazine, ano 4 – 41 ed. DevMedia, 2007). 58 armazenamento de dados disponíveis no mercado e as de código livre vêm ganhado destaque devido ao número cada vez maior de recursos oferecidos. Nesse tópico será apresentada uma comparação entre três bancos de código livre de forma a ajudar na decisão por uma solução adequada às características do projeto. Constituem-se de bancos de dados bastante conhecidos no mercado, e apresentam-se como uma opção muito interessante para tipos específicos de projetos. Para esta comparação, foram utilizadas as últimas versões disponíveis, no momento da escrita, dos bancos Firebird 2.0, MySQL 5.0.26 e PostgreSQL 8.2.0. Para os bancos a serem analisados é necessário que sejam definidos os critérios de comparação objetivando avaliá-los sob a perspectiva apresentada. Nesse sentido, a idéia é eleger as características mais importantes que se deve observar considerando situações que ocorrem no dia-a-dia. Para este trabalho, os critérios de comparação vão ser estabelecidos a partir de características que envolvem: stored procedures, triggers, suporte a XML, cursor, velocidade de recuperação, tipo de dados para moeda, domains, views atualizáveis, transação, tipos de bloqueio, ferramentas, portabilidade. A iniciativa surgiu a partir de um projeto real onde havia a restrição da escolha de ferramentas e tecnologias gratuitas, mas não necessariamente de código livre. O escopo do projeto envolve a construção de módulos diversos que apoiarão as atividades administrativas de uma instituição que coordena projetos, pesquisa e estudos tecnológicos. Trata-se de um tipo sistema de informação muito comum, basicamente o processamento de transações (solicitações, protocolos, envio de avisos etc.) e que será utilizado numa intranet via navegador web por cerca de 50 terminais. É importante ainda citar o volume de dados que deverá ser manipulado 59 pelo SGBD: a expectativa é de que os dados úteis, desconsiderando o histórico em formato de backup, sejam mantidos em algo em torno de 5GB. Nesse contexto, a iniciativa foi originada de uma situação real de projeto, pois foram escolhidos segundo as necessidades. Entretanto, são relativamente gerais, já que essencialmente contemplam funcionalidades próprias dos SGBDs, e podem portanto, ser facilmente adaptados para diversos contextos e projetos. No total, doze critérios foram definidos: suporte a stored procedures, triggers, cursores, XML, domains, transações e views atualizáveis, a velocidade de recuperação do banco em caso de falhas, se possui tipo de dados para moeda, os tipos de lock que podem ser utilizados, ferramentas disponíveis e a portabilidade dos bancos. A seguir os critérios serão fundamentados e os recursos de cada banco expostos. Ao final serão feitas algumas considerações finais e será mostrado como os critérios foram utilizados na situação do projeto citado acima. - Stored procedures Um procedimento armazenado é um procedimento semelhante ao de uma linguagem de programação que é armazenada no banco. Existem diversas razões para utilizá-los, dentre as mais importantes: são componentes de software, não havendo necessidade de recriar toda a lógica para cada aplicação desenvolvida; possui maior performance já que evitam o tráfego na rede e utilizam “cache” assim como “prepared statments”; são portáveis pois rodam em todas as plataformas nas quais o banco pode ser instalado. SGBD Firebird MySQL PostgreSQL Status TABELA 1 - Stored procedures. Comentários Apenas para tabelas InnoDB. 60 - Triggers Um gatilho é uma ação que o banco deve executar automaticamente sempre que certo tipo de operação for executado. Gatilhos são usados extensivamente em bancos de dados, pois evitam que instruções sejam codificadas dentro das aplicações sempre que certos eventos ocorrem em uma tabela para manter a consistência dos dados. Como explicado anteriormente, gatilhos são usados extensivamente em banco de dados e a Tabela 2 mostra exatamente isto: todos os bancos analisados suportam este recurso. SGBD Firebird Status MySQL PostgreSQL Comentários Possui “universal triggers” os quais permitem que um gatilho atue em todos os eventos. Apenas para tabelas InnoDB. Permite também escrever gatilhos na linguagem C. TABELA 2 – Triggers. - Suporte a XML Existe uma necessidade crescente em se trabalhar com dados XML, já que esta é uma linguagem largamente utilizada para troca de dados, definição de metadados etc. Entretanto, as aplicações XML, precisam, muitas vezes, utilizar uma base já instalada a qual é toda baseada na tecnologia relacional. Como permitir, então, o acesso a estes dados? Por se tratar de uma necessidade relativamente recente, o suporte a XML nos bancos de código livre é incipiente. Isto é retratado na Tabela 3 onde apenas o PostgreSQL oferece alguma facilidade. Atualmente, existe uma pesquisa intensa nessa área e alguns bancos comerciais como o SQL Server já oferece diversos recursos como o “Typed XML” que é, resumidamente, uma coluna de uma tabela associada a um XML Schema para receber o XML ou ainda gerar um documento XML a partir de dados relacionais pré-existente. 61 SGBD Firebird MySQL Status PostgreSQL Comentários Não tem A versão beta (5.1) possui duas funções: uma para consulta e outra para atualização de fragmentos XML armazenados em um campo de uma tabela. Possui um módulo XML que permite aplicar consultas em fragmentos XML armazenados em uma coluna utilizando XPath. TABELA 3 - Suporte a XML. - Cursores Em vez de executar uma consulta inteira de uma só vez, é possível configurar um cursor que encapsula consulta e permite, então, ler o resultado em poucas linhas por vez. Uma razão para a utilização dos cursores é evitar memory overrun quando um resultado contém um número grande de linhas. Um uso mais interessante é retornar uma referencia para um cursor que foi criado pela função, permitindo ao chamador ler o resultado. Existem diversos tipos de cursores e uma comparação entre eles foge ao escopo deste artigo. Para a comparação é assumido que o banco permita, pelo menos, o cursor forward, ou seja, aquele que permita a navegação pelo resultado em um sentido só. SGBD Firebird MySQL PostgreSQL Status Comentários TABELA 4 - Cursor - Velocidade de recuperação Como o próprio título indica, a velocidade de recuperação do banco é o tempo gasto entre uma falha do banco e a volta ao estado normal de operação. A importância desta característica normalmente está relacionada com a criticalidade do negócio no qual o banco está sendo utilizado. Por exemplo, suponha que um comércio fique 62 impedido de emitir suas notas ficais por conta de uma falha no banco. Uma funcionalidade fundamental neste contexto é a recuperação no tempo (“point-intime”). Nela o administrador tem a possibilidade de apontar no tempo um instante para restaurar o banco. Na Tabela 5, o recursos avaliado foi a recuperação no tempo e apenas o MySQL e PostgreSQL o suportam. Vale lembrar que o backup clássico, é armazenado em arquivo, é suportado por todos os bancos. SGBD Firebird Status MySQL PostgreSQL Comentários O “point-in-time” está na lista de prioridades para as próximas versões. O logging binário deve estar habilitado (opção – log-bin no console). TABELA 5 - Velocidade de recuperação - Tipo de dados para Moeda Este é um item muitas vezes subestimado, mas pode causar grandes problemas quando passa despercebido. Na falta de um tipo especifico para moeda, muitos desenvolvedores utilizam “float” ou “real” especificando sua precisão (número de casas decimais). Entretanto, dependendo da implementação, a precisão apenas determina o tamanho para armazenamento e isto significa que os números poderão ser arredondados segundo regras aritméticas. Mesmo que o arredondamento seja de somente um centavo, os danos podem ser desastrosos para cem mil vendas, por exemplo. Como dito, definir um tipo de dados para moeda é um recurso importante. Pode-se perceber na Tabela 6 que a maioria dos bancos suporta este tipo de dados. SGBD Firebird MySQL Status PostgreSQL Comentários Tipo MONEY. Deve-se utilizar o tipo de dados DECIMAL ou NUMERIC. O tipo MONEY está obsoleto, deve-se utilizar os mesmo tipos do MySQL. TABELA 6 - Tipo de dados para Moeda. 63 - Domains Um domains é uma definição de uma coluna customizada, isto é, feita de acordo com certas particularidades estabelecidas pelo usuário que é então armazenada pelo banco e posteriormente aplicada na criação de tabelas. Assim, sempre que for criada uma coluna em uma tabela, em vez de ficar lembrando as características do campo, pode-se incluí-las por intermédio do respectivo domain previamente criado. Explicando melhor: em várias tabelas é comum, por exemplo, o campo (coluna) NOME (80 caracteres) ou o campo (coluna) TELEFONE (9999-9999 – 8 caracteres sem a formatação), serem do mesmo tipo e tamanho. Em sistemas grandes, com muitas tabelas, existe o risco de que estes campos recebam formatações diferentes já que os sistemas estão quase sempre evoluindo ao longo do tempo. Assim, a fim de facilitar a uniformização dos dados, é possível definir um “domain” e sempre que um determinado tipo de dados for necessário, por exemplo, TELEFONE, aplicam-se as características deste tipo à nova coluna do mesmo tipo através do “domain” definido. Este recurso é suportado apenas pelo Firebird e PostgreSQL como visto na SGBD Firebird MySQL PostgreSQL Status Comentários Tabela 7 - Domains. - Views atualizáveis Uma view é uma tabela virtual, uma tabela resultante de uma consulta efetuada sobre uma ou mais tabelas. As views suprem varias funções. Podem, por exemplo: substituir consultas longas e complexas por algo mais fácil de ser entendido e manipulado; funcionar como elemento de segurança, a partir do momento em que conseguem limitar o acesso dos usuários a determinados grupos de informações armazenadas em um banco de dados. Se puderem ser atualizadas, as views 64 adicionam flexibilidade e facilitam a tarefa árdua do mapeamento objeto-relacional. Atualmente, nenhum banco suporta esta funcionalidade, mas o PostgreSQL oferece mecanismos que a emula conforme pode ser visto na Tabela 8. SGBD Firebird MySQL Status PostgreSQL Comentários Apenas view´s de tabela única, não será considerado Segundo o manual, esta funcionalidade e suportada, entretanto seu uso é extremamente limitado e, portanto, não será considerada suportada. Devem ser criadas regras (ver documentação CREATE RULE) que permitirão que ações alternativas (no caso, emular uma “view” atualizável) sejam tomadas para inserção, atualização e exclusão. TABELA 8 - Views atualizáveis. - Transação Transação é um conceito fundamental em banco de dados é indispensável para a manutenção da integridade dos dados, já que representa um conjunto de ações que no todo devem ser realizadas com sucesso em uma ou mais tabelas do banco antes que estas ações sejam gravadas de forma permanente. Existe ainda a possibilidade, em alguns casos, da criação de marcos (“savepoints”) os quais funcionam como “sub-transações”. SGBD Firebird MySQL PostgreSQL Status Comentários Incluindo “savepoints”. Incluindo “savepoints”. Incluindo “savepoints”. TABELA 9 - Transação. - Tipos de bloqueio Um bloqueio – traduzido do inglês “lock” – em banco de dados impede que duas transações simultâneas acessem o mesmo recurso ou dado ao mesmo tempo. Dependendo do banco, esta restrição de acesso simultâneo pode ter diferentes “granularidades”, indo desde um bloqueio de uma tabela inteira (“table-level”) até 65 apenas uma linha (“row-level”); o bloqueio pode ainda ser de dois tipos: leitura e escrita. Todos os bancos devem ter algum tipo de mecanismo de bloqueio, afinal os bancos são normalmente utilizados por vários clientes simultaneamente. A Tabela 10 contém comentários sobre os tipos de bloqueio suportados pelos bancos. SGBD Firebird MySQL PostgreSQL Comentários Utiliza o “optimistic locking”. Resumidamente, permite que todos possam ler do banco e escrever sem utilizar explicitamente um bloqueio. Isto permite isolar a leitura da escrita, ou seja, um não afeta o outro. No entanto, certos eventos, como uma escrita, podem gerar uma situação de conflito ou colisão – diferentemente do bloqueio de linha ou tabela – onde ocorrendo, a transação deve ser repetida até obter sucesso. Usa bloqueio de tabela para tabelas MyISAM e MEMORY e bloqueio de linha para tabelas InnoDB. Utiliza o mesmo recurso o Firebird, porém quando o “optimistic locking” não fornece o comportamento desejado pode-se utilizar explicitamente o bloqueio de tabela ou de linha. TABELA 10 - Bloqueio - Ferramentas Bancos de dados possuem uma ampla coleção de ferramentas de suporte que vão desde a modelagem até a administração. Existem muitas empresas e projetos de código livre que se dedicam exclusivamente a este tipo de ferramenta, que muitas vezes são compatíveis com diversos bancos. Estas ferramentas são importantes, pois auxiliam em varias fases do desenvolvimento de sistemas como analise e projeto, construção e implantação. Na Tabela 11 são listadas algumas das ferramentas de código livre para cada banco. A listagem não é exaustiva, mas contém as mais citadas em listas de discussão e as destacadas nos sites dos projetos. Algumas são mantidas pelos próprios desenvolvedores dos bancos enquanto outras são projetos independentes. Apenas ferramentas gráficas standalone são consideradas, bibliotecas para desenvolvimento 66 de aplicações foram desconsideradas. É importante destacar ainda que todos os bancos apresentam administração via console. O Firebird, apesar de possuir vários instrumentos como contribuições independentes ao projeto, não possui nenhum instrumento oficial. MySQL possui o maior grupo de ferramentas, destacando-se as quatro ferramentas (para migração, modelagem, administração e desenvolvimento) conservadas pela própria MySQL AB. O PostgreSQL, apesar da sua popularidade, não possui muitas opções de código livre. SGBD Firebird MySQL PostgreSQL Comentários • ibWebAdmin; ferramenta para administração via Web; editor SQL, visualização de tabelas, gatilhos, domains e outros. • Ibutils: permite modelagem da base de dados, ainda em versão beta. • MITec Performance Monitor: possibilita a monitoração dos recursos utilizados pelo banco. • MySQL Migration Toolkit: permite a migração de diversos bancos para o MySQL. • MySQL WorkBench: ferramenta de modelagem recentemente adquirida pelo MySQL AB, era conhecida como DBDesigner. • MySQL, Administrator: ferramenta para gerenciamento de usuários, monitoramento de recursos, recuperação de falhas, etc. • MySQL Query Browser: para criar e executar consultas em SQL e explorar tabelas e consultas anteriores. • phpMyAdmin: ferramenta com interface Web que permite a execução de consultas, navegação nas tabelas, gerenciar chaves e privilégios e exportação/importação de dados. • pgAdmin: é a plataforma de administração e desenvolvimento para o PostgreSQL, desenvolvido pela comunidade do projeto. Auxiliar na utilização de todas as características do banco; consulta SQL, privilégios, domains, roles entre muitas outras. • phpPgAdmin: contém a maioria das funcionalidades do pgAdmin. Tabela 11 - Ferramentas - Portabilidade Este é um item de extrema importância, pois grande parte das empresas já possui sua infra-estrutura de TI desenvolvida e é preciso, então, que o banco aproveite as 67 condições destas infra-estruturas. Além disso, é oportuno que o banco siga as alterações ou atualizações dos recursos de TI aceitando transições suaves. De maneira geral, como visto na Tabela 12, todos os bancos operam no Windows, Linux e Mac OS e ainda suportam diversas versões do Unix. Para aqueles que possuem instalações do NetWare, existe a opção de utilizar o MySQL. SGBD Comentários Firebird HP-UX, Linux, Mac OS, Solaris e Windows. MySQL Linux, NetWare, UNIX (BSD, Mac OS X, Solaris e outros) e Windows. PostgreSQL Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) e Windows. Tabela 12 – Portabilidade 5.1.1 Análise de Desempenho (Benchmark) Não existe um formato certo na decisão de quais tecnologias devem ser utilizadas, já que muitos fatores particulares de cada projeto estão envolvidos. Assim, pretende-se proporcionar uma visão mais precisa sobre o que há disponível no mundo do código livre de forma a possibilitar uma escolha mais objetiva e explícita. Diante das características do projeto apresentado, era necessário um banco que pudesse trabalhar com moeda e que gerenciasse adequadamente acessos concorrentes (o que está relacionado com os tipos de bloqueio). Assim, segundo estas necessidades, os três servem como opções. Pode-se contestar e dizer que apenas o Firebird e o PostgreSQL são soluções mais adequadas já que utilizam o optimistic locking como tipo de bloqueio. Entretanto, no contexto do projeto, existe a expectativa de um número relativamente baixo de acessos simultâneos de forma que isso não representa uma real vantagem nesse caso. 68 Existe mais um problema a ser resolvido: o banco dever ser mantido pelos próprios técnicos do cliente do projeto os quais não têm muita experiência neste tipo de atividade. É essencial, portanto, se fazer uso de um conjunto de ferramentas para que estes técnicos possam administrar e manter o banco. Além disso, em caso de falhas, o mecanismo point-in-time facilitando o trabalho destes profissionais; restam então, duas opções: o MySQL e o PostgreSQL. A escolha do MySQL deve ser a correta em razão da necessidade, pela equipe de desenvolvimento, da utilização de uma ferramenta de modelagem, e dentre as opções que restam apenas o MySQL tem tal ferramenta. 5.2 COMPARATIVO DE PERFORMANCE ENTRE BANCO DE PROPRIETÁRIOS E GRATUITOS Segundo artigo da MySQL® Technical White Paper, de março de 2005, onde foi divulgado comparativos de performance entre vários SGDB´s, dentre eles o MySql, consta o realizado pela eweek.com. Foram mostrados alguns resultados do benchmark, dentre eles, algumas comparações feitas com relação a performance. Os testes foram realizados numa maquina HP NetServer LT6000 com 4 processadores Xeon de 700MHz, 2GB de RAM e disco Ultra3 SCSI, um modelo de disco rígido de alta performance, de 249.1 GB, para armazenar o banco de dados. Estes resultados (Figura 3) fornecem uma comparação relativa do MySQL, comparando sua execução de encontro a outras bases de dados, e também a escalabilidade do MySQL com CPUs adicionais. 69 FIGURA 3 – Gráfico comparativo de performance entre SGDB´s Pagos e Mysql 5.3 ANÁLISE DE CUSTOS NA AQUISIÇÃO DE LICENÇAS DE BANCOS PROPRIETÁRIOS 1. Licenciamento por Usuário DB2 Item Qtde 1.1 10 1.2 1 1.3 1 Descrição Valor Total (R$) IBM DB2 Universal Database Express Edition User License + Atualização do Software e Suporte IBM DB2 Universal Database Express Edition Server Install License + Atualização do Software e Suporte Media Pack Total do grupo: 4.730,61 1.789,03 71,68 6.591,32 ORACLE Descrição Item Qtde 1.4 1.5 10 1 Oracle Database 10G Standard Edition One Oracle Database Standard Edition One - Suporte 1.6 1 Media Pack Total do grupo: Valor Total (R$) 4.365,86 933,89 277,11 5.576,86 SQLSERVER Item Qtde 1.7 1.8 1 10 Descrição SQL Sever Standard Edition 2005 Win32 English OLP NL SQL CAL 2005 Win32 English OLP NL Device CAL Total do grupo: Valor Total (R$) 2.350,10 4.289,30 6.639,40 70 2. Licenciamento por Processador DB2 Item Qtde 2.1 1 2.2 1 Descrição Valor Total (R$) IBM DB2 Universal Database Express Edition User License + Atualização do Software e Suporte Media Pack Total do grupo: 13.973,93 71,68 14.045,61 ORACLE Descrição Item Qtde 2.3 1 Oracle Database 10G Standard Edition One 2.4 2.5 1 1 Oracle Database Standard Edition One - Suporte Media Pack Total do grupo: Valor Total (R$) 14.647,34 3.130,58 277,11 18.055,03 SQLSERVER Item Qtde 1.7 1 Descrição SQL Sever Standard Edition 2005 Win32 English OLP NL Total do grupo: Valor Total (R$) 15.235,95 15.235,95 A partir dos demonstrativos acima, montados através de propostas de comercialização apresentadas por empresas fornecedoras de software, verifica-se que se a escolha for posicionada em cima do valor dos custos de licença por usuário, o Oracle seria a melhor opção com valor de R$5.576,86 para dez usuários. Optando-se pela licença por processador o DB2 seria a opção mais viável com um valor total de R$14.045,61. 6 CONCLUSÃO Neste trabalho foi realizada uma comparação entre os bancos de código livre Firebird 2.0, MySQL 5.0.26 e PostgreSQL 8.2.0. Uma situação de um projeto real foi apresentada de maneira a dar um contexto prático de como esta avaliação pode auxiliar na escolha de um banco. Ao todo, doze critérios foram definidos os quais permitiram uma visão ampla das principais características. O Firebird possui várias funcionalidades interessantes já que é um banco com uma longa história, e também se destaca pela facilidade de configuração e manutenção, sendo um banco com grande autonomia. O MySQL e o PostgreSQL, são os bancos mais utilizados e como se pode ver, possuem muitas facilidade para o dia-a-dia. Além disso, por serem os mais populares, desfrutam de uma grande gama de ferramentas desenvolvidas por terceiros e suporte especializado. Atualmente, ao que tudo indica ambos estão convergindo em termos de recursos. Enquanto o MySQL busca aumentar o seu conjunto de funcionalidades, o que era uma grande necessidade, o PostgreSQL 72 busca aumentar sua performance: a nova versão 8.2.0 tem como um dos destaques o aumento de 20% em performance segundo seus desenvolvedores. Consideravelmente estáveis e seguros, robustos e eficientes, com alguns anos no mercado além do custo zero na aquisição de suas licenças. Esta é a tônica atual dos SGBD's livres, principalmente dos três aqui apresentados e que nada deixam a desejar para os grandes SGDB´s proprietários, quer na facilidade de utilização e gerenciamento ou termos de performance. Mas certamente a migração de uma base para outra não é tarefa trivial e que exige conhecimento dos cenários de uso, testes e adaptações. Porém, exemplos nacionais de sucesso podem ser vistos, por exemplo, no Metrô de São Paulo e também no Detran do Paraná, grandes consumidores de espaço em disco para armazenamento de informações. Se ainda não satisfeito, companhias como Apple, Fujitsu, Cisco, Dow Jones, Suzuki, Siemens, também utilizam e não pensam em voltar atrás. Então é inegável que o software livre veio para ficar também em banco de dados. Os produtos que existem no mercado estão provando isso. Com a natural maturidade que um projeto deste consegue com o tempo, aliado a um grupo de pessoas verdadeiramente obcecadas pela qualidade do produto, fica cada vez mais claro que as empresas que vivem de venda de banco de dados têm que começar a se preocupar. BIBLIOGRAFIA AGHAZARM, Bruno; MIRANDA JUNIOR, Jedey Alves. Transmissão de dados em sistemas de computação. São Paulo: Érica, 1993. ANDERSON., Christiano. Software Livre não é Grátis! Revista Linux Magazine. Ano I, nº1, ago. 2004, p. 94. CANTU, Carlos H. Firebird essencial. Rio de Janeiro: Ciência Moderna, 2005. DANTAS, Mário. Tecnologias de Redes de Comunicação e Computadores. Rio de Janeiro: Axel Books, 2002. DATE, C.J. Introdução a Sistemas de Bancos de Dados. 8 ed. São Paulo: Campus, 2006. GARCIA-MOLINA, Hector, ULLMAN, Jeffrey D. e WIDOM, Jennifer. Implementação de sistemas de bancos de dados. Rio de Janeiro: Campus, 2001. HEUSER, C. A. Projeto de Banco de Dados. 5 ed. São Paulo: Sagra/Luzzatto, 2005. INFO EXAME. São Paulo: Editora Abril, n. 228, mar. 2005. INFO EXAME. Artigo - Oracle na Faixa. São Paulo: Editora Abril, n. 239, fev. 2006. INFO EXAME. Artigo - DB2 de Graça. São Paulo: Editora Abril, n. 241, abr. 2006-2. LAMAS, Murilo. Software livre ao seu alcance. São Paulo: Letras e Letras, 2004. MUTO, Cláudio Adonai. PHP & MySQL - Guia Introdutório. 3 ed. São Paulo: Brasport, 2006 MySQL. Anúncio publicitário. Revista Linux Magazine. Ano II, nº6, jan. 2005, p. 2. 74 Moran, Brian. The Devil’s in the DeWitt clause. Artigo Web 2003 http://www.sqlmag.com/articles/index.cfm?articleid=38587& acessado em 10/05/2007 OLIVEIRA., Celso Henrique Pedroso de. SQL Magazine. Bancos de Dados Livre x Pago. Disponível em <http://www.sqlmagazine.com.br/Artigos/Outros/01_Banco _FreeXPago.asp>. Acesso em 05out. 2006. RAMALHO, José Antonio. Oracle. Aprenda a criar bancos de dados, tabelas, índices, visões e outros objetos. São Paulo: Breckley Brasil, 2002. SANTOS, Paulo Sérgio M. Dos. Comparando Firebird, MySQL, PostgrSQL e SQLite. In: SQL magazine, ano 4 – 41 ed. DevMedia, 2007). SILBERSCHATZ, A., KORTH, H., SUDARSHAN, S. Sistema de Bancos de Dados. 4 ed. São Paulo: Makron Books, 2006. TANENBAUM, Andrew S.. Redes de Computadores. Rio de Janeiro: Campus, 2000.