Question

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 en production.

Dans une podcast Joel a dit qu'il avait quelques problèmes avec MySQL et que les données n'étaient pas cohérentes.

J'aimerais savoir si quelqu'un a eu ce genre de problèmes.Également en ce qui concerne les performances qui peuvent être facilement modifiées ?

Était-ce utile?

La solution

Une note aux futurs lecteurs : Le texte ci-dessous a été édité pour la dernière fois en août 2008.C'était il y a près de 5 ans à compter de cette modification.Les logiciels peuvent changer rapidement d'une version à l'autre, donc avant de choisir un SGBD en fonction des conseils ci-dessous, faites quelques recherches pour voir s'il est toujours précis.


Mieux?

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

PostgreSQL est un produit beaucoup plus mature.

Il y a cette discussion répond à 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’un autre côté, il présente une faible évolutivité avec des charges et des ratios écriture/lecture croissants.PostgreSQL est relativement lent à de faibles niveaux de concurrence, mais s'adapte bien à des niveaux de charge croissants, tout en offrant une isolation suffisante entre les accès simultanés pour éviter les ralentissements à des ratios écriture/lecture élevés.Il continue en établissant un lien avec un certain nombre de comparaisons de performances, car ces choses sont très...sensible aux conditions.

Donc, si votre facteur de décision est : "lequel est plus vite?" Alors la réponse est "ça dépend". Si cela est vraiment important, testez votre application par rapport aux deux." Et si vous vous en souciez vraiment, vraiment, vous faites appel à deux administrateurs de base de données (un spécialisé dans chaque base de données) et vous leur demandez de régler les conneries des bases de données, puis de choisir.C'est étonnant à quel point c'est cher bien Les administrateurs de base de données sont ;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, une conception de base de données plus appropriée, des astuces de procédures stockées intelligentes, etc. - et tout cela est moins cher et plus facile pour random-website-X que de se demander lequel choisir, MySQL ou PostgreSQL et un réglage spécialisé par des administrateurs de base de données coûteux.


Joel a également déclaré dans ce podcast que ce commentaire reviendrait le mordre parce que les gens diraient que MySQL était une merde - Joel ne pouvait pas obtenir un count de rangées en arrière.Le pluriel d’anecdote n’est pas une donnée. Il a dit:

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

et il dit aussi :

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 tendance étrange à transformer des anecdotes en vérités et en fait, en tant que blogueur, je commence à me sentir un peu coupable à ce sujet.

Autres conseils

Certains disent que MySQL est simple et rapide.

Rapide – Eh bien, si vous utilisez le moteur de stockage MyIsam par défaut, il est rapide.Il n’a presque aucune fonctionnalité de base de données sérieuse, mais il est rapide.Si je voulais être sarcastique, je dirais qu'un grep sur un fichier plat est également rapide.Assez drôle, ce n'est pas si loin de la façon dont MyIsam stocke les données.Ne vous attendez donc à aucune fonctionnalité de base de données relationnelle.Pas même de référence aux contraintes d’intégrité.

Simple – Disons maintenant que vous souhaitez un sous-ensemble équitable de fonctionnalités de base de données réelles.Certaines choses comme les contraintes d'intégrité, les déclencheurs, l'isolation des transactions, les indices fonctionnels peut-être ?Vous devez donc évidemment laisser de côté le moteur MyIsam et choisir parmi l’un des 3 autres moteurs de stockage principaux.Qui ont été développés par différents fournisseurs, chacun ayant une configuration/comportement particulier.

Vérifier un aperçu des moteurs de stockage, et si vous n'avez pas mal à la tête, je conviens que MySql est simple de votre point de vue.

À partir de ces faits, je vous laisse vous faire une opinion sur ceux qui disent que MySql est rapide et simple.

Si vous souhaitez évoluer davantage, gagner du temps, avoir moins de bugs étranges à rechercher, avoir un code d'application plus simple, passer plus de temps à optimiser votre entreprise, sans vous battre avec votre base de données, alors la solution open source de choix est Postgresql.

Je n'ai pas utilisé Django, mais j'ai utilisé à la fois MySQL et PostgreSQL.Si vous utilisez votre base de données uniquement comme back-end pour Django, cela n'a pas beaucoup d'importance, car cela éliminera la plupart des différences.PostgreSQL est un peu plus évolutif (il n'atteint pas le mur de briques aussi vite que MySQL à mesure que la taille des données/le nombre de clients augmente).

La vraie différence apparaît si vous créez un nouveau système.Ensuite, je recommanderais PostgreSQL haut la main, car il possède beaucoup plus de fonctionnalités qui rendent votre couche de base de données beaucoup plus personnalisable afin que vous puissiez l'ajuster à toutes vos exigences.

J'interviens juste plusieurs mois plus tard.

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

Si votre service Web dispose d'un composant de localisation, choisissez PostgreSQL.

Même s'il est un peu dépassé, il vaudrait la peine de le lire. Les pièges de MySQL page.La plupart des éléments qui y sont répertoriés sont toujours vrais, à ma connaissance.

J'utilise PostgreSQL.

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

  • Licences – Allez-vous distribuer votre application (IANAL)
  • Infrastructure existante et base de connaissances
  • N'importe lequel sauce spéciale tu dois avoir.

Par sauce spéciale J'ai des choses comme :

  • réplication facile/bon marché = MySQL
  • D'énormes problèmes d'ensemble 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 sur debian/ubuntu

Eh bien, je ne pense pas que vous devriez utiliser une marque de base de données différente dans tout développement antérieur (construction, mise en scène, production), 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 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, ce n'est pas le cas), vous souhaiterez peut-être vous tourner vers postgreSQL.

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 Web peu satisfaisants, bien qu'il y en ait quelques-uns.À bien des égards, PostgreSQL est plus lent que MySQL, surtout lorsqu'il s'agit de peaufiner le réglage final.Dans l’ensemble, je dirais d’essayer PostgreSQL pendant un court laps de temps, de cette façon vous ne l’éviterez pas complètement, puis de porter un jugement.

Merci.J'ai utilisé Django avec MySQL et ça va.Choisissez votre base de données en fonction des fonctionnalités dont vous avez besoin.Difficile de comparer MySQL et Postgres.Mieux vaut comparer Postgress à SQL Server.

@WolfmanDragon

PostgreSQL prend en charge (minusculement) les objets, mais il s'agit, par nature, d'une base de données relationnelle.De son à propos de la page:

PostgreSQL est un outil puissant et open source relationnel système de base de données.

MySQL est un Système de gestion de base de données relationnelle alors que PostgreSQL est un objet-Système de gestion de base de données relationnelle.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 RDBMS ?Cela répondra mieux à votre question.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top