56 votes

Avantages / inconvénients de MySQL vs Postgresql pour l'environnement de production Ruby on Rails?

Je vais bientôt être de commutation de sqlite3 soit postgres ou mysql. Que dois-je considérer lors de la prise de cette décision? Est mysql plus adapté pour les Rails de postgres dans certaines zones et/ou vice-versa? Ou, comme je l'ai quelque peu suspecte, n'est-il pas vraiment d'importance de toute façon?

Un autre facteur qui pourrait jouer dans ma décision est la disponibilité d'outils de pompe de données mes données de test à partir de la sqlite3 db à mes un nouveau. Est-il rien qui ActiveRecord fournit nativement de faire ceci ou de tout décent plugins/gemmes pour aider dans cette tâche?

BONUS: Comment prononcer "Postgresql" et le son comme je sais de quoi je parle? :)

Merci Greg Smith pour fournir le lien suivant qui montre la plus commune de la prononciation:

http://www.postgresql.org/community/survey.33

Mise à JOUR:

Référence de cette question pour plus d':

Recommandez-vous PostgreSQL sur MySQL?

FYI:

J'ai fini par l'utilisation de MySQL. Il s'agit d'un pur plug-in appelé yamldb qui m'a vraiment sauvé un peu de temps avec le transfert de données à partir de mon sqlite db à ma nouvelle mysql. Des Instructions sur la façon d'installer et d'utiliser il peut être trouvé ici:

http://accidentaltechnologist.com/ruby/change-databases-in-rails-with-yamldb/

41voto

Greg Smith Points 5443

J'ai écrit un long morceau de comparer MySQL vs PostgreSQL en termes de vitesse et de fiabilité, en touchant brièvement sur le modèle de développement. Depuis, Postgres a régulièrement de la progression avec une communauté unifiée produisant des logiciels libres.

Pendant ce temps, MySQL a erré dans cette scission de la communauté vont dans toutes les directions et avec un carrément effrayant propriétaire du code original. C'est assez fou, et si vous tenez vraiment de logiciel libre, la seule raison pour laquelle j'ai pu voir pour l'utilisation de MySQL à ce stade si vous avez déjà une application qui s'exécute uniquement sur la base de données.


Il a prononcé Post-gres-Q-L; voir l'officiel d'enregistrement. Une bonne taille de segment de gens il suffit d'utiliser "Postgres" tout le temps à la place. Il y a un sondage montrant la relative popularities des différents des autres et de moins en moins populaire prononciations incorrectes, la plupart de ceux-ci sont acceptés par les membres de la communauté de toute façon, sauf pour l'appeler "Postgre" qui agace tous les habitués.

12voto

Robert Harvey Points 103562

Les Rails doivent être en utilisant la norme SQL pour accéder à vos données. Si cela est vrai, sur le plan conceptuel, il devrait y avoir peu de différence entre les deux bases de données.

Pour l'anecdote, il existe des preuves que MySQL est un peu plus rapide, mais que Postgresql échelles de mieux que la base de données devient plus grand.

Si je comprends les licences correctement, MySQL est plus un "libre comme dans le discours", base de données, où Postgresql est "libre comme dans le discours" et "libre comme dans la bière."

SQLite a beaucoup de façons d'obtenir des données DANS SQLite, y compris un Postgresql processus. Je n'ai rien vu dans l'autre sens. Il devrait être assez simple de travailler quelques instructions SQL.

7voto

mson Points 4828

Je ne suis pas sûr de la comparaison technique entre les versions les plus récentes des systèmes, mais je sais que vous voudrez peut-être prendre en compte certains facteurs non techniques dans votre décision.

MySQL a été acheté par Sun, puis par Oracle. Il y a eu pas mal d'articles sur le déclin de la qualité de MySQL depuis que les fondateurs l'ont vendu.

Il existe également d'autres dbs gratuites, mais je pense que Postgresql semble être un bon choix.

7voto

Neil McGuigan Points 10123

MySQL est moins souhaitable pour les graves applications transactionnelles. Nous l'avons essayé sur un gros projet, et abandonné pour Postgres. Voici pourquoi:

  • natif de recherche en texte intégral et de transactions dans Postgres. L'un ou l'autre, mais pas les deux en mysql
  • la vérification des contraintes dans Postgres (vérifier date_debut < end_date)
  • mysql déclencheurs sont assez bête par rapport à postgres. par exemple, ils ne peuvent pas insérer dans leur propre table.
  • mysql peut s'étouffer sur les requêtes compliquées

MySQL beats PostgreSQL sur la réplication multimaître.

Vous pouvez surmonter le point 2 à l'aide d'un innodb maître et myisam esclaves.

3voto

Mike Trpcic Points 12741

Il dépend de la projection à l'échelle de votre application web. La petite taille des bases de données MySQL est très bien et est légèrement plus rapide pour de simples sélectionne, etc. Une fois votre base de données est grande cependant, MySQL frappe un mur où PostgreSQL, continue de conduire à travers elle.

Aussi longtemps que vous êtes à l'aide de ActiveRecord pour votre intermédiaire, il n'a pas d'importance ce que la base de données que vous utilisez, car il s'appuie Conformes à la norme SQL, qui va travailler sur les deux bases de données. Dès que vous spécifiez tous les triggers, procédures stockées, etc, vous serez coincé avec une base de données.

Personnellement, je préfère PostgreSQL, mais c'est juste parce que je n'ai jamais été un grand fan de MySQL.

PS: je prononce comme "Postgres".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X