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

From Vigyanwiki
No edit summary
No edit summary
Line 2: Line 2:


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


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


इसके विपरीत, संबंधपरक डेटाबेस, जैसे [[SQL]], समूह स्केलर्स को टुपल्स में, जो तब [[तालिका (डेटाबेस)]] में गणना किए जाते हैं। टुपल्स और ऑब्जेक्ट्स में कुछ सामान्य समानता है, जिसमें वे दोनों नामित क्षेत्रों में मूल्यों को इकट्ठा करने के तरीके हैं, जैसे कि पूरे संग्रह को एक मिश्रित इकाई के रूप में हेरफेर किया जा सकता है। उनमें कई अंतर हैं, हालांकि, विशेष रूप से: जीवनचक्र प्रबंधन (पंक्ति प्रविष्टि और विलोपन, बनाम Garbage_collection_(कंप्यूटर_साइंस) या संदर्भ गणना), अन्य संस्थाओं के संदर्भ (ऑब्जेक्ट संदर्भ, बनाम विदेशी कुंजी संदर्भ), और वंशानुक्रम (रिलेशनल में गैर-मौजूद) डेटाबेस)। साथ ही, वस्तुओं को ढेर पर प्रबंधित किया जाता है और एक ही प्रक्रिया के पूर्ण नियंत्रण में हैं, जबकि डेटाबेस टुपल्स साझा किए जाते हैं और इसमें लॉकिंग, विलय और पुनः प्रयास शामिल होना चाहिए। ऑब्जेक्ट-रिलेशनल मैपिंग इन सभी अंतरों को ध्यान में रखते हुए, ऑब्जेक्ट्स और बैक पर मैपिंग टुपल्स के लिए स्वचालित समर्थन प्रदान करता है।<ref name=hibernate-orm-overview>
इसके विपरीत, संबंधपरक डेटाबेस, जैसे [[SQL]], समूह स्केलर्स को टुपल्स में, जो तब [[तालिका (डेटाबेस)]] में गणना किए जाते हैं। टुपल्स और ऑब्जेक्ट्स में कुछ सामान्य समानता है, जिसमें वे दोनों नामित क्षेत्रों में मूल्यों को इकट्ठा करने के तरीके हैं, जैसे कि पूरे संग्रह को मिश्रित इकाई के रूप में हेरफेर किया जा सकता है। उनमें कई अंतर हैं, हालांकि, विशेष रूप से: जीवनचक्र प्रबंधन (पंक्ति प्रविष्टि और विलोपन, बनाम Garbage_collection_(कंप्यूटर_साइंस) या संदर्भ गणना), अन्य संस्थाओं के संदर्भ (ऑब्जेक्ट संदर्भ, बनाम विदेशी कुंजी संदर्भ), और वंशानुक्रम (रिलेशनल में गैर-मौजूद) डेटाबेस)। साथ ही, वस्तुओं को ढेर पर प्रबंधित किया जाता है और ही प्रक्रिया के पूर्ण नियंत्रण में हैं, जबकि डेटाबेस टुपल्स साझा किए जाते हैं और इसमें लॉकिंग, विलय और पुनः प्रयास शामिल होना चाहिए। ऑब्जेक्ट-रिलेशनल मैपिंग इन सभी अंतरों को ध्यान में रखते हुए, ऑब्जेक्ट्स और बैक पर मैपिंग टुपल्स के लिए स्वचालित समर्थन प्रदान करता है।<ref name=hibernate-orm-overview>
{{cite web
{{cite web
|title= What is Object/Relational Mapping?
|title= What is Object/Relational Mapping?
Line 19: Line 19:


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


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


<वाक्यविन्यास प्रकाश लैंग = csharp>
<वाक्यविन्यास प्रकाश लैंग = csharp>
Line 29: Line 29:
</वाक्यविन्यास हाइलाइट>
</वाक्यविन्यास हाइलाइट>


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


<वाक्यविन्यास प्रकाश लैंग = csharp>
<वाक्यविन्यास प्रकाश लैंग = csharp>
Line 49: Line 49:


==पारंपरिक डेटा एक्सेस तकनीकों के साथ तुलना==
==पारंपरिक डेटा एक्सेस तकनीकों के साथ तुलना==
एक वस्तु-उन्मुख भाषा और एक संबंधपरक डेटाबेस के बीच आदान-प्रदान की पारंपरिक तकनीकों की तुलना में, ORM अक्सर लिखे जाने वाले कोड की मात्रा को कम कर देता है।<ref>Douglas Barry, Torsten Stanienda, "Solving the Java Object Storage Problem," Computer, vol. 31, no. 11, pp. 33-40, Nov. 1998, [http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 ], Excerpt at http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence_vs_jdbc_call-level_interface.html. Lines of code using O/R are only a fraction of those needed for a call-level interface (1:4). ''For this exercise, 496 lines of code were needed using the ODMG Java Binding compared to 1,923 lines of code using JDBC.''</ref>
वस्तु-उन्मुख भाषा और संबंधपरक डेटाबेस के बीच आदान-प्रदान की पारंपरिक तकनीकों की तुलना में, ORM अक्सर लिखे जाने वाले कोड की मात्रा को कम कर देता है।<ref>Douglas Barry, Torsten Stanienda, "Solving the Java Object Storage Problem," Computer, vol. 31, no. 11, pp. 33-40, Nov. 1998, [http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 ], Excerpt at http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence_vs_jdbc_call-level_interface.html. Lines of code using O/R are only a fraction of those needed for a call-level interface (1:4). ''For this exercise, 496 lines of code were needed using the ODMG Java Binding compared to 1,923 lines of code using JDBC.''</ref>
ओआरएम उपकरण के नुकसान आम तौर पर कार्यान्वयन कोड में वास्तव में क्या हो रहा है, इसे अस्पष्ट करने वाले [[डेटाबेस अमूर्त परत]] के उच्च स्तर से उत्पन्न होते हैं। इसके अलावा, ORM सॉफ़्टवेयर पर भारी निर्भरता को खराब डिज़ाइन किए गए डेटाबेस के उत्पादन में एक प्रमुख कारक के रूप में उद्धृत किया गया है।<ref>Josh Berkus, "Wrecking Your Database", Computer, Aug. 2009, https://www.toolbox.com/tech/data-management/blogs/wrecking-your-database-080509/</ref>
ओआरएम उपकरण के नुकसान आम तौर पर कार्यान्वयन कोड में वास्तव में क्या हो रहा है, इसे अस्पष्ट करने वाले [[डेटाबेस अमूर्त परत]] के उच्च स्तर से उत्पन्न होते हैं। इसके अलावा, ORM सॉफ़्टवेयर पर भारी निर्भरता को खराब डिज़ाइन किए गए डेटाबेस के उत्पादन में प्रमुख कारक के रूप में उद्धृत किया गया है।<ref>Josh Berkus, "Wrecking Your Database", Computer, Aug. 2009, https://www.toolbox.com/tech/data-management/blogs/wrecking-your-database-080509/</ref>




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


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


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




== चुनौतियां ==
== चुनौतियां ==
ऑब्जेक्ट सिस्टम को रिलेशनल डेटाबेस से कैसे मिलान किया जाए, इस पर विचार करते समय कई तरह की कठिनाइयाँ आती हैं। इन कठिनाइयों को वस्तु-संबंधपरक प्रतिबाधा बेमेल के रूप में संदर्भित किया जाता है।<ref>[https://www.semanticscholar.org/paper/Object-Relational-Mapping-Revisited-A-Quantitative-Lorenz-Rudolph/708ac5e798b7e45b949d42e2f872549a3612e1e2 Object–Relational Mapping Revisited - A Quantitative Study on the Impact of Database Technology on O/R Mapping Strategies. M Lorenz, JP Rudolph, G Hesse, M Uflacker, H Plattner. Hawaii International Conference on System Sciences (HICSS), 4877-4886] (DOI:10.24251/hicss.2017.592)</ref>
ऑब्जेक्ट सिस्टम को रिलेशनल डेटाबेस से कैसे मिलान किया जाए, इस पर विचार करते समय कई तरह की कठिनाइयाँ आती हैं। इन कठिनाइयों को वस्तु-संबंधपरक प्रतिबाधा बेमेल के रूप में संदर्भित किया जाता है।<ref>[https://www.semanticscholar.org/paper/Object-Relational-Mapping-Revisited-A-Quantitative-Lorenz-Rudolph/708ac5e798b7e45b949d42e2f872549a3612e1e2 Object–Relational Mapping Revisited - A Quantitative Study on the Impact of Database Technology on O/R Mapping Strategies. M Lorenz, JP Rudolph, G Hesse, M Uflacker, H Plattner. Hawaii International Conference on System Sciences (HICSS), 4877-4886] (DOI:10.24251/hicss.2017.592)</ref>
ओआरएम को लागू करने का एक विकल्प हर प्रमुख डेटाबेस के साथ प्रदान की जाने वाली मूल प्रक्रियात्मक भाषाओं का उपयोग है। इन्हें SQL कथनों का उपयोग करके क्लाइंट से कॉल किया जा सकता है। [[डेटा एक्सेस ऑब्जेक्ट]] (DAO) डिज़ाइन पैटर्न का उपयोग इन कथनों को अमूर्त करने के लिए किया जाता है और शेष एप्लिकेशन के लिए एक हल्का ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है।<ref>{{cite web |last=Feuerstein |first=Steven |title=Oracle PL/SQL Programming |url=http://docstore.mik.ua/orelly/oracle/prog2/ch18_05.htm |access-date=23 August 2011 |author2=Bill Pribyl  |location=18.5 Modifying Persistent Objects |date=September 1997}}</ref>
ओआरएम को लागू करने का विकल्प हर प्रमुख डेटाबेस के साथ प्रदान की जाने वाली मूल प्रक्रियात्मक भाषाओं का उपयोग है। इन्हें SQL कथनों का उपयोग करके क्लाइंट से कॉल किया जा सकता है। [[डेटा एक्सेस ऑब्जेक्ट]] (DAO) डिज़ाइन पैटर्न का उपयोग इन कथनों को अमूर्त करने के लिए किया जाता है और शेष एप्लिकेशन के लिए हल्का ऑब्जेक्ट-ओरिएंटेड इंटरफ़ेस प्रदान करता है।<ref>{{cite web |last=Feuerstein |first=Steven |title=Oracle PL/SQL Programming |url=http://docstore.mik.ua/orelly/oracle/prog2/ch18_05.htm |access-date=23 August 2011 |author2=Bill Pribyl  |location=18.5 Modifying Persistent Objects |date=September 1997}}</ref>





Revision as of 12:32, 21 February 2023

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

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

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


सिंहावलोकन

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

निम्नलिखित सरल उदाहरण है, जिसे 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 अक्सर लिखे जाने वाले कोड की मात्रा को कम कर देता है।[2] ओआरएम उपकरण के नुकसान आम तौर पर कार्यान्वयन कोड में वास्तव में क्या हो रहा है, इसे अस्पष्ट करने वाले डेटाबेस अमूर्त परत के उच्च स्तर से उत्पन्न होते हैं। इसके अलावा, ORM सॉफ़्टवेयर पर भारी निर्भरता को खराब डिज़ाइन किए गए डेटाबेस के उत्पादन में प्रमुख कारक के रूप में उद्धृत किया गया है।[3]


वस्तु-उन्मुख डेटाबेस

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

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

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


चुनौतियां

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


यह भी देखें

संदर्भ

  1. 1.0 1.1 "What is Object/Relational Mapping?". Hibernate Overview. JBOSS Hibernate. Retrieved 27 January 2022.
  2. Douglas Barry, Torsten Stanienda, "Solving the Java Object Storage Problem," Computer, vol. 31, no. 11, pp. 33-40, Nov. 1998, http://www2.computer.org/portal/web/csdl/doi/10.1109/2.730734 , Excerpt at http://www.service-architecture.com/object-relational-mapping/articles/transparent_persistence_vs_jdbc_call-level_interface.html. Lines of code using O/R are only a fraction of those needed for a call-level interface (1:4). For this exercise, 496 lines of code were needed using the ODMG Java Binding compared to 1,923 lines of code using JDBC.
  3. Josh Berkus, "Wrecking Your Database", Computer, Aug. 2009, https://www.toolbox.com/tech/data-management/blogs/wrecking-your-database-080509/
  4. Object–Relational Mapping Revisited - A Quantitative Study on the Impact of Database Technology on O/R Mapping Strategies. M Lorenz, JP Rudolph, G Hesse, M Uflacker, H Plattner. Hawaii International Conference on System Sciences (HICSS), 4877-4886 (DOI:10.24251/hicss.2017.592)
  5. Feuerstein, Steven; Bill Pribyl (September 1997). "Oracle PL/SQL Programming". 18.5 Modifying Persistent Objects. Retrieved 23 August 2011.{{cite web}}: CS1 maint: location (link)


बाहरी संबंध