Essa pergunta é feita por muita gente que trabalha com desenvolvimento e conhece alguma coisa de algum dos dois. No senso comum, se ouve muito o seguinte: “MySQL é pra coisas menores, mais simples. PostgreSQL é pra projetos de grande porte”. Mas será que isso é verdade? E porque escolher um ou outro?
O que eles têm em comum
- São Software Livre;
- São gratuitos (nem todo Software Livre é gratuito);
- São encontrados facilmente em vários provedores por aí;
- Possuem também suporte pago (do MySQL é oferecido pela Oracle. O do PostgreSQL é oferecido por empresas como EnterpriseDB);
- São bem populares, e por isso se encontra bastante documentação (mas se encontra mais material do MySQL).
O lado político da coisa
Do ponto de vista “político”, tem uma diferença importante entre eles: o MySQL é da Oracle, uma grande empresa multinacional. O PostgreSQL não. Ele é mantido diretamente pela comunidade.
Isso quer dizer que a Oracle é “dona” do MySQL e pode fechar o código a qualquer momento? Não, não é bem assim. Ela é dona da marca MySQL, e pode descontinuar o produto a seu bel prazer ou deixar de liberar a versão grátis. Mas todo o código já produzido é livre, e se alguém ou alguma empresa quizer dar continuidade ao projeto com outro nome (fazer um fork), pode fazer. Inclusive isso já aconteceu: foi lançado o MariaDB.
O MariaDB é baseado no MySQL e foca na compatibilidade com ele, então a ideia é que ele não vá se tornando cada vez mais incompatível conforme as versões vão sendo lançadas, e sim que ele permaneça lado a lado com o MySQL, mas sem ser da Oracle. O criador do MariaDB é um dos criadores do MySQL: o finlandês Michael “Monty” Widenius.
O problema é que a instabilidade das decisões de uma empresa como a Oracle pode afetar a confiança no produto. Foi o que aconteceu com o OpenOffice (também da Oracle). A comunidade estava instisfeita com o rumo que o projeto vinha tomando, e decidiu fundar o LibreOffice. O próprio BrOffice agora é LibreOffice. Isso – ao meu ver – é uma coisa boa, pois agora o poder não está mais nas mãos da Oracle, e sim da comunidade.
O lado técnico
Muito do que se ouve falar sobre ambos é antigo, e vem de estereótipos antigas, do MySQL 4.1 (a atual é 5.5) e do PostgreSQL 7.4 (a atual é 9.0). O MySQL possui agora vários recursos que antes não tinha, e o PostgreSQL está muito mais rápido. É comparado por muitos com o Oracle.
Mais de 75 recursos foram adicionados ao PostgreSQL de lá pra cá, resultado de um trabalho de vários anos para remover pontos chave que causavam problemas de escalabilidade. É possível também compactar e descompactar dados “on-the-fly”. A vantagem disso é que reduz a necessidade de acesso a disco, aumentando a performance.
O PostgreSQL possui apenas um sistema de armazenamento, e o MySQL possui vários. Você pode escolher de acordo com o tipo do projeto. Os mais utilizados no MySQL são InnoDB e MyISAM. O MyISAM é mais rápido que o sistema do PostgreSQL, mas tem um custo. Alguns recursos, como chaves estrangeiras e transações não estão disponíves. O InnoDB possui recursos para garantir mais integridade nos dados, mas é mais lento que o MyISAM. O PostgreSQL pode ser mais lento ou mais rápido que o MySQL utilizando o InnoDB, dependendo das configurações e recursos utilizados.
Trocando em miúdos
O MySQL pode ser sim uma boa opção em sistemas mais simples e bases menores, como um site ou um sistema que não tenha milhares de usuários concorrentes. Para sistemas mais complexos, que necessitam de maior integridade nos dados, que possuem milhões de linhas e vários TeraBytes de informação, o PostgreSQL pode ser a melhor opção. Mas lembre-se que em ambos existem várias configurações que podem ser feitas para melhorar vários aspectos. Se você lê em inglês, pode encontrar bastante informação aqui: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL e aqui http://wiki.postgresql.org/wiki/Why_PostgreSQL_Instead_of_MySQL_2009.
novembro 15th, 2011 on 14:00
Acho essa estória do que é melhor, se o código está sob controle de uma empresa ou de uma comunidade de desenvolvedores, como algo relativo.
Se algum código está no controle ou no poder de uma comunidade, não necessariamente será melhor ou atenderá melhor as necessidades dos usuários.
Uma empresa que também tem profissionais excelentes pode dar caminho para um código muito melhor que uma comunidade, haja vista que uma empresa, com fim comercial, aprendeu a viver do perscrutar novidades ou soluções técnicas que comparativamente precisam ser melhores que os seus concorrentes.
Concorrência comercial é muito saudável, e ela ajuda a ser mais eficiente no momento de definir caminhos de evolução de uma ferramenta ou código, como qualquer produto comercial.
Então discordo dessa visão “romântica” de que é 100% garantido de que algo desenvolvido por uma comunidade é o melhor ou o ideal.
agosto 5th, 2012 on 21:55
apenas um complemento, as licenças são diferentes, a do mysql é Softlivre GPL, a do postgresql e OpenSource BSD, tem diferença para o uso.
agosto 29th, 2012 on 12:08
J.Alves, não tem diferença para o uso. Tem diferença caso você deseje criar um novo produto baseado em algum deles…
agosto 8th, 2012 on 13:40
Olá !
O que acho é que a Oracle tem sim mais condições de lançar novas ferramentas, ou seja, tem mais poder de evoluir o banco MySQL. Por outro lado, ela já possui um banco de dados de grande sucesso no mercado, denominado Oracle. Por isto, não vejo por que ela vai evoluir um concorrente dentro da própria casa. É muito possível que ela deixe o MySQL como está hoje, ou até mesmo o coloque na geladeira. E todas as suas forças de desenvolvimento estejam voltadas para seu super banco chamado Oracle.
É bem possível que esta seja uma jogada da Oracle para tirar do mercado o MySQL, que provávelmente, já estaria incomodando o terreno do Oracle.
Que a Empresa tem mais poder de desenvolvimento do que a comunidade no geral, isto sem a menor dúvida. Agora, também, tem o poder para estagnar ou passar a cobrar licença sobre o MySQL.
É esperar para ver…
agosto 29th, 2012 on 12:07
Jair, seu comentário faz sentido. Mas acho muito difícil alguém que usa MySQL começar a usar Oracle, visto que tem uma outra solução livre de nível superior ao MySQL: o PostgreSQL. Pra fazer isso, teria que ter um motivo muito bom…
outubro 16th, 2012 on 20:44
Jair, se a Oracle congelar o mysql como você está falando, ela vai dar um tiro no pé, pois acredito que 90% irá migrar para outros BD free, e acredito que a maioria irá para o PG.
maio 21st, 2013 on 14:54
Sei que o debate é antigo, mas é um daqueles que considero “imortal até que morra”.
Não acho nada impossível a Oracle descontinuar o MySQL e muito menos que isso seria um “tiro no pé”.
Pense bem: se a Oracle “acabasse” com o MySQL, seria um concorrente a menos para o Oracle (e um concorrente muito forte).
Além disso, alguém já parou pra pensar o quanto a Oracle deve investir (gastar dinheiro) todo ano no desenvolvimento e manutenção do MySQL? E alguém já parou pra pensar que isso não trás nenhum lucro?
Quanto a dizer que uma empresa tem melhores condições de manter um produto do que uma comunidade, isso é muito relativo, pois eu acho que a única vantagem que uma empresa leva é que a equipe de desenvolvimento é remunerada.
O LibreOffice é a prova de que uma comunidade pode fazer muito melhor do que uma empresa, dependendo da situação. Hoje a suite de escritório é absurdamente melhor do que jamais foi enquanto estava nas mão da Oracle.
Aliás, devemos pensar que provavelmente não foi por acaso que um dos criadores do MySQL tomou a iniciativa de criar um novo projeto que é nada mais que um clone do MySQL e opensource. Na última atualização do MySQL a Oracle fechou o código dele, que sempre foi aberto antes disso!