MySQL vs PostgreSQL para aplicativos da Web [fechado]

122

Estou trabalhando em um aplicativo Web usando Python (Django) e gostaria de saber se o MySQL ou PostgreSQL seria mais adequado ao implantar para produção.

Em um podcast, Joel disse que tinha alguns problemas com o MySQL e os dados não eram consistentes.

Eu gostaria de saber se alguém teve algum desses problemas. Além disso, quando se trata de desempenho que pode ser facilmente ajustado?

cnu
fonte

Respostas:

127

Uma observação para os futuros leitores: O texto abaixo foi editado pela última vez em agosto de 2008. Há quase 11 anos, a partir desta edição. O software pode mudar rapidamente de versão para versão; portanto, antes de escolher um DBMS com base nos conselhos abaixo, faça uma pesquisa para verificar se ele ainda é preciso. Verifique as respostas mais recentes abaixo.


Melhor?

O MySQL é muito mais comumente fornecido por hosts da web.

O PostgreSQL é um produto muito mais maduro.

essa discussão abordando sua pergunta "melhor"

Aparentemente, de acordo com esta página da web , o MySQL é rápido quando os níveis de acesso simultâneo são baixos e quando há muito mais leituras do que gravações. Por outro lado, exibe baixa escalabilidade com cargas crescentes e taxas de gravação / leitura. O PostgreSQL é relativamente lento em baixos níveis de simultaneidade, mas se adapta bem ao aumento dos níveis de carga, ao mesmo tempo em que fornece isolamento suficiente entre acessos simultâneos para evitar lentidão nas altas taxas de gravação / leitura. Ele continua a vincular-se a várias comparações de desempenho, porque essas coisas são muito ... sensíveis às condições.

Portanto, se seu fator de decisão é "o que é mais rápido? ", Então a resposta é "depende. Se realmente importa, teste seu aplicativo em relação a ambos. " E se você realmente se importa, recebe dois DBAs (um especialista em cada banco de dados) e faça com que eles ajustem a porcaria dos bancos de dados e escolha. É impressionante o quão caro boas DBAs são; e valem cada centavo .

Quando importa.

O que provavelmente não funciona, basta escolher o banco de dados que você mais gosta e seguir com ele; melhor desempenho pode ser comprado com mais RAM e CPU, e design de banco de dados mais apropriado, truques inteligentes de procedimentos armazenados e assim por diante - e tudo isso é mais barato e fácil para o site aleatório-X do que agonizar sobre o que escolher, MySQL ou PostgreSQL e ajuste especializado de DBAs caros.


Joel também disse naquele podcast que o comentário voltaria para mordê-lo, porque as pessoas diriam que o MySQL era uma porcaria - Joel não conseguiu countrecuperar algumas linhas. O plural de anedota não é dados. Ele disse :

O MySQL é o único banco de dados contra o qual já programei em minha carreira que teve problemas de integridade de dados, nos quais você faz consultas e recebe respostas sem sentido, incorretas.

e ele também disse:

É apenas uma anedota. E essa é uma das coisas que me frustra, na verdade, sobre blogs ou apenas a Internet em geral. [...] Há apenas uma tendência estranha de transformar anedotas em verdades e eu, na verdade, como blogueira, estou começando a me sentir um pouco culpada por isso

Josh
fonte
15
E outro ponto é que, se você usar uma estrutura, poderá abstrair seu código do banco de dados, para poder alternar facilmente.
Don Jones
"O que é mais rápido?" . Depende do que você quer, se você quer banco de dados compatível com ACID, então leia este: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx
47
Também digno de nota. O MySQL é de propriedade da Oracle. Portanto, nunca seria permitido competir com seus produtos pagos.
unixman83
15

Apenas tocando alguns meses depois.

As capacidades geográficas dos dois bancos de dados são muito, muito diferentes. O PostgreSQL possui a excepcional extensão PostGIS. A funcionalidade geográfica do MySQL é praticamente zero em comparação.

Se o seu serviço da web tiver um componente de localização, escolha PostgreSQL.

verão
fonte
14

Eu não usei o Django, mas usei o MySQL e o PostgreSQL. Se você usará seu banco de dados apenas como back-end para o Django, não importa muito, porque abstrairá a maioria das diferenças. O PostgreSQL é um pouco mais escalável porque não atinge a parede de tijolos tão rápido quanto o MySQL à medida que o tamanho dos dados / número de clientes aumenta.

A verdadeira diferença entra se você estiver criando um novo sistema. Então, eu recomendo o PostgreSQL, porque ele tem muito mais recursos que tornam a camada do DB muito mais personalizável, para que você possa ajustá-lo a qualquer requisito que possa ter.

Pantera Cinza
fonte
7

