André Alves de Lima

Talking about Software Development and more…

Periscope replay: SQL Server, MySQL ou PostgreSQL?

Uma dúvida frequente que aparece quando estamos desenvolvendo aplicativos é: qual banco de dados utilizar? Aproveitando essa dúvida, resolvi fazer uma transmissão no Periscope abordando: SQL Server, MySQL ou PostgreSQL? Qual utilizar? Veja o replay:

Edit: eu acabei falando algumas besteiras sobre o PostgreSQL nesse vídeo e fui corrigido nos comentários do Youtube por pessoas bastante experientes com esse banco de dados. Veja as correções aqui.

Quais são as similaridades?

Antes de falar das diferenças entre o SQL Server, MySQL e PostgreSQL, vale a pena abordar as similaridades entre esses bancos de dados. Primeiramente, todos eles são bancos de dados relacionais que utilizam a linguagem SQL para manipulação de dados. Além disso, todos os três suportam as principais funcionalidades de bancos de dados relacionais: chaves estrangeiras, triggers, procedures, índices secundários, transações e acessos concorrentes. Por fim, as principais ferramentas de ORM (Entity Framework e NHibernate, por exemplo) têm suporte completo ao SQL Server, MySQL e PostgreSQL.

Suporte a XML

O SQL Server e o MySQL têm suporte a campos do tipo XML. Eles também suportam fazer consultas complexas utilizando a estrutura hierárquica do XML. Já o PostgreSQL não tem suporte a colunas do tipo XML.

Tipo de licenciamento

Como já é bem sabido, o SQL Server é uma ferramenta com licença comercial e código fechado, proprietário da Microsoft. Já o MySQL e o PostgreSQL são open source. Porém, existe uma diferença muito importante entre os tipos de open source do MySQL e do PostgreSQL. Enquanto o PostgreSQL utiliza a licença BSD (que praticamente permite você fazer o que quiser com essa ferramenta, sem restrições comerciais), a licença do MySQL é a GPL. Segundo essa licença, você pode utilizar gratuitamente o MySQL caso você vá desenvolver aplicativos gratuitos ou websites. A partir do momento que você desenvolve uma aplicação comercial, você só pode utilizar o MySQL gratuitamente se você disponibilizar também o código da sua aplicação utilizando a licença GPL (open source). Caso contrário, você precisará de uma licença comercial.

Versões gratuitas

O PostgreSQL só possui versões gratuitas, não existe uma versão comercial. Já o SQL Server possui as edições Express, com algumas limitações (sendo as principais delas: máximo de 10Gb para cada database, processo só roda utilizando um core e máximo de 1Gb de RAM para cada instância). O MySQL, como mencionado anteriormente, pode ser utilizado gratuitamente desde que o seu aplicativo não seja comercial (ou desde que você também disponibilize o código da sua aplicação comercial utilizando a licença GPL).

Custos das versões comerciais

No momento da gravação dessa transmissão e escrita desse post, uma licença comercial do SQL Server variava entre 3 mil e 14 mil dólares. Uma licença comercial do MySQL custava entre 2 mil e 60 mil dólares. O PostgreSQL não possui um modelo de licenciamento comercial.

Maturidade

Se levarmos em consideração o ano de lançamento, a primeira versão do SQL Server e do PostgreSQL foram lançadas no mesmo ano: 1989. Já a primeira versão do MySQL foi lançada em 1995. Porém, apesar de ser bem mais novo, o MySQL não fica atualmente nem um pouco para trás do SQL Server e PostgreSQL em questões de funcionalidades.

Sistemas operacionais suportados

Como era de se esperar, o SQL Server funciona em sistemas operacionais Windows (e somente Windows). Já o MySQL tem suporte ao Windows, Linux, OS X, FreeBSD e Solaris. O PostgreSQL tem suporte a todos esses sistemas operacionais citados anteriormente e também o Unix e mais alguns outros sistemas menos utilizados.

Ferramentas de administração

Pode ser que eu seja suspeito para falar, mas, eu nunca vi uma ferramenta de administração de banco de dados melhor do que o SQL Server Management Studio. O MySQL possui o MySQL Workbench, que evoluiu muito nos últimos anos, mas, acho que ainda fica para trás do Management Studio. Já o PostgreSQL é aquele mundo sem dono. Existem ferramentas gratuitas para administração do PostgreSQL, sendo a mais utilizada o pgAdmin. Porém, eu achei a sua utilização muito complicada.

