आपका मार्गदर्शक सिद्धांत खुद को दोहराना नहीं होना चाहिए :
सॉफ्टवेयर इंजीनियरिंग में, डोंट रिपिट योरसेल्फ (DRY) सॉफ्टवेयर डेवलपमेंट का एक सिद्धांत है, जिसका उद्देश्य सभी प्रकार की सूचनाओं की पुनरावृत्ति को कम करना है, विशेष रूप से मल्टी-टियर आर्किटेक्चर में उपयोगी है। DRY सिद्धांत के रूप में कहा गया है "ज्ञान के हर टुकड़े में एक प्रणाली के भीतर एक एकल, अस्पष्ट, आधिकारिक प्रतिनिधित्व होना चाहिए।"
ORM अनिवार्य रूप से एक अतिरिक्त लेयर है (या यदि आप चाहें तो टियर), आपके एप्लिकेशन और आपके डेटा स्टोरेज (s) के बीच में आराम से बैठे हैं। आपकी अड़चनें एक ही स्थान पर होनी चाहिए, और एक ही जगह हो, यह ओआरएम या डेटा स्टोरेज हो, अन्यथा बहुत जल्द आप उनमें से विभिन्न संस्करणों को बनाए रखेंगे। आप वास्तव में ऐसा नहीं करना चाहते हैं।
हालाँकि, व्यवहार में, अधिकांश आधे सभ्य ORM आपके डेटा स्कीमा से आपके मॉडल का एक बड़ा सौदा स्वचालित रूप से उत्पन्न करते हैं। हालाँकि अभी भी दोहराव है, अनुरक्षण नरक की संभावना कम से कम है क्योंकि हर बार समान पैटर्न के बाद डुप्लिकेट किए गए ORM कोड उत्पन्न होता है। कोई डुप्लिकेट कोड होना आदर्श होगा, लेकिन स्वचालित रूप से उत्पन्न बाधाएं अगली सबसे अच्छी बात है।
इसके अलावा, एक जगह पर आपके अवरोध होने का मतलब यह नहीं है कि आपके सभी अवरोध एक ही जगह पर होने चाहिए। कुछ, जैसे संदर्भात्मक अखंडता की कमी, डेटा भंडारण के लिए अधिक उपयुक्त हो सकती है (लेकिन अगर आप किसी अन्य डेटा स्टोरेज में चले जाते हैं तो खो सकते हैं), और कुछ, जो ज्यादातर जटिल व्यावसायिक तर्क के बारे में हैं, आपके ओआरएम के लिए अधिक उपयुक्त हैं। यह आपके सभी सेबों को एक ही टोकरी में रखना बेहतर होगा, लेकिन…
विफलताओं
आप ORM का उल्लेख करते हैं। यह आपके प्रश्न के लिए बिल्कुल अप्रासंगिक है, आपके आवेदन को एक इकाई के रूप में ORM और डेटा स्टोरेज के बारे में सोचना चाहिए। यदि यह विफल हो जाता है, तो यह विफल हो गया, डेटा संग्रहण से सीधे बात करने के लिए ओआरएम को दरकिनार करना एक अच्छा विचार नहीं है।
किसी और चीज के लिए ओआरएम को दरकिनार करना
इसके अलावा एक अच्छा विचार नहीं है। हालाँकि, यह कई कारणों से हो सकता है:
ओआरएम पेश किए जाने से पहले बनाए गए अनुप्रयोग के विरासत भागों।
यही कारण है कि एक कठिन एक है, और वास्तव में स्थिति मैं के साथ काम कर रहा हूँ है अभी , "रखरखाव नरक" की इसलिए मेरी लगातार दोहराने। या तो आप गैर ORM भागों को बनाए रखते हैं, या आप उन्हें ORM का उपयोग करने के लिए फिर से लिखते हैं। दूसरा विकल्प हो सकता है और अधिक समझ में शुरू में बनाने, लेकिन यह एक निर्णय है कि पूरी तरह से वास्तव में आपके आवेदन के उन हिस्सों क्या कर रहे हैं पर आधारित है, और कैसे मूल्यवान एक बार फिर से लिखने लंबे समय में किया जाएगा है।
एक बुरी तरह से डिजाइन 2 * 10 ^ 8 पंक्तियों में एक कुंजी बदलने की कोशिश करें MySQL टेबल (डाउनटाइम के बिना) और आप समझ जाएंगे कि मैं कहां से आ रहा हूं।
आवेदन के गैर विरासत भागों जो सीधे डेटा भंडारण से बात करने की जरूरत है:
छल भी। ओआरएम फैंसी उपकरण हैं, और वे लगभग हर चीज का ध्यान रखते हैं, लेकिन कभी-कभी वे बस रास्ते में मिल जाते हैं या यहां तक कि बिल्कुल बेकार हैं। Buzzword (buzzphrase वास्तव में) ऑब्जेक्ट-रिलेशनल प्रतिबाधा बेमेल है , बस इसे अपने ORM के लिए तकनीकी रूप से संभव नहीं है जो आपका रिलेशनल डेटाबेस करता है, और कुछ सामान जो वे करते हैं, उसके लिए एक महत्वपूर्ण आर्थिक दंड है।
टिप्पणियाँ
डेटा अखंडता के बिंदु से, डेटाबेस पर होना चाहिए, और आवेदन पर होना चाहिए। क्या होगा यदि आपका एप्लिकेशन वेब और डेस्कटॉप एप्लिकेशन, या मोबाइल ऐप, या वेबसेवा से एक्सेस किया गया हो? - लुइज़ दामिम
यह वह जगह है जहाँ एक अतिरिक्त परत जोड़ना बेहद मददगार होगा, और अगर हम एक वेब एप्लिकेशन के बारे में बात कर रहे हैं जो मैं एक REST API के साथ जाना चाहूंगा। इसके लिए एक अति सरल डिजाइन होगा:
ORM API और डेटा स्टोरेज के बीच में बैठा होगा, और API के पीछे सब कुछ (इसमें शामिल है) विभिन्न अनुप्रयोगों में से एक एकल इकाई माना जाएगा।