ऑब्जेक्ट-रिलेशनल मैपिंग

कंप्यूटर साइंस में ऑब्जेक्ट-रिलेशनल मैपिंग (ORM, O/RM, और O/R मैपिंग टूल) एक रिलेशनल डेटाबेस और ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज के ढेर के बीच डेटा को परिवर्तित करने के लिए एक कंप्यूटर प्रोग्रामिंग तकनीक है। यह वस्तुतः एक वर्चुअल वस्तु डेटाबेस बनाता है जिसका उपयोग प्रोग्रामिंग भाषा के भीतर से किया जा सकता है।

वस्तु के उन्मुख प्रोग्रामिंग में, डेटा प्रबंधन | डेटा-प्रबंधन कार्य ऑब्जेक्ट (कंप्यूटर विज्ञान) पर कार्य करते हैं जो अदिश (कम्प्यूटिंग) मानों को ऑब्जेक्ट में जोड़ते हैं। उदाहरण के लिए, एक पता पुस्तिका प्रविष्टि पर विचार करें जो शून्य या अधिक फ़ोन नंबरों और शून्य या अधिक पतों के साथ एक व्यक्ति का प्रतिनिधित्व करती है। यह एक वस्तु-उन्मुख कार्यान्वयन में एक व्यक्ति वस्तु (कंप्यूटर विज्ञान) द्वारा एक विशेषता (कंप्यूटिंग) के साथ तैयार किया जा सकता है। प्रत्येक डेटा आइटम को रखने के लिए विशेषता/फ़ील्ड जिसमें प्रविष्टि शामिल है: व्यक्ति का नाम, फ़ोन नंबरों की एक सूची, और एक पतों की सूची। फ़ोन नंबरों की सूची में फ़ोननंबर ऑब्जेक्ट आदि शामिल होंगे। ऐसी प्रत्येक पता-पुस्तिका प्रविष्टि को प्रोग्रामिंग भाषा द्वारा एकल वस्तु के रूप में माना जाता है (उदाहरण के लिए, ऑब्जेक्ट के लिए सूचक वाले एकल चर द्वारा इसे संदर्भित किया जा सकता है)। विभिन्न तरीकों (कंप्यूटर प्रोग्रामिंग) को ऑब्जेक्ट से जोड़ा जा सकता है, जैसे पसंदीदा फोन नंबर वापस करने के तरीके, घर का पता, और इसी तरह।

इसके विपरीत, संबंधपरक डेटाबेस, जैसे SQL, समूह स्केलर्स को टुपल्स में, जो तब तालिका (डेटाबेस) में गणना किए जाते हैं। टुपल्स और ऑब्जेक्ट्स में कुछ सामान्य समानता है, जिसमें वे दोनों नामित क्षेत्रों में मूल्यों को इकट्ठा करने के तरीके हैं, जैसे कि पूरे संग्रह को एक मिश्रित इकाई के रूप में हेरफेर किया जा सकता है। उनमें कई अंतर हैं, हालांकि, विशेष रूप से: जीवनचक्र प्रबंधन (पंक्ति प्रविष्टि और विलोपन, बनाम Garbage_collection_(कंप्यूटर_साइंस) या संदर्भ गणना), अन्य संस्थाओं के संदर्भ (ऑब्जेक्ट संदर्भ, बनाम विदेशी कुंजी संदर्भ), और वंशानुक्रम (रिलेशनल में गैर-मौजूद) डेटाबेस)। साथ ही, वस्तुओं को ढेर पर प्रबंधित किया जाता है और एक ही प्रक्रिया के पूर्ण नियंत्रण में हैं, जबकि डेटाबेस टुपल्स साझा किए जाते हैं और इसमें लॉकिंग, विलय और पुनः प्रयास शामिल होना चाहिए। ऑब्जेक्ट-रिलेशनल मैपिंग इन सभी अंतरों को ध्यान में रखते हुए, ऑब्जेक्ट्स और बैक पर मैपिंग टुपल्स के लिए स्वचालित समर्थन प्रदान करता है। समस्या के दिल में वस्तुओं के तार्किक प्रतिनिधित्व को परमाणु रूप में अनुवाद करना शामिल है जो वस्तुओं के गुणों और उनके संबंधों को संरक्षित करते हुए डेटाबेस में संग्रहीत करने में सक्षम है ताकि जरूरत पड़ने पर उन्हें वस्तुओं के रूप में पुनः लोड किया जा सके। यदि यह भंडारण और पुनर्प्राप्ति कार्यक्षमता लागू की जाती है, तो वस्तुओं को दृढ़ता (कंप्यूटर विज्ञान) कहा जाता है।

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

निम्नलिखित एक सरल उदाहरण है, जिसे C Sharp (प्रोग्रामिंग लैंग्वेज) | C# कोड में लिखा गया है, डेटाबेस इंजन का उपयोग करके SQL में लिखी गई क्वेरी को निष्पादित करने के लिए।

<वाक्यविन्यास प्रकाश लैंग = csharp> var sql = सेलेक्ट आईडी, फर्स्ट_नाम, लास्ट_नाम, फोन, जन्म_तिथि, लिंग, व्यक्तियों से आयु जहां आईडी = 10; var परिणाम = संदर्भ। व्यक्ति। FromSqlRaw (एसक्यूएल)। ToList ; वर नाम = परिणाम [0] [first_name]; 

इसके विपरीत, निम्नलिखित एक ओआरएम-जॉब एपीआई का उपयोग करता है जो कोड लिखना संभव बनाता है जो स्वाभाविक रूप से भाषा की विशेषताओं का उपयोग करता है।

