2010-04-29 9 views
46

के साथ किया जाना चाहिए मैं मोंगो के साथ बातचीत करते समय पाइथन एपीआई का उपयोग करने के लिए आगे और पीछे जा रहा हूं। मैंने परिदृश्य का त्वरित सर्वेक्षण किया और तीन प्रमुख उम्मीदवारों की पहचान की।जो पाइथन एपीआई का उपयोग मोंगो डीबी और डीजेगो

यदि आप django ढांचा, तुम क्या एपीआई का चयन करेंगे और क्यों का उपयोग कर एक नई सामग्री भारी वेबसाइट डिजाइनिंग कर रहे थे?

मोंगोइंजिन ऐसा लगता है कि यह विशेष रूप से डीजेगो के दिमाग में बनाया गया था। प्योंमोन्गो मोंगो के चारों ओर एक पतली आवरण प्रतीत होता है। इसमें बहुत सारी शक्ति है, हालांकि एक फ्रेमवर्क के रूप में django का उपयोग करके प्राप्त कई अमूर्तताओं को खो देता है। मिंग पायमोंगो और मोंगोइंजिन के बीच एक दिलचस्प मध्य ग्राउंड का प्रतिनिधित्व करता है, हालांकि मुझे इसे टेस्ट ड्राइव के लिए लेने का अवसर नहीं मिला है।

उत्तर

55

है, तो आप PyMongo से बचने नहीं कर सकते हैं - सभी अन्य इंटरफेस सब के ऊपर का निर्माण। ये अन्य इंटरफेस तर्कसंगत अनावश्यक हैं। एसक्यूएल से निपटने के दौरान डीजेंगो में उपयोग किए जाने वाले ओआरएम उपयोगी होते हैं क्योंकि वे एसक्यूएल प्रश्नों और स्कीमा बनाने की जटिलता को कम करते हैं, और परिणामों को पार्सिंग परिणाम सेट में सेट करते हैं।

PyMongo हालांकि पहले से ही है कि कवर किया है - प्रश्नों के लिए एक सुविधाजनक और सरल एपीआई के माध्यम से जाने के लिए और MongoDB से आने वाले परिणाम पहले से ही वस्तुओं (अच्छी तरह से, dicts अजगर में - एक ही अंतर) कर रहे हैं परिभाषा के द्वारा। यदि आपको लगता है कि आपको वास्तव में पाइथन ऑब्जेक्ट्स के साथ अपने मोंगो दस्तावेज़ों को सजाने की ज़रूरत है, तो पीएममोन्गो में बेटे मैनिपुलेटर को जोड़ना आसान है। इस दृष्टिकोण के बारे में अच्छी बात यह है कि आप सीधे पिममोन्गो पर कोड लिख सकते हैं, और बाद में अतिरिक्त कोड में स्लाइड कर सकते हैं, बिना कोड और पायमोंगो के बीच एक नया एपीआई डाले।

क्या बचा है? स्कीमा सृजन और माइग्रेशन कुछ हद तक उपयोगी हैं, लेकिन लगभग उतने ही आसान हैं - संभावना है कि यदि आप मोंगोडीबी का उपयोग करने पर विचार कर रहे हैं तो आप पारंपरिक एसक्यूएल-स्टाइल मॉडल से बाहर निकलना चाहते हैं। इसके अलावा, अगर पूरी तरह से Django- संगत MongoDB ORM थे तो आप इससे कुछ लाभ प्राप्त कर सकते हैं। इससे कम कुछ भी और आप शायद अपने लिए काम तैयार करेंगे।

आपको सीधे प्योंमोन्गो का उपयोग करके खेद नहीं होगा। देख अगर आप शीर्ष दक्षता में रुचि रखते हैं लायक

एक आखिरी विकल्प PyMongo के एसिंक्रोनस संस्करण यहाँ है: http://github.com/fiorix/mongo-async-python-driver

+2

