MySQL vs PostgreSQL pour les applications Web [fermé]

122

Je travaille sur une application web utilisant Python (Django) et j'aimerais savoir si MySQL ou PostgreSQL seraient plus adaptés lors du déploiement pour la production.

Dans un podcast, Joel a déclaré qu'il avait des problèmes avec MySQL et que les données n'étaient pas cohérentes.

Je voudrais savoir si quelqu'un a eu de tels problèmes. Aussi en ce qui concerne les performances qui peuvent être facilement modifiées?

cnu
la source

Réponses:

127

Une note aux futurs lecteurs: Le texte ci-dessous a été modifié pour la dernière fois en août 2008. C'est il y a près de 11 ans à compter de cette édition. Le logiciel peut changer rapidement d'une version à l'autre, donc avant de choisir un SGBD en vous basant sur les conseils ci-dessous, faites des recherches pour voir s'il est toujours exact. Vérifiez les nouvelles réponses ci-dessous.


Mieux?

MySQL est beaucoup plus communément fourni par les hébergeurs Web.

PostgreSQL est un produit beaucoup plus mature.

Il y a cette discussion sur votre "meilleure" question

Apparemment, selon cette page Web , MySQL est rapide lorsque les niveaux d'accès simultanés sont faibles et lorsqu'il y a beaucoup plus de lectures que d'écritures. D'autre part, il présente une faible évolutivité avec des charges et des rapports d'écriture / lecture croissants. PostgreSQL est relativement lent à de faibles niveaux de concurrence, mais évolue bien avec des niveaux de charge croissants, tout en offrant une isolation suffisante entre les accès simultanés pour éviter les ralentissements à des taux d'écriture / lecture élevés. Il poursuit en lien avec un certain nombre de comparaisons de performances, car ces éléments sont très ... sensibles aux conditions.

Donc, si votre facteur de décision est " ce qui est le plus rapide? ", La réponse est "cela dépend. Si cela compte vraiment, testez votre application contre les deux. " dans chaque base de données) et demandez-leur de régler la merde hors des bases de données, puis choisissez. Il est étonnant de voir à quel point les bons DBA sont chers ; et ils valent chaque centime .

Quand ça compte.

Ce qui n'est probablement pas le cas, alors choisissez simplement la base de données dont vous aimez le son et allez-y; de meilleures performances peuvent être achetées avec plus de RAM et de CPU, et une conception de base de données plus appropriée, et des astuces de procédures stockées intelligentes, etc. et le réglage spécialisé à partir de DBA coûteux.


Joel a également déclaré dans ce podcast que ce commentaire reviendrait pour le mordre parce que les gens diraient que MySQL était une merde - Joel ne pouvait pas récupérer plusieurs countlignes. Le pluriel de anecdote n'est pas une donnée. Il a dit :

MySQL est la seule base de données sur laquelle j'ai jamais programmé dans ma carrière qui a eu des problèmes d'intégrité des données, où vous faites des requêtes et vous obtenez des réponses absurdes, qui sont incorrectes.

et il a également dit:

C'est juste une anecdote. Et c'est l'une des choses qui me frustre, en fait, à propos des blogs ou simplement d'Internet en général. [...] Il y a juste une étrange tendance à faire des anecdotes des vérités et en fait, en tant que blogueur, je commence à me sentir un peu coupable à ce sujet

Josh
la source
15
Et un autre point est que, si vous utilisez un framework, vous pourrez peut-être extraire votre code de la base de données, afin de pouvoir changer facilement.
Don Jones
"lequel est plus vite?" . Dépend de ce que vous voulez, si vous voulez une base de données compatible ACID, lisez ceci: randombugs.com/linux/mysql-postgresql-benchmarks.html
Sacx
47
A noter également. MySQL appartient à Oracle. Par conséquent, il ne serait jamais autorisé à concurrencer leurs produits payants.
unixman83
15

Juste sonner plusieurs mois plus tard.

Les capacités géographiques des deux bases de données sont très, très différentes. PostgreSQL dispose de l'exceptionnelle extension PostGIS. La fonctionnalité géographique de MySQL est pratiquement nulle en comparaison.

Si votre service Web a un composant de localisation, choisissez PostgreSQL.

Été
la source
14

Je n'ai pas utilisé Django, mais j'ai utilisé à la fois MySQL et PostgreSQL. Si vous n'utilisez votre base de données que comme backend pour Django, cela n'a pas beaucoup d'importance, car cela résoudra la plupart des différences. PostgreSQL est un peu plus évolutif car il n'atteint pas le mur de briques aussi rapidement que MySQL à mesure que la taille des données / le nombre de clients augmentent.

La vraie différence vient si vous faites un nouveau système. Ensuite, je recommanderais PostgreSQL haut la main, car il a beaucoup plus de fonctionnalités qui rendent votre couche de base de données beaucoup plus personnalisable, afin que vous puissiez l'ajuster à toutes les exigences que vous pourriez avoir.

Panthère grise
la source
7

Bien que ce soit un peu dépassé, il vaudrait la peine de lire la page MySQL Gotchas . Bon nombre des éléments qui y sont énumérés sont toujours vrais, à ma connaissance.

J'utilise PostgreSQL.

Greg Hewgill
la source
6

J'utilise les deux intensivement. Mon choix pour un projet particulier se résume à:

  • Licence - Allez-vous distribuer votre application (IANAL)
  • Infrastructure existante et base de connaissances
  • Toute sauce spéciale que vous devez avoir.

Par sauce spéciale, j'entends des choses comme:

  • Réplication facile / bon marché = MySQL
  • Énormes problèmes de jeu de données avec de petits résultats = PostgreSQL. Utilisez les extensions de langage et effectuez des opérations de données très efficaces. (PL / Python, PL / TCL, PL / Perl, etc.)
  • Interface avec les bibliothèques statistiques R = PostgreSQL PL / R disponible dans debian / ubuntu
Lance se précipitant
la source
3
Postgres propose également une réplication facile / bon marché. Ce n'est tout simplement pas intégré , car il y en a une demi-douzaine de choix, chacun avec ses propres bons et mauvais éléments. Ainsi , vous pouvez choisir une réplication médiocre pour MySQL, ou de l' un des nombreux pour PostgreSQL. Votre choix.
Randal Schwartz
6
PostgreSQL 9.0+ a une réplication WAL binaire intégrée qui est très facile à configurer.
Sean
1

Eh bien, je ne pense pas que vous devriez utiliser une marque de base de données différente dans quoi que ce soit du développement antérieur (build, staging, prod) car cela reviendra vous mordre.

D'après ce que je comprends, PostgreSQL est une implémentation de base de données plus «correcte» tandis que mySQl est moins correcte (moins conforme) mais plus rapide.

Donc, si vous écrivez à peu près une application CRUD, mySQL est la voie à suivre. Si vous avez besoin de certaines fonctionnalités de votre base de données (si vous n'êtes pas sûr, alors vous ne le faites pas), vous voudrez peut-être vous pencher sur postgreSQL.

SCdF
la source
1

Si vous écrivez une application qui peut être distribuée un peu sur différents serveurs, MySQL a beaucoup de poids sur PostgreSQL en raison de la portabilité. PostgreSQL est difficile à trouver sur des hébergeurs moins que satisfaisants, bien qu'il y en ait quelques-uns. Dans la plupart des cas, PostgreSQL est plus lent que MySQL, surtout quand il s'agit de peaufiner à la fin. Dans l'ensemble, je dirais de donner une chance à PostgreSQL pendant un court laps de temps, de cette façon vous ne l'évitez pas complètement, puis de porter un jugement.

tslocum
la source
1
Je suis d'accord avec vous pour dire que davantage d'hébergeurs Web de mauvaise qualité devraient offrir un choix au lieu de nous pousser MySQL au nez. Cependant, lorsque vous optez pour l'hébergement mutualisé, vous êtes de toute façon à leur merci. Un choix DBM n'a donc pas autant d'importance.
unixman83
0

Je vous remercie. J'ai utilisé Django avec MySQL et c'est très bien. Choisissez votre base de données sur les fonctionnalités dont vous avez besoin. Difficile de comparer MySQL et Postgres. Mieux vaut comparer Postgress à SQl Server.

Stephen Cox
la source
0

@WolfmanDragon

PostgreSQL a un (petit) support pour les objets, mais c'est, par nature, une base de données relationnelle. Depuis sa page à propos :

PostgreSQL est un puissant système de base de données relationnelle open source .

Marcospereira
la source
2
un système de gestion de base de données relationnelle-objet Système de gestion de base de données relationnelle ISA. Si vous lisez plus loin dans la documentation PostgSQL, vous constaterez que PostgSql est un ORDBMS. Peut-être confondez-vous ORDBMS avec ODBMS comme Objectivity / DB.
WolfmanDragon
-1

MySQL est un système de gestion de base de données relationnelle tandis que PostgreSQL est un objet système de gestion de base de données -relational . PostgreSQL convient bien aux développeurs C ++ ou Java, car il nous donne plus de contrôle sur la façon dont les requêtes sont écrites. ORDBMS nous donne également des objets et des types définis par l'utilisateur. Les requêtes SQL elles-mêmes sont beaucoup plus proches des normes ISO que MySQL.
Avez-vous besoin d'un ORDBMS ou d'un SGBDR? Cela répondra mieux à votre question.

Homme-loupDragon
la source
C'est un peu une simplification excessive; juste parce que vous n'avez pas besoin d'un ORDBMS ne signifie pas nécessairement que vous devez utiliser MySQL. Il y a d'autres différences plus importantes, non?
Don Jones
1
Vous avez raison. J'essaye de ne pas ressembler à un pousseur de PostgreSQL. Je ne vois aucune raison réelle d'utiliser autre chose que PostgreSQL à moins que la conception ne fasse appel à une véritable base de données d'objets. Je ne vois aucun intérêt à MySQL à part que plus de gens le connaissent.
WolfmanDragon