2012-08-11 6 views
4

Je ne suis pas encore expérimenté avec django, mais nous sommes en train de créer un projet et nous nous demandions quelle base de données utiliser pour notre backend (Mongodb ou PostgreSQL).Mongodb vs PostgreSQL dans django

J'ai lu beaucoup de post disant les différences entre chacun, mais je ne peux toujours pas prendre la décision de laquelle aller. Prenant en considération je n'ai jamais travaillé avec Mongodb avant.

Alors, que dois-je faire?

Merci beaucoup à l'avance

Répondre

7

MongoDB est non-relationnelle, et en tant que tel vous ne pouvez pas faire des choses comme les jointures, etc. Pour cette raison, beaucoup des applications django.contrib, et d'autres applications 3ème partie sont susceptibles de pas de travailler avec mongodb. Mongodb peut être très utile si vous avez besoin de stocker des objets complexes sans entrer directement dans postgresql (bien sûr, vous pouvez json-sérialiser et mettre dans un champ de texte, mais utiliser mongodb à la place est bien meilleur, vous permet de faire des recherches, ..).

Donc, la meilleure suggestion est d'utiliser deux bases de données:

  • PostgreSQL pour les applications standard, comme noyau de django, l'authentification, ...
  • MongoDB uniquement pour votre application, lorsque vous devez stockez des objets complexes non relationnels

Vous pouvez également utiliser les méthodes raw_* qui ignorent une bonne partie de la validation (généralement inutile) par le django orm. Rappelez-vous simplement que les bases de données, en particulier sql vs no-sql, ne sont pas des remplacements interchangeables, mais qu'elles ont leurs propres caractéristiques, avantages et inconvénients, vous devez donc déterminer celle qui convient le mieux à vos besoins dans chaque cas, pas seulement en choisir un et l'utiliser pour tout.

MISE À JOUR

J'ai oublié de dire: rappelez-vous que vous devez utiliser la fourchette django-nonrel afin de rendre django prennent en charge les bases de données non relationnelles. Il s'agit actuellement d'un fork de django 1.3, mais une version basée sur 1.4 est en cours de développement.

+0

+ 1 affecté. Pouvez-vous fournir un lien vers une ressource sur les méthodes 'raw_ *'? Merci. –

+0

@JosvicZammit https://docs.djangoproject.com/fr/1.4/topics/db/sql/ –

+0

@JosvicZammit ici c'est la documentation officielle: http://django-mongodb.org/reference/lowerlevel.html – redShadow