27

मैंने पहले स्प्रिंग डेटा का उपयोग नहीं किया है, लेकिन मैंने MySQL आधारित एप्लिकेशन के लिए कई बार हाइबरनेट ओआरएम का उपयोग किया है। मैं समझ नहीं पा रहा हूं कि मोंगोडीबी आधारित आवेदन के लिए दोनों के बीच कौन सा ढांचा चुनना है।मोंगोडीबी के लिए स्प्रिंग डेटा मोंगोडीबी और हाइबरनेट ओजीएम के बीच क्या अंतर है?

मैंने जवाब खोजने की कोशिश की है, लेकिन मुझे जवाब नहीं मिल रहा है जो उत्पादन वातावरण में दोनों के बीच तुलना करता है। क्या किसी को मोंगोडीबी के साथ इन दो ढांचे के साथ काम करने में समस्याएं मिली हैं?

उत्तर

39

अस्वीकरण: मैं वसंत डाटा परियोजना का नेतृत्व कर रहा हूँ, इसलिए मैं ज्यादातर यहाँ चीजों की स्प्रिंग डाटा पक्ष कवर करेंगे:

मुझे लगता है कि दो परियोजनाओं के बीच कोर भेद पहली कि हाइबरनेट OGM टीम चुना जेपीए के आसपास अपने प्रयासों को केन्द्रित करने के लिए, जबकि स्प्रिंग डेटा टीम ने स्पष्ट रूप से नहीं किया था। कारण निम्नानुसार हैं:

  • जेपीए एक स्वाभाविक रूप से संबंधपरक API है। Spec स्थिति के पहले दो वाक्य, कि यह ऑब्जेक्ट-रिलेशनल मैपिंग के लिए एक एपीआई है। यह एपीआई के मूल विषयों में भी शामिल है: यह टेबल, कॉलम, जॉइन, लेनदेन के बारे में बात करता है। अवधारणाएं जो नोएसक्यूएल दुनिया में आवश्यक रूप से हस्तांतरणीय नहीं हैं।
  • आप आमतौर पर इसके विशेष लक्षणों के कारण नोएसक्यूएल स्टोर चुनते हैं (उदाहरण के लिए मोंगोडीबी पर भू-स्थानिक प्रश्न, नियो 4j के लिए ग्राफ़ ट्रैवर्सल निष्पादित करने में सक्षम होने के कारण)। उनमें से कोई भी जेपीए में उपलब्ध नहीं है (और होगा), इसलिए आपको वैसे भी मालिकाना एक्सटेंशन प्रदान करना होगा।
  • इससे भी बदतर, जेपीए अवधारणाओं को प्रस्तुत करता है जो उपयोगकर्ताओं को गलत दिशाओं में मार्गदर्शन करेंगे यदि वे उन्हें नोएएसक्यूएल स्टोर पर काम करने के लिए मानते हैं जैसे कि उन्हें जेपीए में परिभाषित किया गया था: मोंगोडीबी के शीर्ष पर लेनदेन रोलबैक को उचित रूप से कैसे लागू किया जाना चाहिए? आप प्राप्त आप अच्छी तरह से ज्ञात टेम्पलेट कार्यान्वयन मिलता है,:

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

+3

वसंत डेटा यह है :) ... प्यार सामान्य रूप से वसंत के साथ काम कर रहा है ... मेरे प्रश्न का उत्तर देने के लिए धन्यवाद। – hajime

13

अस्वीकरण: मैं हाइबरनेट ओजीएम डेवलपर्स में से एक हूं इसलिए मैं इसके पीछे कुछ कारण प्रदान करने की कोशिश करूंगा।

हाइबरनेट ओजीएम नोएसक्यूएल समाधान के लिए जावा पर्सिस्टेंस (जेपीए) समर्थन प्रदान करता है। यह हाइबरनेट ओआरएम इंजन का पुन: उपयोग करता है लेकिन एक संबंधपरक डेटाबेस के बजाय इकाइयों को नोएसक्यूएल डेटास्टोर में बना देता है। इसका उद्देश्य विशिष्ट डेटास्टोर सुविधाओं तक पहुंच प्रदान करना है जब जेपीए के पास फिट नहीं है।

यह दृष्टिकोण कई कारणों से दिलचस्प है:

  • अर्थ और एपीआई जाना जाता है। जावा डेवलपर्स जेपीए से पहले ही परिचित हैं, इसका मतलब है कि किसी को निम्न स्तर एपीआई सीखना नहीं होगा। यह एचक्यूएल और देशी बैकएंड-प्रश्न दोनों का भी समर्थन करता है।

  • देर से बैकएंड विकल्प। सही NoSQL डेटास्टोर चुनना तुच्छ नहीं है। हाइबरनेट ओजीएम के साथ आपको एक विशिष्ट नोएसक्यूएल समाधान पर प्रतिबद्ध नहीं होना पड़ेगा और आप आसानी से विभिन्न बैकएंड स्विच और परीक्षण करने में सक्षम होंगे।

  • मौजूदा उपकरण और पुस्तकालय। जेपीए और हाइबरनेट ओआरएम थोड़ी देर के लिए आसपास रहे हैं और आप उन पुस्तकालयों और औजारों का पुन: उपयोग करने में सक्षम होंगे जो नीचे उनका उपयोग करते हैं।

  • अधिकांश जेपीए लॉजिकल मॉडल फिट बैठता है। एक अच्छा फिट का एक उदाहरण @Embedded, @EmbeddedCollection और @Entity (जो पसंद के डेटास्टोर पर आधारित नोड, दस्तावेज़ या कैश हो सकता है)। माना जाता है कि, एनोटेशन नाम अजीब हो सकते हैं क्योंकि आपको @Table और @Column से निपटना होगा।

  • जेपीए ऑब्जेक्ट स्तर पर दृढ़ता को सारणीबद्ध करता है, जिससे कई चाल और अनुकूलन के लिए जगह छोड़ दी जाती है। हमारे पास बहु विचारों की योजना बनाई गई है, जैसे पॉलीग्लोट दृढ़ता: कई डेटा स्टोर्स में डेटा संग्रहित करना और विशिष्ट पढ़ने के लिए सबसे अच्छा उपयोग करना।

मुख्य दोष यह है कि जेपीए की कुछ अवधारणाओं को आसानी से नोएसक्यूएल दुनिया में मैप नहीं किया जाता है: उदाहरण के लिए लेनदेन। जबकि आपके पास लेनदेन की सीमा विधियों तक पहुंच होगी, आप उन डेटा स्टोर्स पर रोलबैक नहीं कर पाएंगे जो लेनदेन का समर्थन नहीं करते हैं (लेनदेन, इस मामले में, समूह संचालन के लिए उपयोग किया जाएगा और कॉल की संख्या को अनुकूलित करने का प्रयास किया जाएगा डीबी)।

इसके अलावा, यदि आपका डेटासेट प्रकृति गैर डोमेन मॉडल केंद्रित है, तो हाइबरनेट ओजीएम आपके लिए नहीं है।

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