2010-11-18 18 views
10

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

कार्यालय में हर कोई या तो एक रिलेशनल डेटाबेस पृष्ठभूमि (और यूनिवेर्स से नफरत करता है) से आता है या यहां वर्षों से रहा है और इसे प्यार करता है।

उत्तर

8

पहला, एक अस्वीकरण। मैं यूनिडाटा (यूनिवीर्स की बहन डीबी) और कभी-कभी blog on it के साथ काम करता हूं, इसलिए मैं पूरी तरह से निष्पक्ष होने का दावा नहीं कर सकता; हालांकि, मैं कोशिश करूंगा।

यहाँ आप के लिए विचार के कुछ बिंदु हैं:

  • एक SQL DB और एक Multivalue डीबी बीच एक बड़ा अंतर है कि MVDB 1NF का पालन नहीं करता है। इसमें पेशेवर और विपक्ष है। यह (और आमतौर पर) दुर्व्यवहार किया जा सकता है, लेकिन ऐसे समय होते हैं जब यह बेहद कार्यात्मक हो सकता है। सबसे बड़ा लाभ यह है कि इसका मतलब है कि आपको हमेशा एक जॉइन टेबल की आवश्यकता नहीं होती है जो कुछ प्रश्नों को बहुत तेजी से कर सकती है।

  • यह नियमित एसक्यूएल डीबी की तुलना में मेटा-डेटा को पूरी तरह से उपन्यास तरीके से संग्रहीत करता है। प्रत्येक फ़ाइल/तालिका में एक ठोस स्कीमा नहीं है। इसके बजाए, इसमें 1 या अधिक 'डिक्शनरी' फ़ाइलें हैं जो रिकॉर्ड से बना है जो आपको बताती है कि डेटा को कैसे व्याख्या किया जाना चाहिए। यह आपको डेटा (कच्चे/अपरकेस/लोअरकेस, संयुक्त फ़ील्ड इत्यादि) की कई व्याख्याओं को न केवल स्टोर करने की अनुमति देता है बल्कि आपको enums के बराबर करने और जुड़ने की अनुमति देता है। यह extremely powerful if done right हो सकता है।

  • अफसोस की बात है, हालांकि अवधारणा में काफी क्षमता है, डीबीएमएस के टूलसेट की कमी है। विकास संचालित है, लेकिन व्यवसायों के मामलों का एक बहुत ही छोटा सेट है जो मौजूदा & उम्र बढ़ने वाले सॉफ्टवेयर सिस्टम की 'रख-रखाव-रोशनी' मानसिकता से प्रेरित होता है। यद्यपि इसमें एकीकरण के लिए उपकरण हैं (जैसे .NET कनेक्टर, एसक्यूएल प्रश्नों के लिए ओडीबीसी इंटरफेस, आदि) उनके पास समस्याएं हैं। उदाहरण के लिए, UniObjects .NET इंटरफ़ेस में सुरक्षा में कोई भी ग्रैनुलेशन नहीं है (मूल रूप से सभी या कुछ भी नहीं)।

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

+0

विस्तृत उत्तर के लिए धन्यवाद। डेटाबेस में स्टोरेज के लिए स्ट्रिंग्स से और स्ट्रिंग्स से सब कुछ बदलने के ओवरहेड के बारे में आपके विचार क्या हैं, और एकाधिक मानों (और उप-मानों) के लिए रिकॉर्ड प्रविष्टियों को पार्स करने के लिए। क्या यह डेटा को 'वास्तविक जीवन' प्रतिनिधित्व में संग्रहीत करने के कुछ वैचारिक लाभों से अधिक है? –

+0

मैं इसका पूर्ण उत्तर नहीं दे सकता क्योंकि यह कई कारकों पर निर्भर करता है। उदाहरण के लिए, एप्लिकेशन की पढ़ाई/लेखन प्रोफ़ाइल क्या है? नए लिखने बनाम अद्यतन लिखने की तुलना क्या है? अन्य कारक विकास के समय के अंतर होंगे। –

1

इस तरह के कोई पेशेवर और विपक्ष नहीं हैं - वे बस मूल्यों को स्टोर करने के लिए विभिन्न विधियों का उपयोग करते हैं। UniVerse मूल्यों को अलग करने के लिए एक डिलीमीटर का उपयोग करता है (आईआईआरसी यह फ़ील्ड में एकाधिक मानों को विभाजित करने के लिए चार (254) और चार (253) का उपयोग करता है, और डेटा फ़ाइल में वास्तविक रिकॉर्ड को अलग करने के लिए चार (255)। मैं गलत हो सकता हूं हालांकि - यह पिछले 10 वर्षों से अधिक रहा है क्योंकि मैंने इसे अंतिम बार इस्तेमाल किया था)। कुछ लोग डेटा संग्रहित करने के इस तरीके से प्यार करते हैं, जैसे कि कुछ लोग देर से मॉडल वाले लोगों पर विंटेज कार पसंद करते हैं, या कुछ लोग आधुनिक मोटर वाहन की बजाय घोड़े और गाड़ी का उपयोग करना पसंद करते हैं। (बेशक यह सिर्फ मेरी राय है)।