Ranking db-engines.com

O site db-engines.com faz um ranking de bancos de dados. De acordo com esse ranking, atualmente o MySQL está em segundo lugar (perdendo apenas para o Oracle), o SQL Server está em terceiro lugar e o PostgreSQL em quinto lugar.

Qual utilizar?

OK, agora já vimos as principais diferenças entre essas ferramentas, mas, fica a pergunta: SQL Server, MySQL ou PostgreSQL? Qual utilizar?

Na minha opinião, se você estiver desenvolvendo um aplicativo utilizando o .NET Framework e se o seu aplicativo for rodar somente na plataforma Microsoft, vale a pena utilizar o SQL Server. Por razões obvias, a integração entre o .NET Framework e o SQL Server é excepcional. Tudo funciona perfeitamente sem ter que instalar nada extra.

Porém, se você precisa utilizar alguma outra plataforma no seu servidor (Linux, por exemplo), eu ficaria com o MySQL, caso a sua aplicação seja gratuita ou se você estiver considerando pagar uma licença comercial.

Finalmente, se você estiver desenvolvendo uma aplicação comercial de código fechado, o seu servidor não for Windows e você tiver restrições orçamentárias, o PostgreSQL também é uma ótima terceira opção. Além disso, se você realmente não puder utilizar a plataforma Microsoft no servidor e tiver que trabalhar com dados geográficos, o PostgreSQL ganha do MySQL, uma vez que ele tem um ótimo suporte a dados geográficos.

Me siga no Periscope!

Eu ficaria muito, mas muito, feliz se você me adicionasse no Periscope e tentasse acompanhar as minhas transmissões ao vivo. Seria muito legal se pudéssemos trocar uma ideia sobre os assuntos que eu apresento nessa plataforma que eu estou experimentando. Amanhã acontece a minha próxima transmissão, onde eu vou contar um pouco como eu consegui receber o prêmio Microsoft MVP pela primeira vez, lá em 2011. Me siga lá e acompanhe ao vivo: @andrealveslima.

7 thoughts on “Periscope replay: SQL Server, MySQL ou PostgreSQL?

  • Marcelo Ramos disse:

    Boa tarde!
    Excelente post! Eu trabalho com o MySQL no VS.Net e o SGBD instalado num servidor Linux Ubuntu Server e como ferramenta faço uso do Toad for MySQL.
    abraço
    Marcelo Ramos

    • andrealveslima disse:

      Olá Marcelo, obrigado pelo comentário!

      Eu nao conhecia o Toad for MySQL.. Da próxima vez que eu for utilizar o MySQL, vou dar uma olhada nesse ferramenta.. Valeu! :)

      Abraco!
      André Lima

  • Aninha disse:

    Olá André!
    Eu queria saber se você já usou bancos como SQL Server Compact Edition ou SQLite, que são bancos que a gente pode “embutir” na aplicação, mas são um pouco mais limitados em questão de funcionalidades. Se você já teve alguma experiência com eles, queria ver sua opinião sobre eles por aqui. :)

    • andrealveslima disse:

      Olá Aninha!

      Eu já trabalhei há um bom tempo (em 2008 mais um menos) com o SQL Server CE, quando desenvolvia aplicativos para o Windows Mobile.. Desde então nunca mais utilizei.. O SQLite eu nunca precisei utilizar nos aplicativos que eu desenvolvi.. Esse tipo de banco de dados o pessoal utiliza mais em aplicações móveis, como em apps para o Windows Phone e Windows 8/10..

      Vou colocar na minha lista de temas a abordar no futuro, OK?

      Obrigado!
      Abraço!
      André Lima

  • andre spilari disse:

    ola andre, quanto ao mysql, ele usa mais memoria e processadores na versao free. Obrigado

    • andrealveslima disse:

      Olá André, obrigado pelo comentário!

      Realmente é uma excelente observação.. O MySQL não tem limitação de memória e processadores na versão Community, diferentemente do SQL Server que tem esse tipo de limitação.. Obrigado por ter apontado essa diferença..

      Abraço!
      André Lima

  • […] das transmissões que eu fiz foi um breve comparativo entre SQL Server, MySQL e PostgreSQL. Confessando aqui para você, desses três bancos o único que eu tenho experiência sólida e […]

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *