मैंने MongoMapper की कोशिश की है और यह फीचर पूर्ण है (लगभग सभी AR कार्यक्षमता की पेशकश) लेकिन मैं बड़े डेटासेट का उपयोग करते समय प्रदर्शन से बहुत खुश नहीं था। मोंगॉयड के साथ किसी की तुलना की गई है? कोई प्रदर्शन लाभ?
जवाबों:
मैंने थोड़ी देर के लिए MongoMapper का उपयोग किया है, लेकिन MongoId पर माइग्रेट करने का निर्णय लिया है। कारण छिपा हुआ है और उपयोगकर्ताओं के प्रति अहंकार है। मुझे खीरे के साथ Mongoapper काम करने के लिए हुप्स के माध्यम से कूदना पड़ा (अंत में सफल हुआ) और कुछ पैच लगाने के लिए भी परियोजना सरल थी, लेकिन यह बात नहीं है। जब मैंने बग फिक्स (ActiveRecord के साथ असंगति के कारण) प्रस्तुत करने की कोशिश की, तो वे प्रतीत होते हैं कि मुझे एक समस्या मिली और मुझे चारों ओर से धक्का दिया गया। जब मैं परीक्षण कर रहा था, मुझे उनके क्वेरी कार्यान्वयन के साथ एक प्रमुख बग का भी सामना करना पड़ा, जबकि उनका परीक्षण इस तरह से ट्यून किया गया था कि परीक्षण पास हो जाएं। मेरे पिछले अनुभव के बाद, इसे प्रस्तुत करने की हिम्मत नहीं हुई।
उनके पास MongoId की तुलना में पुल अनुरोधों और बग / फ़ीचर सबमिशन की संख्या काफी कम है, यानी समुदाय की भागीदारी बहुत कम है। मेरा जैसा अनुभव?
मुझे नहीं पता कि अभी और कौन सी सुविधाएँ हैं, लेकिन मैं Mongoapp में बहुत भविष्य नहीं देखता। मैं मुद्दों को ठीक करने और खुद की कार्यक्षमता को जोड़ने में कोई आपत्ति नहीं करता, लेकिन जब वे बग को ठीक नहीं करेंगे, तो मैं उन स्थितियों को ध्यान में रखूंगा।
मैं पिछले कुछ हफ्तों से दोनों का उपयोग कर रहा हूं। Mongomapper के संबंधपरक संघों (गैर-एम्बेडेड) के लिए बेहतर समर्थन है और तीसरे पक्ष का अधिक से अधिक समर्थन है। मोंगॉयड के पास बेहतर क्वेरी समर्थन है, बहुत बेहतर प्रलेखन (एमएम के पास कोई नहीं है, हालांकि एक वेबसाइट माना जाता है), रेल 3 समर्थन (और इस प्रकार डेइस समर्थन) और Google समूह पर थोड़ा अधिक सक्रिय समुदाय है।
मैंने मोंगॉयड के साथ जाना समाप्त कर दिया।
मतभेद
MongoMapper
Mongoid
समानताएँ
विन्यास
MongoMapper
defaults: &defaults
host: 127.0.0.1
port: 27017
development:
database: database_name
Mongoid
development:
sessions:
default:
database: database_name
hosts:
- 127.0.0.1:27017
3 पार्टी पुस्तकालय
दोनों पक्षों ने तीसरे पक्ष के बेहतर समर्थन का दावा किया है। Github निम्नलिखित का खुलासा करता है:
विशेष रूप से, Devise MongoMapper का समर्थन नहीं करता है।
गतिविधि करें
पिछले वर्ष की तुलना में, ऐसा लग रहा है कि MongoMapper की तुलना में Mongoid को नियमित रूप से बनाए रखा और अद्यतन किया गया है।
MongoMapper
Mongoid
एक अंतर मैंने पाया है कि update_attribute
MongoMapper में पूरे दस्तावेज़ लिखने के लिए प्रकट होता है, चाहे जो भी विशेषता वास्तव में बदल गई हो। Mongoid में यह केवल परिवर्तित विशेषताओं को लिखता है। यह बड़े रिकॉर्ड के लिए एक महत्वपूर्ण प्रदर्शन मुद्दा हो सकता है। यह एम्बेडेड दस्तावेजों (यहाँ labels
) के लिए विशेष रूप से सच है , उदाहरण के लिए
profile = Profile.find(params[:id])
label = profile.labels.find_or_create_by(idx: params[:idx])
# MongoMapper doesn't have find_or_create_by for embedded docs
# -- you'll have to write custom code
profile.save
ऑन save
, MongoMapper पूरे profile
रिकॉर्ड को बचाएगा , लेकिन MongoId $set
ऑपरेटर तर्क का उपयोग करेगा केवल लेबल को परिवर्तित करने के लिए अद्यतन करेगा।
एक और मुद्दा चयन कर रहा है कि किन क्षेत्रों में वापसी करनी है। दोनों एक only
कसौटी का समर्थन करते हैं , लेकिन मोंगॉयड एक without
कसौटी का भी समर्थन करता है , जो मूल रूप से मानगो द्वारा समर्थित है।
यह मेरे लिए प्रतीत होता है कि मोंगॉयड सिर्फ "गोल" है और इसके एपीआई में पूर्ण है, जो शायद समझाता है कि यह एक बड़ा कोड आधार है। यह बेहतर प्रलेखित भी प्रतीत होता है।
क्या आपने mongo_ext स्थापित किया है? मुझे लगता है कि प्रदर्शन मैपर की तुलना में ड्राइवर से अधिक संबंधित है। जब मैंगो लॉग को देख रहा हूं, तो मैं विस्तार के बिना देख सकता हूं, कि ट्रांसजर में कुछ अंतराल है।
जैसा कि वे monogdb साइट पर सलाह देते हैं, केवल उन फ़ील्ड्स का चयन करें, जिनकी आपको ज़रूरत है।
mongo_ext
अब इसकी आवश्यकता नहीं है और इसे मूल mongo
रत्न में रोल किया गया है ।
क्या पिछले हफ्ते MongoMapper के साथ कुछ परीक्षण किया गया था, यह स्थिर था लेकिन मुझे क्वेरी इंटरफ़ेस थोड़ा सीमित मिला (कुछ AR तर्क भी विचित्र था), आज Mongoid में बदल गया और इसका उपयोग करना बेहतर लगता है - और अधिक सहज ज्ञान युक्त यदि आप उपयोग किए जाते हैं से ए.आर.
अभी तक कोई गति निष्कर्ष नहीं - लेकिन स्विच ओवर पीड़ारहित था - यह रेल 3 के साथ भी काम करता है।
यदि आप Rails3 का उपयोग कर रहे हैं, तो मैं Mongoid की सिफारिश करूंगा - यह भी वर्गों को जारी रखने के लिए "निहित" के बजाय "शामिल" का उपयोग करता है - दृढ़ता को जोड़ने के लिए रूबी में "शामिल" का उपयोग बेहतर प्रतिमान है। डिगोइड मेरे लिए डेविस के साथ ठीक काम करता है।
प्रदर्शन में सुधार करने के लिए, निम्न-स्तरीय पहुंच का चयन करने का प्रयास करें, जैसे मोपेड - मैंने इसे 10x तक तेजी से देखा है
मैंने उन दोनों का उपयोग किया और वे कार्यक्षमता में बराबरी करने वाले हैं, लेकिन यह कोड आँकड़े देखें
ऐसा लगता है कि MongoMapper में कोड की बेहतर गुणवत्ता है (यदि यह कम के साथ भी ऐसा ही करता है)।
आप इस आंकड़े की गणना खुद से कर सकते हैं, यहां विश्लेषक https://github.com/alexeypetrushin/code_stats
मुझे लगता है कि कॉन्फ़िगरेशन और मैपिंग में मोंगॉयड बहुत बेहतर है।
मुझे उम्मीद है कि प्रदर्शन वैसा ही होगा, पिछली बार जब मैंने देखा कि MongoMapper के पास रेल 3 सपोर्ट की कमी है - तो मैं अब Mongoid देख रहा हूं।
sudo gem install mongo_ext
प्रदर्शन करने के लिए महत्वपूर्ण है।
MongoDB कच्ची गति के मामले में CouchDB को उड़ा देता है - हालांकि सीडीबी के अपने फायदे का एक सेट है।
बेंचमार्क: http://www.snailinaturtleneck.com/blog/?p=74
mongo_ext
अब इसकी आवश्यकता नहीं है और इसे मूल mongo
रत्न में रोल किया गया है ।
डेविस ने MongoMapper का समर्थन नहीं किया, और मैं भी रेल 3 तरीके से आगे बढ़ना पसंद करता हूं। इसलिए मैं मूंगॉयड में चला गया।
Mongoid Rails3 के साथ एक पूर्ण समर्थन कर रहा है और पहचान मानचित्र सुविधा है।
अधिक दस्तावेज http://mongoid.org पर है
यहां प्रदर्शन देखें http://mongoid.org/performance.html
मुझे आशा है कि नीचे दिए गए बिंदु उपरोक्त उत्तरों में मूल्य जोड़ते हैं।
1.मॉंगॉयड पूरी तरह से रेल 3 संगत है, और सभी जगह (सत्यापन, क्रमांकन, आदि) में एक्टिवमॉडल का उपयोग करता है, जहां MongoMapper अभी भी रेल 2 पर केंद्रित है और इसके सत्यापन के लिए वैध रत्न का उपयोग करता है।
2.Mongoid आधिकारिक तौर पर रूबी 1.8.7, 1.9.1, और 1.9.2 सिर पर समर्थन और काम करता है।
3. मेनॉइड आंतरिक रूप से पदानुक्रम के किसी भी क्षेत्र पर MongoDB परमाणु संचालन करते हुए, अधिक मजबूती से एम्बेडेड दस्तावेजों का समर्थन करता है। ($ सेट, $ पुश, $ पुल, आदि)। एमएम के साथ आपको इन कार्यों को करने के लिए स्पष्ट रूप से बताने की आवश्यकता है।
4.मोंगमोमैपर में बेहतर संबंधपरक सहयोग है और यह डिफ़ॉल्ट रूप से काम करता है।
5.मोंगमोअपर अधिक एक्स्टेंसिबल है, एक प्लगइन आर्किटेक्चर के साथ जो लोगों के लिए इसे अपने पुस्तकालयों के साथ विस्तारित करना बहुत आसान बनाता है। Mongoid के पास यह नहीं है।
6.MM पहचान मानचित्रों का समर्थन करता है, Mongoid नहीं करता है।
7.MM में एक बड़ा समुदाय है, और शायद अधिक 3 पार्टी पुस्तकालय समर्थन है। मैं प्रलेखन और rdoc पर पागल हो गया।
8.मोंगॉयड मास्टर / स्लेव प्रतिकृति समूहों का समर्थन करता है। (मास्टर को लिखता है, राउंड रॉबिन दासों को पढ़ता है) एमएम नहीं करता है।
9.Mongoid में एक अत्यंत समृद्ध AREL शैली मानदंड API है, MM AR2 शैली खोजक का उपयोग करता है।