<वाक्यविन्यास प्रकाश लैंग = csharp> var व्यक्ति = रिपॉजिटरी। गेटपर्सन (10); var firstName = person.GetFirstName ; 

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

<वाक्यविन्यास प्रकाश लैंग = csharp> var व्यक्ति = व्यक्ति। प्राप्त करें (10); 

आमतौर पर, फ्रेमवर्क स्टोरेज बेस के सबसेट को एक्सेस करने और संशोधित करने के लिए कुछ फ़िल्टरिंग और क्वेरीिंग कार्यक्षमता को उजागर करेगा। नीचे दिया गया कोड डेटाबेस में उन लोगों के लिए पूछताछ करता है जिनकी आईडी वैल्यू '10' है।

<वाक्यविन्यास प्रकाश लैंग = csharp> var व्यक्ति = व्यक्ति। प्राप्त करें (व्यक्ति। गुण। आईडी == 10); 

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

वस्तु-उन्मुख डेटाबेस
एक अन्य दृष्टिकोण ऑब्जेक्ट डेटाबेस | ऑब्जेक्ट-ओरिएंटेड डेटाबेस मैनेजमेंट सिस्टम (OODBMS) या दस्तावेज़-उन्मुख डेटाबेस जैसे मूल XML डेटाबेस का उपयोग करना है जो डेटा मॉडलिंग में अधिक लचीलापन प्रदान करते हैं। OODBMS विशेष रूप से वस्तु-उन्मुख मूल्यों के साथ काम करने के लिए डिज़ाइन किए गए डेटाबेस हैं। एक OODBMS का उपयोग करने से डेटा को उसके SQL रूप से और उसके SQL रूप में परिवर्तित करने की आवश्यकता समाप्त हो जाती है, क्योंकि डेटा को उसके मूल वस्तु प्रतिनिधित्व में संग्रहीत किया जाता है और जंक्शन तालिका/संचालन की आवश्यकता के बजाय संबंधों को सीधे दर्शाया जाता है। दस्तावेज़-उन्मुख डेटाबेस के लिए ORM के समतुल्य को ऑब्जेक्ट-दस्तावेज़ मैपर (ODM) कहा जाता है।

दस्तावेज़-उन्मुख डेटाबेस भी उपयोगकर्ता को वस्तुओं को तालिका पंक्तियों में श्रेड करने से रोकते हैं। इनमें से कई प्रणालियाँ डेटासेट को पुनः प्राप्त करने के लिए XQuery क्वेरी भाषा का भी समर्थन करती हैं।

वस्तु-उन्मुख डेटाबेस का उपयोग जटिल, आला अनुप्रयोगों में किया जाता है। ओओडीबीएमएस का उपयोग करने के खिलाफ तर्कों में से एक यह है कि यह विज्ञापन-प्रसार, एप्लिकेशन-स्वतंत्र प्रश्नों को निष्पादित करने में सक्षम नहीं हो सकता है। इस कारण से, कई प्रोग्रामर ऑब्जेक्ट-एसक्यूएल मैपिंग सिस्टम के साथ खुद को घर पर अधिक पाते हैं, भले ही अधिकांश ऑब्जेक्ट-ओरिएंटेड डेटाबेस एसक्यूएल प्रश्नों को सीमित सीमा तक संसाधित करने में सक्षम हों। अन्य OODBMS प्रसिद्ध क्वेरी पैटर्न को संरक्षित करते हुए, तदर्थ प्रश्नों की आवश्यकता को संबोधित करने के साधन के रूप में, SQL डेटाबेस को प्रतिकृति प्रदान करते हैं।

चुनौतियां
ऑब्जेक्ट सिस्टम को रिलेशनल डेटाबेस से कैसे मिलान किया जाए, इस पर विचार करते समय कई तरह की कठिनाइयाँ आती हैं। इन कठिनाइयों को वस्तु-संबंधपरक प्रतिबाधा बेमेल के रूप में संदर्भित किया जाता है। ओआरएम को लागू करने का एक विकल्प हर प्रमुख डेटाबेस के साथ प्रदान की जाने वाली मूल प्रक्रियात्मक भाषाओं का उपयोग है। इन्हें SQL कथनों का उपयोग करके क्लाइंट से कॉल किया जा सकता है। डेटा एक्सेस ऑब्जेक्ट (DAO) डिज़ाइन पैटर्न का उपयोग इन कथनों को अमूर्त करने के लिए किया जाता है और शेष एप्लिकेशन के लिए एक हल्का ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है।

यह भी देखें

 * ऑब्जेक्ट-रिलेशनल मैपिंग सॉफ्टवेयर की सूची
 * ऑब्जेक्ट-रिलेशनल मैपिंग सॉफ्टवेयर की तुलना
 * AutoFetch - स्वचालित क्वेरी ट्यूनिंग
 * कॉमन ऑब्जेक्ट रिक्वेस्ट ब्रोकर आर्किटेक्चर (कॉरबा)
 * ऑब्जेक्ट डेटाबेस
 * वस्तु दृढ़ता
 * ऑब्जेक्ट-रिलेशनल डेटाबेस
 * वस्तु-संबंधपरक प्रतिबाधा बेमेल
 * संबंधपरक मॉडल
 * एसक्यूएल (संरचित क्वेरी भाषा)
 * जावा डेटा ऑब्जेक्ट्स
 * सेवा डेटा ऑब्जेक्ट
 * इकाई की रूपरेखा
 * सक्रिय रिकॉर्ड पैटर्न
 * डेटा मैपर पैटर्न
 * सिंगल टेबल इनहेरिटेंस

बाहरी संबंध

 * About ORM by Anders Hejlsberg
 * Mapping Objects to Relational Databases: O/R Mapping In Detail by Scott W. Ambler