गैर-अवरोधक ORM समस्याएँ


9

मैंने SO पर एक प्रश्न पूछा , और पाया कि मेरे पसंदीदा वेब फ्रेमवर्क के लिए कोई गैर-अवरोधक ORM नहीं हैं। गैर-अवरोधन से मेरा मतलब है कि अतुल्यकालिक पुनर्प्राप्ति के लिए कॉलबैक समर्थन के साथ एक ओआरएम। ओआरएम को कॉलबैक या कुछ ऐसे निष्पादित किया जाएगा जब डेटा प्राप्त किया गया हो।

मैं एक बनाना चाहता हूं, लेकिन मेरे कुछ सवाल हैं जो मुझे विकास शुरू करने से रोक रहे हैं:

  • ओआरएम विकसित करते समय किन मुद्दों का सामना करना पड़ सकता है?
  • गैर-अवरुद्ध पुनर्प्राप्ति का समर्थन नाटकीय रूप से एक ORM की जटिलता को बढ़ाता है?
  • आसपास कुछ गैर-अवरुद्ध ORM क्यों हैं?

अपडेट: ऐसा लगता है कि मुझे अपना प्रश्न सुधारना है। हमारे पास ऐसे समाधान हैं जो पहले से ही हमें गैर-अवरुद्ध तरीके से डेटा प्राप्त करने की अनुमति देते हैं, और मेरा मानना ​​है कि ऐसे समाधान का उपयोग करने वाली अधिकांश कंपनियां कच्चे एसक्यूएल का उपयोग करती हैं। हम एक और अधिक सामान्य समाधान बनाना चाहते हैं जिसे हम भविष्य की परियोजनाओं में पुन: उपयोग कर सकते हैं। हमें किन कठिनाइयों का सामना करना पड़ सकता है?

अद्यतन 2: पसंदीदा भाषा अजगर है, लेकिन मुझे सिद्धांतों में दिलचस्पी है। यह प्रश्न वास्तव में मेरे लिए है, क्योंकि मैं उन प्लेटफार्मों को देखूंगा जिनमें पहले से ही गैर-अवरोधक ओआरएम है।


2
"नॉन-ब्लॉकिंग ओआरएम" क्या है? आप डेटा प्राप्त करने से पहले उसे कैसे प्रदर्शित कर सकते हैं ?
रॉबर्ट हार्वे

6
@ रोबर्टहवे: अतुल्यकालिक पुनर्प्राप्ति वास्तव में बहुत अच्छा लगता है। डेटा प्राप्त होने पर ORM को कॉलबैक या कुछ इस तरह "सक्रिय" किया जाएगा। अन्यथा आपके ओआरएम को यूआई जवाबदेही की गारंटी के लिए एक अलग थ्रेड में विभाजित होने की आवश्यकता है।
मार्जन वेनेमा

@MarjanVenema, हाँ, मुझे कॉलबैक समर्थन के साथ ORM चाहिए।
निकोले फोमिनीह

1
तो क्यों नहीं अपने पसंदीदा तुल्यकालिक ORM के साथ अतुल्यकालिक कॉलबैक का उपयोग करें? stackoverflow.com/q/1239035
रॉबर्ट हार्वे

@RobertHarvey, क्योंकि सिंक्रोनस ORM एसिंक्रोनस सर्वर को ब्लॉक करता है।
निकोले फोमिनीह

जवाबों:


2

ओआरएम विकसित करते समय किन मुद्दों का सामना करना पड़ सकता है?

आपको ऑब्जेक्ट रिलेशनल इम्पीडेंस मिसमैच को पुल करने के लिए आवश्यक मुद्दों की लॉन्ड्री सूची को संबोधित करने की आवश्यकता होगी , साथ ही प्रत्येक आरडीबीएमएस विक्रेता द्वारा प्रदान की गई एसक्यूएल की idiosyncrasies से निपटना होगा। आपकी आवश्यकताओं को जितना अधिक उन्नत किया जाएगा, इस विभाग में आपकी परेशानियां उतनी ही बदतर होंगी: उदाहरण के लिए, SQL जो आप परिणाम को लागू करने के लिए उत्पन्न करते हैं, वे Oracle, SQL Server और mysql के बीच नाटकीय रूप से भिन्न होंगे। सौभाग्य से, यह ओआरएम कार्यान्वयन को अवरुद्ध करने और गैर-अवरुद्ध करने के बीच अलग नहीं है, इसलिए यदि पायथन के लिए एक ओपन-सोर्स ओआरएम है, तो आप इन सभी मुद्दों को दूर करने के लिए इससे भारी उधार ले पाएंगे।

गैर-अवरुद्ध पुनर्प्राप्ति का समर्थन नाटकीय रूप से एक ORM की जटिलता को बढ़ाता है?

सबसे बड़ा मुद्दा जो आप सामना करने जा रहे हैं, वह यह है कि RDBMS तक पहुँचने के लिए कनेक्शन लाइब्रेरी स्वयं अवरुद्ध हो जाएगी। यह एक और अंतर है जिसे आपको संबोधित करना होगा। अपने उपयोगकर्ताओं के लिए अदृश्य थ्रेड्स को प्रबंधित करना आपके लिए अतिरिक्त चुनौती होगी। इसके अलावा, मांग पर निर्भरता को लोड करना एक चुनौती होगी, क्योंकि ऑपरेशन को आपके ढांचे के उपयोगकर्ताओं द्वारा तुल्यकालिक माना जाता है: आखिरकार, जब वे अपने ऑब्जेक्ट की संग्रह संपत्ति तक पहुंचने के लिए ठीक होते हैं, तो वे आमतौर पर एक अधिसूचना की उम्मीद नहीं करते हैं।

आसपास कुछ गैर-अवरुद्ध ORM क्यों हैं?

मैं केवल इस अंतिम बिंदु पर अटकलें लगा सकता हूं, लेकिन मुझे लगता है कि इस तरह के ढांचे की कम मांग के साथ करना है: चूंकि आप आवश्यकतानुसार अपने एप्लिकेशन कोड में थ्रेडिंग का एक और स्तर जोड़कर गैर-अवरोधक ORM का आंशिक रूप से अनुकरण कर सकते हैं और नियमित रूप से अवरुद्ध रख सकते हैं हर जगह की तरह, इसके लिए एक विशेष ढांचा विकसित करने के लिए सबप्टिमल प्रतीत होगा।


यकीन नहीं, अगर इस सवाल पर जवाब बेहतर हो सकता है। धन्यवाद।
निकोले फोमिनाह

6

आपने यह नहीं कहा कि आप किस भाषा का उपयोग कर रहे हैं, इसलिए मैं Node.js की सिफारिश करने जा रहा हूं, और इसके लिए एक ORM: नोड ORM , नोड में सब कुछ async है, यह अलग नहीं है।


प्रश्न अपडेट किया गया।
निकोले फोमिनीह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.