क्या आपके पास async (twisted) ड्राइवर के साथ कोई व्यक्तिगत अनुभव है? मैं एक ट्विस्टेड ऐप में मोंगोडीबी का उपयोग करना चाहता हूं और इसके पार आया हूं, लेकिन पायमोंगो दस्तावेज बताता है कि [http://api.mongodb.org/python/current/faq.html?highlight=twisted#how-can-i-use -pymongo-with-an-asynchronous-socket-library-like-twisted] (_ यह प्रोजेक्ट वर्तमान में PyMongo_ से कम स्थिर है)। यह सिर्फ एक तृतीय पक्ष ओपन सोर्स प्रोजेक्ट के बारे में एक मानक अस्वीकरण हो सकता है, लेकिन यह भी सच हो सकता है ... यही कारण है कि मैं इस पुस्तकालय के बारे में पहली बार टिप्पणियों की तलाश कर रहा हूं ... –

+1

यहां async ड्राइवर का लेखक। इसे कम स्थिर कहा जाता है क्योंकि यह पायमोंगो के साथ अद्यतित नहीं है, जिसे मोंगोडीबी (एक ही कंपनी) द्वारा बनाए रखा जाता है। मैंने बहुत पहले [आधिकारिक दस्तावेज] (http://docs.mongodb.org/meta-driver/latest/legacy/mongodb-wire-protocol/) का उपयोग करके एसिंक ड्राइवर लिखा था, और ड्राइवर कई योगदानकर्ताओं द्वारा बहुत विकसित हुआ है , मोंगोडीबी के लिए काम करने वाले लोगों सहित। यह वास्तव में स्थिर और उत्पादन के लिए उपयुक्त है। – fiorix

6

दोनों मोंगोइंजिन और मिंग पिमोंगो पर निर्भर करते हैं - वे बस इसके शीर्ष पर कुछ अच्छी कार्यक्षमता डालते हैं। मैं कम से कम w/PyMongo को सीधे शुरू करने की अनुशंसा करता हूं - इस तरह यदि आप किसी अन्य उपकरण का उपयोग करने और समस्याओं में भाग लेने का निर्णय लेते हैं तो यह समझना आसान होगा कि "हुड के नीचे" क्या हो रहा है। उस ने कहा, मैं अत्यधिक पक्षपाती हूं;)।

11

मैं Mongokit के साथ काम कर रहा हूं। अब तक यह पसंद है। माइक कहते हैं

यहाँ एक blog post I referenced when integrating with Django

+0

मोंगोकिट, हेरोल्ड का उल्लेख करने के लिए धन्यवाद। मैंने इसके बारे में नहीं सुना है और ब्याज के साथ अपने विकास को देख रहा हूं। मोंगोकिट के लिए – Thomas

+0

+1, लेखक बहुत पहुंच योग्य है और लोकप्रिय मांग से प्रदर्शन में काफी सुधार कर रहा है। –

5

आप Django-MongoDB इंजन आजमाइए हो सकता है। यह Django- nonrel के लिए एक बैकएंड है, इसलिए आप Django के मॉडल और ओआरएम का उपयोग जारी रख सकते हैं।यह अभी तक नहीं अन्य API के रूप में के रूप में पूरा, हालांकि है: http://www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released

2

मैं सिर्फ पाया 'micromongo':

http://packages.python.org/micromongo/

लग रहा है यह बाधित हुए बिना pymongo के शीर्ष पर सिर्फ पर्याप्त उपयोगी सामग्री कहते हैं की तरह मार्ग।

0

आधिकारिक Mongodb documentationdjongo के बारे में बात करता है। यह mongodb प्रश्नों में एसक्यूएल प्रश्नों का अनुवाद करके काम करता है।

आपको इसे चलाने के लिए django-nonrel की आवश्यकता नहीं है।

सभी देशी Django योगदान मॉड्यूल (जैसे। व्यवस्थापक, उपयोगकर्ता, सत्र) किसी भी संशोधन के बिना काम करते हैं।

मोंगोइंजिन को contribiting contrib मॉड्यूल की आवश्यकता होती है और आखिरी बार मैंने जांच की, मूल व्यवस्थापक मॉड्यूल MongoEngine पर नहीं चला था।

आपके मौजूदा मॉडल किसी भी ओआरएम अनुवाद के बिना भी चलते हैं।

संबंधित मुद्दे