2008-09-14 13 views
10

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

+0

मुझे लगता है कि यह एक सीडब्ल्यू – Konstantinos

उत्तर

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

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

हालिया प्रश्न, Object Orientated vs Relational Databases भी देखें।

+1

होना चाहिए परिचितता के लिए एक प्रतिद्वंद्विता: यदि आप उन वस्तुओं को जारी रखते हैं जो डेवलपर्स उपयोग कर रहे हैं, तो क्या आपको अभी भी डीबी प्रशासकों की आवश्यकता है?या आप अधिक डेवलपर्स को किराए पर ले सकते हैं जो अपने समय को व्यवस्थापक और विकास के बीच विभाजित कर सकते हैं? –

+3

प्रदर्शन के लिए एक counterargument: berkeleydb; इसका संबंध नहीं है, और 256 टेराबाइट्स तक लंबवत पैमाने पर स्केल कर सकता है। memcached; यह संबंध नहीं है, और क्षैतिज AFAIK अनिश्चित काल तक स्केल कर सकते हैं। –

+5

परिपक्वता के लिए एक counterargument: एसक्यूएल लंबे समय से विकसित नहीं है। यह लंबे समय से विकसित है। कुछ लोग कहते हैं कि सी परिपक्व है क्योंकि यह काफी समय से आसपास रहा है। मैं कहता हूं कि सी # परिपक्व है क्योंकि यह आंशिक रूप से सी – Guge

1

विपक्ष:

  • प्रोग्राम हैं जो भी डेटा संग्रहण तक पहुंचने में, इसे और अधिक मुश्किल एंटरप्राइज़ में उपयोग करने के लिए बनाने के लिए एक ही ढांचे का उपयोग नहीं करते द्वारा नहीं किया जा सकता है।

  • कम संसाधनों के लिए ऑनलाइन उपलब्ध गैर SQL- आधारित डाटाबेस

  • डेटाबेस प्रकार भर में कोई संगतता (सभी कोड बदले बिना एक अलग db प्रदाता के लिए स्वैप नहीं कर सकता)

  • संस्करण शायद कुतिया का थोड़ा सा है। मुझे लगता है कि चाहते हैं एक वस्तु के लिए एक नया संपत्ति जोड़ने एक तालिका में एक नया स्तंभ जोड़ने के रूप में नहीं काफी के रूप में आसान है।

2

डेटाबेस ऑब्जेक्ट करने के लिए एक आपत्ति यह है कि यह डेटा और आपके कोड के बीच एक तंग युग्मन बनाता है। कुछ ऐप्स के लिए यह ठीक हो सकता है, लेकिन दूसरों के लिए नहीं। एक अच्छी बात यह है कि एक संबंधपरक डेटाबेस आप देता संभावना अपने डेटा पर कई विचार कर देना है।

Ted Neward यह बताता है और OODBMSs के बारे में एक बहुत अधिक एक बहुत इससे बेहतर।

+0

यह मूर्खतापूर्ण है। यदि आपके पास यह तंग युग्मन नहीं है, तो आप 30% दोषपूर्ण रिकॉर्ड की मानक आरडीबीएमएस त्रुटि दर प्राप्त करते हैं। –

0

सोरेन

कारणों से आप ने कहा की सभी मान्य हैं, लेकिन मैं देख रहा हूँ OODBMS के साथ समस्या यह तार्किक डेटा मॉडल है।ऑब्जेक्ट-मॉडल (या 70 के दशक का नेटवर्क मॉडल) संबंधपरक के रूप में उतना आसान नहीं है, और इसलिए कम है।

+0

सरलता डिफ़ॉल्ट रूप से श्रेष्ठता नहीं बनती है ... –

+0

यदि दोनों समान रूप से शक्तिशाली हैं, और इस मामले में वे संबंधपरक मॉडल कुछ भी प्रस्तुत कर सकते हैं, तो सादगी बेहतर है। –

10

मैं db4o जो एक OODB है का उपयोग किया गया है और यह विपक्ष का सबसे सूचीबद्ध हल करती है:

  • परिचित - प्रोग्रामर्स उनकी भाषा जानते हैं बेहतर तो एसक्यूएल (मूल निवासी प्रश्नों देखें)
  • प्रदर्शन - यह एक बहुत ही व्यक्तिपरक है, लेकिन आप PolePosition
  • विक्रेता समर्थन और परिपक्वता पर एक नज़र ले जा सकते हैं - OODB मानक हैं और आप कर सकते हैं - समय
  • प्रोग्राम हैं जो भी एक ही ढांचे का उपयोग नहीं करते द्वारा नहीं किया जा सकता है साथ बदल सकते हैं different frameworks
  • संस्करण शायद एक कुतिया का थोड़ा सा है - संस्करण वास्तव में easier है!

पेशेवरों मैं में दिलचस्पी रखता हूँ हैं:

  • मूल निवासी प्रश्नों - db4o आप अपने स्थिर टाइप भाषा में प्रश्नों लिखने ताकि आप एक स्ट्रिंग गलत लिख और डेटा खोजने लापता के बारे में चिंता की जरूरत नहीं है की सुविधा देता है रनटाइम पर,
  • उपयोग की आसानी - डोमेन परत में दृढ़ता तर्क परिभाषित करना, दृढ़ता परत (मैपिंग) और अंततः SQL डेटाबेस निश्चित रूप से DRY का उल्लंघन है। ओओडीबी के साथ आप अपने डोमेन को परिभाषित करते हैं जहां यह संबंधित है।

मैं सहमत हूं - ओओडीबी के पास जाने का लंबा रास्ता है लेकिन वे जा रहे हैं। और वहां डोमेन समस्याएं हैं जो ओओडीबी द्वारा बेहतर हल की जाती हैं,

0

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

एक ओओ आवेदन के लिए, एक ओओ डेटाबेस स्थायी वस्तुओं के लिए एक अधिक प्राकृतिक फिट प्रदान करेगा।

शायद यह सच है कि आप अपने डेटा को अपने डोमेन मॉडल से जोड़ते हैं, लेकिन फिर यह क्रूक्स है!

क्या डोमेन केंद्रित दृश्य का उपयोग कर डेटा, व्यवसाय नियमों और प्रक्रियाओं को देखने का एकमात्र तरीका अच्छा नहीं होगा?

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

विपक्ष, बस परिपक्वता और गोद लेने मुझे लगता है की सामान्य कमी ...

2

यह प्रदर्शन के साथ कोई संबंध नहीं है। यही कहना है, मूल रूप से सभी अनुप्रयोग ओओडीबी के साथ बेहतर प्रदर्शन करेंगे। लेकिन इससे बहुत सी डीबीए काम से बाहर हो जाएगी/एक नई तकनीक सीखनी होगी। डेटा में त्रुटियों को सुधारने के लिए और भी अधिक लोग काम से बाहर होंगे। स्थापित कंपनियों के साथ ओओडीबी लोकप्रिय बनाने की संभावना नहीं है। गेविन पूरी तरह से अनजान प्रतीत होता है, एक बेहतर लिंक Kirk

+0

किर्क पेपरडेन के महान ब्लॉग पोस्ट का लिंक +1 के लायक है –

संबंधित मुद्दे