किसी फ़ील्ड के भीतर कई मानों को संग्रहीत करने का अर्थ है कि आपके पास SQLServer का उपयोग करने वाली अतिरिक्त तालिका नहीं है, तो आपके पास प्रभावी रूप से असामान्यता का स्तर होता है। इन बहु मानों का उपयोग करना एक आसान तकनीक है जो यूनिवर्स के साथ मूल रूप से जाता है (हम क्यूईबीआईसी नामक एक विंडोिंग सिस्टम का उपयोग करते थे), लेकिन सीआई ++ या वीबी जैसी किसी अन्य भाषा से डेटाबेस से कनेक्ट करते समय यह पीआईटीए का कारण बनता है - तब आप एक रिकॉर्ड पढ़ना और मूल्यों को अलग करना होगा। इसका मतलब है कि उन बहु मूल्यों पर खोज करना भी मुश्किल था।

लेकिन फिर से, चीजें तब तक चली गईं जब से मैंने इसे अंतिम बार इस्तेमाल किया था, शायद किसी ने एक अच्छा ड्राइवर लिखा है ताकि आप आसानी से यूनीवर्स के साथ .NET प्लेटफ़ॉर्म से इंटरफ़ेस कर सकें। मैं आशा करता हूं कि उनके पास आपके लिए है।

+0

नेट के साथ बातचीत करना बहुत बुरा नहीं है। मुझे इसमें दिलचस्पी है: क्या वे स्ट्रिंग/पूर्णांक/फ़्लोटिंग पॉइंट डेटा को संभालने के लिए अच्छे हैं, क्या वे छोटे/बड़े टेबल या छोटी/बड़ी संख्या में पंक्तियों के लिए एक मजबूत टाइप किए गए रिलेशनल डेटाबेस से बेहतर/बदतर प्रदर्शन करते हैं? –

2

एमवी डेटाबेस अपेक्षाकृत कम संचालित सर्वरों से शानदार प्रदर्शन निचोड़ने के लिए जानते हैं।

वे एक लिंक-हैश फाइलिंग सिस्टम का उपयोग करते हैं जो अधिकांश फ़ाइल एक्सेस ऑपरेशंस को गणितीय ऑपरेशन में कम करता है और रिकॉर्ड कुंजी ज्ञात होने पर एक डिस्क को पढ़ा जाता है। एक उचित रूप से कॉन्फ़िगर किया गया सिस्टम में, फ़ाइल फ़ाइल से पढ़ता है जिसमें 1,000,000,000 रिकॉर्ड्स फ़ाइल के उन लोगों से अधिक नहीं होते हैं जब तक कि रिकॉर्ड कुंजी ज्ञात नहीं होती है।

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

3

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

यह वास्तव में इस बात पर निर्भर करता है कि आप क्या करने की कोशिश कर रहे हैं, डेटा को कैसे संरचित करने की आवश्यकता है, और आपके पास कौन से अन्य टूल्स उपलब्ध हैं। मैं अपना अधिकांश समय एमवी (प्रकाशितवाक्य उत्पादों, ज्यादातर) में काम करता हूं और हम नियमित रूप से 10,000,000+ में रिकॉर्ड सेट संभालते हैं, और गति ठीक है।

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

आप कोई एसक्यूएल आंदोलन देखना नहीं चाहते हैं, जो एक ही अवधारणाओं को साझा करता है, भले ही एमवी और कोई एसक्यूएल वास्तव में एक ही चीज़ न हो।

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

ऐसा कहकर, चूंकि एमवी डेटाबेस मुख्य रूप से विशाल तार हैं, इसलिए भाषाओं की स्ट्रिंग हैंडलिंग उत्कृष्ट हैं। वे सीधे HTML और XML स्ट्रिंग में हेरफेर करने के लिए बहुत अच्छे हैं।

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

0

फ़ाइलों में बहुत से आइटम (रिकॉर्ड्स) के लिए स्केलिंग अच्छी तरह से काम करता है। रिकॉर्ड्स के भीतर कई मूल्यों या उप-मूल्यों को स्केल करने से प्रदर्शन समस्याएं उत्पन्न हो जाएंगी। एप्लिकेशन डिज़ाइन को 1000 और थ्रेसहोल्ड के नीचे मूल्य और उप मान सूचियों को सीमित करने के लिए संवेदनशील होना आवश्यक है।

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

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