MySQL vs PostgreSQL? Qui dois-je choisir pour mon projet Django?
Mon projet Django va être soutenu par une grande base de données avec plusieurs centaines de milliers d'entrées, et aura besoin de l'appui à la recherche (je vais probablement jusqu'à la fin à l'aide de djangosearch ou un projet similaire.)
La base de données backend est le mieux adapté à mon projet et pourquoi? Pouvez-vous recommander de bonnes ressources pour la lecture?
Vous devez vous connecter pour publier un commentaire.
Comme quelqu'un qui est récemment passé d'un projet de MySQL vers Postgresql, je ne regrette pas de l'interrupteur.
La principale différence, à partir d'un Django point de vue, est plus rigoureux de vérification des contraintes dans Postgresql, ce qui est une bonne chose, et aussi que c'est un peu plus fastidieux de le faire en manuel modifications de schéma (aka migrations).
Il y a probablement 6 ou si Django migration de base de données d'applications là-bas et au moins on n'a pas le support de Postgresql. Je ne considère pas un désavantage, mais parce que vous pouvez utiliser l'une des autres, ou le faire à la main (c'est ce que je préfère atm).
De recherche de texte intégral pourrait être mieux pris en charge pour MySQL. MySQL a intégré de recherche en texte intégral pris en charge à partir de l'intérieur de Django, mais c'est assez inutile (pas de mot de radical, la recherche de phrase, etc.). J'ai utilisé django-sphinx comme une meilleure option pour la recherche plein texte dans MySQL.
La recherche plein texte est intégré avec Postgresql 8.3 (les versions antérieures besoin TSearch module). Voici un bon enseignement post de blog: La recherche de texte intégral dans Django avec PostgreSQL et tsearch2
Pour ce qu'elle vaut les créateurs de Django vous recommandons de PostgreSQL.
Ce n'est pas de grande base de données, il est très petit.
J'ai choisi PostgreSQL, parce qu'il a beaucoup plus de fonctionnalités. Le plus significatif de cette affaire: dans PostgreSQL, vous pouvez utiliser Python comme langage procédural.
Aller avec celui que vous êtes plus familier avec. MySQL vs PostgreSQL est une guerre sans fin. Deux d'entre eux sont d'excellents moteurs de base de données, et les deux sont utilisées par les grands sites. Il n'a vraiment pas d'importance dans la pratique.
Même si Postgresql est mieux, je trouve qu'il a quelques problèmes de performances avec Django:
Postgresql est faite à poignée "longue connexions" (regroupement de connexions, connexions persistantes, etc.)
MySQL est faite pour traiter des "court connexions" (se connecter, faire vos demandes, de vous déconnecter, a certains problèmes de performances avec un grand nombre de connexions ouvertes)
Le problème est que Django ne prend pas en charge le regroupement de connexion ou persistant de connexion, il a à la connexion/déconnexion à la base de données à chaque affichage.
Ça fonctionne avec Postgresql, mais la connexion à Postgresql coût BEAUCOUP plus que de la connexion à une base de données MySQL (Postgresql, chaque connexion a de ses propres processus, c'est beaucoup plus lent que de sauter juste un nouveau thread dans MySQL).
Ensuite, vous obtenez quelques fonctionnalités comme la mise en Cache de Requête qui peut être vraiment utile sur certains cas. (Mais vous avez perdu le superbe texte de recherche de PostgreSQL)
Toutes les réponses apporter des informations intéressantes pour la table, mais certains sont un peu désuets, donc voici mon grain de sel.
Que de 1,7, les migrations sont maintenant partie intégrante de Django. Donc, ils ont recensé les principales différences que Django développeurs peuvent veulent savoir à l'avance.
Lors d'un échec de la migration dans django-sud, les développeurs vous invitons à ne pas utiliser MySQL:
À ajouter à la réponse à la question précédente :
L'index FULLTEXT de MySQL est une blague.
D'autres raisons ne sont pas mentionnés sont extrêmement intelligente optimiseur de requête, grand choix de types de join (merge, hachage, etc), agrégation de hachage, les index gist sur les tableaux, de la recherche spatiale, etc, qui peuvent entraîner extrêmement rapide des plans très compliqué requêtes.
Sera cette application sera hébergée sur vos propres serveurs ou par une société d'hébergement? Assurez-vous que si vous utilisez une société d'hébergement, ils prennent en charge la base de données de choix.
Il est l'une des principales licences de différence entre les deux db qui vous concernent si vous avez l'intention de distribuer le code à l'aide de la db. MySQL client bibliothèques sont sous licence GPL et PostegreSQL est sous une licence de type BSD, qui pourrait être plus facile de travailler avec.