2012-05-15 34 views
8

के लिए जावा ओआरएम का ओवरहेड क्या है, मोंगोडीबी के लिए जावा ओआरएम का उपयोग करने का ओवरहेड क्या है, या बेहतर है कि हम मूल ड्राइवर स्तर को पढ़ने या लिखने के लिए जाते हैं?MongoDB

हम अपनी आवश्यकताओं में से एक के लिए मोंगो डीबी जोड़ देंगे। others

अफ़ीम का सत्त्व पिछले संस्करण एक साल पहले की तुलना में अधिक जारी किया गया था
लेकिन वसंत डेटा सक्रिय रूप से है -

वहाँ झरने-डेटा
जावा
-morphia
के लिए जावा ORM मैपिंग टूल का जोड़ी हैं बनाए रखा। यदि मैं अभी शुरू करने वाला हूं, तो

+1

क्या ओआरएम में "आर" "संबंधपरक" के लिए खड़ा नहीं है? – duffymo

+1

हां, ऑब्जेक्ट/रिलेशनल मैपिंग के लिए इसका स्टैंड, आमतौर पर संबंधपरक डेटाबेस के साथ उपयोग किया जाता है लेकिन आम तौर पर किसी भी प्रकार के डेटाबेस के साथ उपयोग किया जा सकता है। – mtariq

+0

@duffymo इस मामले में मॉर्फिया वास्तव में * संग्रह के बीच मानचित्र संबंध करता है। रूबी रैपर के कुछ समान विशेषताएं हैं। –

उत्तर

11

ओआरएम का उपयोग प्रदर्शन को कम करता है लेकिन यह विकास को गति देता है। यहां एक व्यापार है।

ओआरएम उपकरण के लिए, मॉर्फिया सबसे स्थिर है। Here आप मॉर्फिया और बेसिक मोंगो ड्राइवर के बीच उनके प्रदर्शन से तुलना कर सकते हैं।

+2

एक बेहतर प्रदर्शन तुलना [लिंक] (https://groups.google.com/forum/?fromgroups#!topic/morphia/kGCF2I3ZKRU) – mtariq

+0

आपके उत्तर में जोड़ा गया लिंक अब और उपलब्ध नहीं है। – sakura

4

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

इसके अलावा आपको पढ़ने और लिखने के प्रदर्शन के बीच अंतर करना होगा। विशेष रूप से WriteConcern द्वारा उपयोग किए जाने वाले विशेष रूप से लिखते हैं। इस प्रकार, WriteConcern.NONE परिदृश्य में 50% का ओवरहेड क्या हो सकता है WriteConcern.SAFE के साथ आसानी से 5% से कम हो सकता है।

हां, ऑब्जेक्ट < ->DBObject मैपिंग के रूप में किसी ओडीएम कार्यान्वयन में निश्चित रूप से एक ओवरहेड है, वस्तु को निरीक्षण करना और मूल्य प्रतिबिंब के माध्यम से आमतौर पर सेट करना है। इस प्रकार एक महत्वपूर्ण बिंदु आईएमएचओ कस्टम मैन्युअल कोड किए गए कन्वर्टर्स में प्लग करने की क्षमता है जिसे आप प्रदर्शन महत्वपूर्ण वस्तुओं के लिए प्रदान करना चाहते हैं। स्प्रिंग डेटा के लिए बस एक कस्टम EntityInstantiator पंजीकृत करना जो डिफ़ॉल्ट रूप से अपना प्रतिबिंब जादू करने के बजाय new Person(…) करता है, प्रदर्शन में एक बड़ा बढ़ावा देता है।

स्प्रिंग डाटा टीम एक build अलग WriteConcern रों के खिलाफ लेखन के लिए एक ओ टी एस MongoDB उदाहरण के निर्माण भार प्रदर्शन की स्थापना की, और सादे ड्राइवर के माध्यम से पढ़ने है, MongoTemplate और खजाने अमूर्त। संख्याओं को नमक के अनाज के साथ लिया जाना चाहिए क्योंकि वे कभी-कभी टेम्पलेट्स से डेटा को तेजी से पढ़ने वाले रिपॉजिटरीज़ को दिखाते हैं, जो में कुछ बुनियादी तरीकों से बुनियादी ढांचे से प्रभावित होने के कारण है क्योंकि यह टेम्पलेट के शीर्ष पर काफी अधिक परत है लेकिन ' वास्तव में कोई कैशिंग जोड़ें।

+1

क्या आपको लगता है कि वसंत डेटा मॉर्फिया से अधिक तेज़ हो सकता है? – mtariq

+1

बेशक यह कर सकते हैं। लेकिन निश्चित रूप से मॉर्फिया स्प्रिंग डेटा से भी तेज हो सकता है। मुझे लगता है कि महत्वपूर्ण बिंदु यह है - ऊपर की रूपरेखा के रूप में - जेनेरिक मैपिंग इंफ्रास्ट्रक्चर प्रभाव प्रदर्शन को रोकने के लिए बोतल की गर्दन के रूप में आने वाले प्रकारों के लिए ऑब्जेक्ट को डीबीओब्जेक्ट मैपिंग को मैन्युअल रूप से कोड करने में सक्षम हैं। यदि आप मैपिंग दृष्टिकोण से फंस गए हैं तो अनुकूलन योग्य नहीं है, यह बुरा है। –