Embora esteja um pouco desatualizado, vale a pena ler a página Gotchas do MySQL . Muitos dos itens listados ainda são verdadeiros, pelo que sei.

Eu uso o PostgreSQL.

Greg Hewgill
fonte
6

Eu uso os dois extensivamente. Minha escolha para um projeto específico se resume a:

  • Licenciamento - você distribuirá seu aplicativo (IANAL)
  • Infraestrutura existente e base de conhecimento
  • Qualquer molho especial que você precise ter.

Por molho especial, quero dizer coisas como:

  • Replicação fácil / barata = MySQL
  • Enormes problemas no conjunto de dados com pequenos resultados = PostgreSQL. Use as extensões de idioma e tenha operações de dados muito eficientes. (PL / Python, PL / TCL, PL / Perl, etc)
  • Interface com as bibliotecas estatísticas R = PostgreSQL PL / R disponível no debian / ubuntu
Lance Rushing
fonte
3
O Postgres também possui replicação fácil / barata. Simplesmente não está embutido , porque há meia dúzia para escolher, cada um com suas próprias partes boas e ruins. Então você pode escolher a uma replicação medíocre para MySQL, ou a partir de um dos muitos para PostgreSQL. Sua escolha.
Randal Schwartz
6
O PostgreSQL 9.0+ possui replicação WAL binária integrada que é muito fácil de configurar.
Sean
1

Bem, eu não acho que você deva usar uma marca de banco de dados diferente em qualquer desenvolvimento anterior (compilação, preparo, prod), pois isso voltará a incomodá-lo.

Pelo que entendi, o PostgreSQL é uma implementação de banco de dados mais 'correta', enquanto o mySQl é menos correto (menos compatível), mas mais rápido.

Portanto, se você está praticamente escrevendo um aplicativo CRUD, o mySQL é o caminho a seguir. Se você precisar de certos recursos do seu banco de dados (se você não tiver certeza, não precisa), convém consultar o postgreSQL.

SCdF
fonte
1

Se você está escrevendo um aplicativo que pode ser distribuído bastante em servidores diferentes, o MySQL tem muito peso sobre o PostgreSQL devido à portabilidade. É difícil encontrar o PostgreSQL em hosts da web menos que satisfatórios, embora existam alguns. Na maioria dos aspectos, o PostgreSQL é mais lento que o MySQL, especialmente quando se trata de ajustes finos no final. Em suma, eu diria para dar uma chance ao PostgreSQL por um curto período de tempo, para que você não a evite completamente e faça um julgamento.

tslocum
fonte
1
Concordo com você que mais hosts da web de baixa qualidade devem oferecer uma opção em vez de empurrar o MySQL em nossas faces. No entanto, ao optar por hospedagem compartilhada, você estará à mercê deles de qualquer maneira. Portanto, uma escolha de DBM não importa tanto.
unixman83
0

Obrigado. Eu usei o Django com MySQL e está tudo bem. Escolha seu banco de dados com os recursos que você precisa. Difícil comparar MySQL e Postgres. Melhor comparar o Postgress com o SQl Server.

Stephen Cox
fonte
0

@WolfmanDragon

O PostgreSQL possui (minúsculo) suporte para objetos, mas é, por natureza, um banco de dados relacional. Na página sobre :

O PostgreSQL é um poderoso código aberto sistema de banco de dados relacional de .

marcospereira
fonte
2
um sistema de gerenciamento de banco de dados objeto-relacional ISA Relational Database Management System. Se você ler mais adiante na documentação do PostgSQL, verá que o PostgSql é um ORDBMS. Talvez você esteja confundindo ORDBMS com ODBMS, como Objectivity / DB.
WolfmanDragon 13/10/08
-1

MySQL é um sistema de gerenciamento de banco de dados relacional , enquanto PostgreSQL é um objeto sistema de gerenciamento de banco de dados -relational . O PostgreSQL é adequado para desenvolvedores de C ++ ou Java, pois nos dá mais controle sobre como as consultas são gravadas. O ORDBMS também nos fornece objetos e tipos definidos pelo usuário. As consultas SQL são muito mais próximas dos padrões ISO do que o MySQL.
Você precisa de um ORDBMS ou um RDBMS? Isso responderá melhor à sua pergunta.

WolfmanDragon
fonte
Isso é meio que uma simplificação excessiva; só porque você não precisa de um ORDBMS não significa necessariamente que você deve ir com o MySQL. Existem outras diferenças mais significativas, não?
Don Jones
1
Você está certo. Estou tentando não parecer um empurrador do PostgreSQL. Não vejo razão real para usar outra coisa senão o PostgreSQL, a menos que o design exija um verdadeiro banco de dados de objetos. Não vejo sentido no MySQL, a não ser que mais pessoas estejam familiarizadas com isso.
WolfmanDragon