Pergunta

Estou trabalhando em uma aplicação web usando Python (Django) e gostaria de saber se MySQL ou PostgreSQL seriam mais adequados para implantação em produção.

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

Gostaria de saber se alguém teve algum problema desse tipo.Também quando se trata de desempenho que pode ser facilmente ajustado?

Foi útil?

Solução

Uma nota para futuros leitores: O texto abaixo foi editado pela última vez em agosto de 2008.Isso foi há quase 5 anos a partir desta edição.O software pode mudar rapidamente de versão para versão, portanto, antes de escolher um SGBD com base nos conselhos abaixo, faça uma pesquisa para ver se ele ainda é preciso.


Melhorar?

MySQL é muito mais comumente fornecido por hosts da web.

PostgreSQL é um produto muito mais maduro.

esta 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, apresenta baixa escalabilidade com cargas e taxas de gravação/leitura crescentes.O PostgreSQL é relativamente lento em baixos níveis de simultaneidade, mas se adapta bem com o aumento dos níveis de carga, ao mesmo tempo que fornece isolamento suficiente entre acessos simultâneos para evitar lentidão em altas taxas de gravação/leitura.Ele continua vinculado a uma série de comparações de desempenho, porque essas coisas são muito ...sensível às condições.

Então, se o seu fator de decisão for "O que é mais rápido?" Então a resposta é "depende". Se for realmente importante, teste seu aplicativo em ambos." E se você realmente se importa, você contrata dois DBAs (um especializado em cada banco de dados) e faz com que eles ajustem a porcaria dos bancos de dados e então escolham.É surpreendente como é caro bom DBAs são;e eles valem cada centavo.

Quando importa.

O que provavelmente não acontece, então escolha o banco de dados que você gosta e siga em frente;melhor desempenho pode ser adquirido com mais RAM e CPU, e design de banco de dados mais apropriado, e 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 ficar angustiado sobre qual escolher, MySQL ou PostgreSQL e ajuste especializado de DBAs caros.


Joel também disse naquele podcast que o comentário voltaria a incomodá-lo porque as pessoas diriam que o MySQL era uma porcaria - Joel não conseguia entender count de linhas atrás.O plural de anedota não é dados. Ele disse:

MySQL é o único banco de dados em que já programei em minha carreira que teve problemas de integridade de dados, onde você faz consultas e recebe respostas absurdas e incorretas.

e ele também disse:

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

Outras dicas

Alguns dizem que o MySQL é simples e rápido.

Rápido - Bem, se você usar o mecanismo de armazenamento MyIsam padrão, ele será rápido.Não possui quase nenhum recurso sério de banco de dados, mas é rápido.Se eu fosse sarcástico, diria que um grep em um arquivo simples também é rápido.Engraçado, não está muito longe de como o MyIsam armazena dados.Portanto, não espere nenhum recurso de banco de dados relacional.Nem mesmo referenciar restrições de integridade.

Simples - Agora digamos que você queira um subconjunto justo de recursos reais de banco de dados.Algumas coisas como restrições de integridade, gatilhos, isolamento de transações, índices funcionais, talvez?Então, obviamente, você deve deixar o mecanismo MyIsam de lado e escolher um dos outros três mecanismos de armazenamento principais.Que foram desenvolvidos por diferentes fornecedores, cada um com uma configuração/comportamento específico.

Confira uma visão geral dos mecanismos de armazenamento, e se você não tiver dor de cabeça, concordo que o MySql é simples do seu ponto de vista.

A partir desses fatos, vou deixar você decidir sobre aqueles que dizem que o MySql é rápido e simples.

Se você deseja escalar mais, economizar tempo, ter menos bugs estranhos para caçar, ter um código de aplicativo mais simples, gastar mais tempo otimizando seu negócio, sem brigar com seu banco de dados, então a solução de código aberto preferida é o Postgresql.

Não usei Django, mas usei MySQL e PostgreSQL.Se você estiver usando seu banco de dados apenas como back-end para Django, não importa muito, porque isso irá abstrair a maioria das diferenças.O PostgreSQL é um pouco mais escalável (ele não atinge a barreira tão rápido quanto o MySQL à medida que o tamanho dos dados/contagem de clientes aumenta).

A verdadeira diferença surge se você estiver criando um novo sistema.Então eu recomendo o PostgreSQL, porque ele tem muito mais recursos que tornam sua camada de banco de dados muito mais personalizável para que você possa ajustá-la a quaisquer requisitos que possa ter.

Apenas concordando muitos meses depois.

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

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

Embora esteja um pouco desatualizado, valeria a pena ler o Dicas do MySQL página.Muitos dos itens listados ainda são verdadeiros, até onde sei.

Eu uso PostgreSQL.

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

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

Por molho especial Eu coisas como:

  • replicação fácil/barata = MySQL
  • Enormes problemas de conjunto de dados com pequenos resultados = PostgreSQL.Use as extensões de linguagem e tenha operações de dados muito eficientes.(PL/Python, PL/TCL, PL/Perl, etc.)
  • Interface com bibliotecas estatísticas R = PostgreSQL PL/R disponível em debian/ubuntu

Bem, não acho que você deva usar uma marca de banco de dados diferente em qualquer desenvolvimento anterior (construção, preparação, produção), 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á escrevendo um aplicativo CRUD, o mySQL é o caminho a percorrer.Se você precisar de determinados recursos do seu banco de dados (se não tiver certeza, não precisa), talvez queira dar uma olhada no postgreSQL.

Se você estiver escrevendo um aplicativo que pode ser bastante distribuído em servidores diferentes, o MySQL tem muito peso sobre o PostgreSQL devido à portabilidade.PostgreSQL é difícil de encontrar em hosts da web menos satisfatórios, embora existam alguns.Em muitos aspectos, o PostgreSQL é mais lento que o MySQL, especialmente quando se trata de ajuste fino no final.Resumindo, eu diria para dar uma chance ao PostgreSQL por um curto período de tempo, dessa forma você não o evitará completamente, e então fazer um julgamento.

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

@WolfmanDragão

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

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

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top