Diferencial PostgreeSQL x MySQL
Autor: Lucas Martinho | Publicado: 2012-01-31T22:54:00-02:00

Introdução

 


 
      É muito fácil encontrar serviços de hospedagem de 
        sites que oferecem em seus planos os Sistemas Gerenciadores de Banco de 
        Dados (SGDB) MySQL e PostgreSQL, embora isso seja mais comum 
        com o primeiro. Como esses SGBD não são usados apenas na 
        internet, talvez seja de seu interesse utilizá-los em seus projetos 
        de software, uma vez que cada um é dotado de vantagens interessantes, 
        como a gratuidade de uso. Para ajudá-lo a escolher o melhor para 
        sua aplicação, este artigo apresenta as principais características 
        de ambos, começando com o MySQL. Para tanto, é recomendável 
        que você tenha algum conhecimento sobre os conceitos de bancos de 
        dados.

      Alguns termos

      Mesmo aquelas pessoas que já trabalham com banco de dados podem 
        ficar "perdidas" no meio de tantos nomes de recursos. Assim, 
        para facilitar a compreensão, segue uma lista com uma breve explicação 
        sobre os recursos mais importantes:

      - Referential integrity: também conhecido como "integridade 
        referencial", esse recurso consiste em restrições ou 
        regras existentes para uma correta inserção de dados, por 
        exemplo, para impedir que uma tabela seja preenchida sem que isso ocorra 
        em outra;
        - Schemas: recurso que permite cruzar informações 
        em um mesmo banco de dados, mas em estruturas diferentes;
        - SQL: sigla para Structured Query Language, é uma linguagem 
        utilizada em bancos de dados relacionais;
        - SSL: sigla para Secure Sockets Layer, consiste em um protocolo 
        para a troca segura de informações;
        - Stored procedures: esse recurso consiste em comandos SQL "guardados" 
        no servidor para, por exemplo, executar tarefas repetitivas, evitando 
        que um cliente tenha que executá-las constantemente;
        - Transactions: também conhecidas como transações, 
        as transactions são instruções executadas em um bloco 
        designado por parâmetros que indicam seu início e seu fim;
        - Triggers: também chamados de gatilhos, os triggers são 
        recursos que permitem o acionamento de uma seqüência de comandos 
        logo em seguida ou logo após um evento;
        - Views: os views consistem em um tipo de tabela virtual formada por 
        campos extraídos de uma tabela "verdadeira", facilitando 
        o controle sob os dados acessados.

      O banco de dados MySQL

      O 
        MySQL é um dos sistemas de gerenciamento de banco de dados mais 
        populares que existe e, por ser otimizado para aplicações 
        Web, é amplamente utilizado na internet (inclusive aqui no InfoWester). 
        É muito comum encontrar serviços de hospedagem de sites 
        que oferecem o MySQL e a linguagem PHP, justamente porque ambos trabalham 
        muito bem em conjunto.

      Outro fator que ajuda na popularidade do MySQL é sua disponibilidade 
        para praticamente qualquer sistema operacional, como Linux, FreeBSD (e 
        outros sistemas baseados em Unix), Windows e Mac OS X. Além disso, 
        o MySQL é um software livre (sob licença GPL), 
        o que significa que qualquer um pode estudá-lo ou alterá-lo 
        conforme a necessidade.

      Entre as características técnicas do SGBD MySQL, estão:

      - Alta compatibilidade com linguagens como PHP, Java, Python, C#, Ruby 
        e C/C++;
        - Baixa exigência de processamento (em comparação 
        como outros SGBD);
        - Vários sistemas de armazenamento de dados (batabase engine), 
        como MyISAM, MySQL Cluster, CSV, Merge, InnoDB, entre outros;
        - Recursos como transactions (transações), conectividade 
        segura, indexação de campos de texto, replicação, 
        etc;
        - Instruções em SQL, como indica 
        o nome.

      Até o momento em que este artigo era escrito, o MySQL estava na 
        versão 5.0 (mais precisamente, 5.0.26). Em relação 
        à versão 4.0, houve acréscimo de vários 
        recursos e melhorias importantes, como:

      - Triggers;
        - Stored procedures;
        - Sub-selects;
        - Suporte total ao Unicode;
        - INFORMATION_SCHEMA (para armazenamento do dicionário de dados);
        - Server side cursors;
        - Suporte a SSL;
        - Melhoria no tratamento de erros.

      O MySQL surgiu na Suécia pelas mãos de três colegas: 
        Allan Larsson, David Axmark e Michael Monty Widenius. Trabalhando com 
        base de dados, eles sentiram a necessidade de fazer determinadas conexões 
        entre tabelas e usaram o mSQL para isso. Porém, não demorou 
        para perceberem que essa ferramenta não lhes atendia conforme o 
        necessário e passaram a trabalhar em uma solução 
        própria. Surgia então o MySQL, cuja primeira versão 
        foi lançada no ano de 1996.

      Um fato importante a ser destacado sobre o MySQL é que esse SGBD 
        também possui uma licença comercial, isto é, paga. 
        Neste caso, é possível obter suporte diferenciado dos desenvolvedores. 
      

      Vale ressaltar também que, em fevereiro de 2008, o MySQL foi comprado 
        pela Sun Microsystems, 
        que pagou a quantia de 1 bilhão de dólares pela aquisição. 
        Mais informações sobre essa transação neste 
        link (em inglês).

      O banco de dados 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.

    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).
  
      Entre suas características, tem-se:

      - 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;
        - Suporte a recursos como triggers, views, stored procedures, SSL, MVCC, 
        schemas, transactions, savepoints, referential integrity e expressões 
        regulares;
        - Instruções em SQL, como indica o nome.

      No momento em que este artigo era escrito, o PostgreSQL estava na versão 
        8.1.

      MySQL x PostgreSQL

      MySQL ou PostgreSQL, qual usar? Ambos são muito bons e não 
        fazem feio diante das alternativas pagas. Além disso, possuem recursos 
        e vantagens em comum, o que significa que, para a maioria das aplicações, 
        ambos podem ser usados. Na verdade, o correto não é tentar 
        descobrir qual é o melhor, mas em que situação um 
        ou outro deve ser utilizado.

      O PostgreSQL é otimizado para aplicações complexas, 
        isto é, que envolvem grandes volumes de dados ou que tratam de 
        informações críticas. Assim, para um sistema de comércio 
        eletrônico de porte médio/alto, por exemplo, o PostGreSQL 
        é mais interessante, já que esse SGBD é capaz de 
        lidar de maneira satisfatória com o volume de dados gerado pelas 
        operações de consulta e venda.

      O MySQL, por sua vez, é focado na agilidade. Assim, se sua aplicação 
        necessita de retornos rápidos e não envolve operações 
        complexas, o MySQL é a opção mais adequada, pois 
        é otimizado para proporcionar processamento rápido dos dados 
        e tempo curto de resposta sem exigir muito do hardware. Se você 
        precisa, por exemplo, de um banco de dados para armazenar o conteúdo 
        do seu site, de seu fórum ou necessita manter um cadastro de usuários 
        de um portal, o MySQL "serve como uma luva", pois tais aplicações 
        não necessitam dos recursos avançados que o PostgreSQL oferece.

      Para escolher um destes dois SGBD, procure entender bem quais recursos 
        sua aplicação precisa. Tente estimar o volume de dados, 
        avalie o hardware disponível, certifique-se das funcionalidades 
        necessárias e, posteriormente, procure por informações 
        mais detalhadas do MySQL e do PostGreSQL. Se sua aplicação 
        for simples - principalmente se for algo ligado à internet -, não 
        é preciso pensar muito: o MySQL é uma escolha satisfatória, 
        pois é facilmente encontrado em serviços de hospedagem.Todavia, há situações em que tanto o MySQL quanto 
        o PostgreSQL serão boas escolhas. Nesses casos, é recomendável 
        fazer testes com ambos e avaliar qual oferece mais vantagens à 
        aplicação.


      Finalizando

      Um banco de dados pode ser a diferença entre ter e não 
        ter um negócio, seja ele de qualquer porte. Por isso, a escolha 
        deve ser bem feita e aspectos como desempenho, recursos, documentação 
        e suporte devem ser considerados. Em todos esses pontos o MySQL e o PostgreSQL 
        são excelentes, por isso, a escolha entre um deles só depende 
        de sua aplicação.

Conteúdo oficialmente portado por: Info WESTER