ORM के उपयोग से किस प्रकार की वेब विकास परियोजनाओं को लाभ मिलता है?


10

मैं यह कहकर शुरू करूंगा कि मैंने अपने डेटाबेस का 95% काम SQL का उपयोग करके किया है। हाल ही में, मैंने विभिन्न ORM की कुछ जांच की, जैसे NHibernate और Doctrine।

मैं बहुत SQL और डेटाबेस पोर्टेबिलिटी जो एक ORM प्रदान करता है, को जानने की आवश्यकता नहीं के फायदे देख सकते हैं। लेकिन मैं यह भी देख सकता हूं कि एसक्यूएल को जानने से ओआरएम के साथ काम करना अधिक प्रभावी हो जाएगा और मैं अपने करियर में केवल एक बार सोच सकता हूं कि एक एप्लिकेशन का सबसे बड़ा परिवर्तन डेटाबेस विक्रेता होगा।

क्योंकि मैं एसक्यूएल लिखने में बहुत सहज हूं और स्पष्ट रूप से एक ओआरएम का उपयोग करने के अक्सर सिखाया लाभों का एहसास नहीं कर रहा हूं, भारी ओआरएम उपयोगकर्ताओं के लिए मेरा सवाल यह है:

ORM का उपयोग करने से किस प्रकार की वेब विकास परियोजनाएं सबसे अधिक लाभान्वित होती हैं?


3
जवाब "उन सभी को है।" लेकिन यह शायद वह नहीं है जो आप जानना चाहते हैं। आप कुछ और विशिष्ट जानकारी पूछने के लिए अपने प्रश्न को परिष्कृत करना चाह सकते हैं।
एस.लॉट

1
मेरे लिए, एसक्यूएल वर्तमान में उत्पादन करना आसान है लेकिन यह केवल मेरे उच्चारण (या अज्ञानता) के कारण है। मैंने पढ़ा है कि ORM हमेशा सबसे अच्छा विकल्प नहीं होता है क्योंकि यह सामान्य SQL की तुलना में धीमा होता है; हालांकि, कई डेवलपर्स ने कहा है कि यह आमतौर पर महत्वपूर्ण नहीं है। मैं ज्यादातर उन परियोजनाओं के बारे में उत्सुक हूं जो ORM के लिए सबसे उपयुक्त हैं। मैं देख सकता हूं कि अधिकांश उत्तर शायद "सभी के" होंगे, और यह ठीक भी है। मैं एक विशिष्ट उत्तर की तलाश में नहीं हूं। :)
फ्रेड विल्सन

यदि आप अधिक विवरण नहीं मांगते हैं, तो आप बहुत कुछ नहीं सीख सकते हैं।
एस.लॉट

जवाबों:


5

(लगभग) सभी एप्लिकेशन ORM से लाभान्वित होते हैं।

पहले, मैं ORM के लिए आपके द्वारा सूचीबद्ध फायदे से सहमत नहीं हूँ

  • ORM का उपयोग करने का मतलब यह नहीं है कि आपको SQL जानने की आवश्यकता नहीं है। एसक्यूएल का एक ज्ञान समझने में मदद करेगा कि ओआरएम टूल वास्तव में क्या कर रहा है, जो डिबगिंग के दौरान विशेष रूप से उपयोगी है। इसके अलावा, SQL को वास्तव में जटिल प्रश्नों को विकसित करने की आवश्यकता हो सकती है जो आपके चुने हुए ORM की क्षमता से परे हैं।
  • और जैसा कि आप कहते हैं, पोर्टेबिलिटी शायद ही कभी वास्तविक जीवन में एक चिंता है।

इसके बजाय, ORM के वास्तविक लाभ हैं:

  • ORM प्रोग्रामर का समय बचाता है क्योंकि यह SQL में CRUD लॉजिक के टन को बचाता है
  • कई ORM में जटिल कैशिंग तर्क आदि शामिल होते हैं जिन्हें लिखना और डिबग करना मुश्किल होता है। समय बचाने के साथ-साथ यह आपके आवेदन की विश्वसनीयता और स्थिरता को बढ़ा सकता है (या कम से कम आपको समय बचाने के लिए आपको वही परिणाम प्राप्त करने में लगेगा)
  • सर्वश्रेष्ठ ORM के पास उपयोगकर्ताओं का एक समुदाय है जो उत्पाद को सक्रिय रूप से विकसित, रखरखाव और समर्थन करता है। कस्टम एसक्यूएल के आसपास का समुदाय, कम से कम, कुछ समस्याओं पर केंद्रित है जिन्हें हमें हल करने की आवश्यकता है।

जैसा कि आप टिप्पणी करते हैं, ओआरएम का एक नीचे की ओर प्रदर्शन का नुकसान है। हालाँकि, यह आमतौर पर अधिक हार्डवेयर खर्च करके ऑफसेट किया जा सकता है।

आमतौर पर, प्रोग्रामर का समय अधिक महंगा होता है इसलिए हार्डवेयर, इसलिए ORM हाथ से कोडिंग SQL के बजाय एक अच्छा विकल्प है।

ORM काफी सरल CRUD डेटाबेस लॉजिक के साथ तालियों के लिए सबसे अच्छा है। ORM इसके लिए कम प्रभावी है :

  • ऐसे अनुप्रयोग जिनकी डेटाबेस में बहुत कम / कोई आवश्यकता नहीं है।
  • अनुप्रयोग जो काफी हद तक जटिल प्रश्नों और बहुत कम सरल CRUD तर्क पर निर्भर हैं
  • स्थिति जहां प्रदर्शन महत्वपूर्ण है, लेकिन जहां तेजी से हार्डवेयर को तैनात करने की कोई संभावना नहीं है

मेरे अनुभव में, ये स्थितियां दुर्लभ हैं। इसलिए मेरा जवाब।


"ORM का उपयोग करने का मतलब यह नहीं है कि आपको SQL जानने की आवश्यकता नहीं है।" - सच है। टीम के माहौल में मुझे जो फायदे दिख रहे हैं, उनमें से एक यह है कि हम एसक्यूएल स्किलसेट पर ध्यान केंद्रित कर सकते हैं, ताकि बिजनेस लेयर पर काम करने वाले हर डेवलपर को एक्सपर्ट न होना पड़े।
फ्रेड विल्सन

1
जटिल प्रश्नों के लिए, आप हमेशा SQL पर वापस लौट सकते हैं और SQL क्वेरी लिख सकते हैं।
हरसिमरनब

4

मैं एसक्यूएल भी लिखने में सहज हूं। मैं किसी भी एसक्यूएल को लिखने के साथ-साथ डेटाबेस से कनेक्ट करने, डिस्कनेक्ट करने, पूलिंग आदि के बारे में चिंता न करने के लिए बहुत अधिक आरामदायक हूं।

तो .. मैं आपके प्रश्न का नकारात्मक उत्तर दूंगा। ओआरएम से लाभ न उठाने वाली एकमात्र वेब विकास परियोजनाएं एक डेटाबेस से बात नहीं कर रही हैं। मेरा मानना ​​है कि अल्पसंख्यक हैं (यदि कोई हो)।


+1: मैं खुद को sql में बहुत कुशल मानता हूं, लेकिन फिर भी OR / M पसंद करता हूं। वास्तव में मैं कहूंगा कि निश्चित रूप से आपको OR / M का अच्छा उपयोग करने के लिए sql पर एक हैंडल की आवश्यकता होगी, अन्यथा जब अमूर्त रिसाव होता है, तो आपको समस्या कभी नहीं मिलेगी। "बहुत एसक्यूएल जानने की जरूरत नहीं है" एक विशेषता नहीं है। मेरे लिए यह सब उत्पादकता लाभ के बारे में है और संकलक को समस्याओं का पता चलता है, न कि रनटाइम, और ओआर / एम (विशेष रूप से नए जेनरिक / लाइनक आधारित हैं जो उस पर बहुत अच्छे हैं)।
ब्रुक

@ बरोक - मैं तहे दिल से सहमत हूँ। OR / M का उपयोग करने का मतलब यह नहीं है कि SQL ज्ञान वैकल्पिक है।
ओट्टोवियो डेसिओ

2

मेरा प्रस्ताव है का उपयोग करते हुए कि वेब परियोजनाओं ASP.NET WebForms के साथ अपने अनुभव के आधार पर स्टेटफुल वेब चौखटे एक ORM का उपयोग करने से सबसे अधिक लाभ है।

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

आप पाइपलाइन के अंत (HTML आउटपुट) के सार को दूर करते हैं और यह स्वाभाविक रूप से शुरुआत (डेटा स्रोत) से उसी तरीके से निपटने के लिए आमंत्रित कर रहा है ताकि आप केवल एप्लिकेशन कोड में अपने व्यावसायिक तर्क के भीतर रहें।

ऐसा नहीं है कि मैं यह नहीं कह रहा हूं कि यह चीजें करने का एक अच्छा तरीका है। यह वहीं है जहां ORM स्वाभाविक रूप से फिट बैठता है।


2

उन अनुप्रयोगों में जहां आपके पास एक बड़ा, बहुत जुड़ा हुआ वस्तु मॉडल है, एक ORM आपको बार-बार एक ही जोड़ लिखने से बचाता है।

एक और लाभ आलसी लोडिंग है, जहां आप एक ऑब्जेक्ट ग्राफ को वापस करने के लिए एक एपी चाहते हैं, जहां एपीआई का ग्राहक केवल उस ग्राफ के सबसेट का उपयोग करेगा।


1

मेरा मानना ​​है कि आप एक ORM को एक DBAL के साथ भ्रमित कर रहे हैं

जिस अवधारणा का आप उल्लेख कर रहे हैं, वह एक डेटाबेस एब्स्ट्रक्शन लेयर (DBAL) है जो आपको पोर्टेबल "sql" लिखने की अनुमति देता है जो अंतर्निहित डेटाबेस सिस्टम पर निर्भर नहीं है।

एक ORM दूसरे पर (जो (लगभग) हमेशा एक DBAL के ऊपर बनाया गया है):

Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language. (विकिपीडिया)

सीधे शब्दों में कहें, एक ORM आपको एक फ्लैट डेटाबेस से डेटा को एक फुलाए गए ऑब्जेक्ट प्रतिनिधित्व में बदलने की अनुमति देता है।


स्पष्टीकरण के लिए धन्यवाद। ओआरएम पर जाने का मुख्य कारण ओओपी पर अधिक ध्यान केंद्रित करना और कुछ परियोजनाओं के लिए समझ में आने पर एसक्यूएल के रूप में ज्यादा लिखने से दूर जाना है।
फ्रेड विल्सन

1

ओआरएम से जिन परियोजनाओं को लाभ नहीं होगा वे हैं:

  • वे, जो वस्तु उन्मुख नहीं हैं;
  • लोगों, कि डेटा को बनाए रखने की जरूरत नहीं है;
  • जो, ऑब्जेक्ट-ओरिएंटेड DB का उपयोग करते हैं, इस प्रकार अतिरिक्त मैपिंग लेयर की आवश्यकता नहीं होती है;
  • जो, नो-रिलेशनल NoSQL समाधान का उपयोग करते हैं;
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.