2011-01-27 127 views
70

मुझे पता है कि MySQL, PostgreSQL और MS SQL सर्वर जैसे समाधान डेटाबेस सिस्टम से संबंधित हैं, और NoSQL, MongoDB, आदि गैर-रिलेशनल डीबीएमएस हैं।एक रिलेशनल और गैर-रिलेशनल डेटाबेस के बीच क्या अंतर है?

हालांकि, दो प्रकार के सिस्टम के बीच अंतर क्या हैं?

लेमन शब्द बेहतर हैं।

धन्यवाद।

+9

यह होमवर्क नहीं है ... लेकिन आज मैं एक दोस्त को मतभेदों को समझाने की कोशिश कर रहा था और थोड़े से खाली हो जाना शुरू कर दिया। तो मैंने सोचा कि मैं यहां खोज करूंगा और मुझे कोई संतोषजनक स्पष्टीकरण नहीं मिला है। तो लगा कि मैं पूछूंगा। मैं जो अंतर कह रहा था वह यह है कि आरडीबीएमएस के साथ टेबल के बीच बहुत सारी टेबल और जुड़ती हैं। NoSQL में एकाधिक टेबल नहीं हैं, इसमें केवल एक टेबल है और मुख्य मान जोड़े का उपयोग करता है। सुनिश्चित नहीं है कि यह एक सटीक वर्णन है, इसलिए मुझे लगा कि मैं पूछूंगा। – marcamillion

+5

यह एक प्रश्न है और होमवर्क नहीं है। – Narek

उत्तर

22

रिलेशनल डेटाबेस में गणितीय आधार (सेट सिद्धांत, relational theory) है, जो SQL == संरचित क्वेरी भाषा में आसवित हैं।

नोएसक्यूएल के कई रूप (उदा। दस्तावेज़-आधारित, ग्राफ-आधारित, ऑब्जेक्ट-आधारित, की-वैल्यू स्टोर इत्यादि) एक अंडरपिनिंग गणितीय सिद्धांत पर आधारित हो सकते हैं या नहीं भी हो सकते हैं। चूंकि एस लॉट ने सही ढंग से बताया है, hierarchical डेटा स्टोर में वास्तव में गणितीय आधार है। graph databases के लिए भी यही कहा जा सकता है।

मुझे नोएसक्यूएल डेटाबेस के लिए सार्वभौमिक क्वेरी भाषा से अवगत नहीं है।

+0

"क्या ऐसा कोई गणितीय आधार नहीं है"? वास्तव में? पदानुक्रमित डेटाबेस मेरे लिए काफी गणितीय लग रहा था। तुलनात्मक रूप से वे अपेक्षाकृत सरल थे। मुझे लगता है कि एक्सएमएल डेटाबेस लोगों के पास एक पदानुक्रमित डेटाबेस में क्या किया जा सकता है (और नहीं) पर एक ठोस ठोस ताला है। –

+0

यहां काम पर मेरी अज्ञानता या अति-सरलीकरण हो सकता है, एस लॉट। मैं एक संदर्भ की तलाश करूंगा। – duffymo

+1

मैं इस मामले पर कोई विशेषज्ञ नहीं हूं, लेकिन चूंकि वे सभी संरचित डेटास्टर्स हैं, मुझे विश्वास है कि कम से कम एसक्यूएल का सबसेट किसी भी मॉडल पर लागू किया जा सकता है। उस मामले के लिए, मुझे वास्तव में यह पसंद है कि Google ने एक क्वेरी भाषा का खुलासा कैसे किया है जो SQL की अपनी बड़ी तालिका http://code.google.com/appengine/docs/python/datastore/gqlreference.html के लिए सच है। वास्तव में चीजों को बहुत आसान बना दिया। –

17

जो कुछ आप "जानते हैं" गलत है।

सबसे पहले, कुछ रिलेशनल गुरु नियमित रूप से (और कभी-कभी स्पष्ट रूप से) बताते हैं, एसक्यूएल वास्तव में संबंधपरक सिद्धांत के साथ लगभग निकटता से फिट नहीं होता है क्योंकि बहुत से लोग सोचते हैं। दूसरा, "नोएसक्यूएल" सामानों में से अधिकांश मतभेद अपेक्षाकृत कम हैं कि यह संबंधपरक है या नहीं। अंत में, यह कहना मुश्किल है कि कैसे "NoSQL" SQL से अलग है क्योंकि दोनों संभावनाओं की एक विस्तृत विस्तृत श्रृंखला का प्रतिनिधित्व करते हैं।

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

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

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

38

हम्म, यह सुनिश्चित नहीं है कि आपका प्रश्न क्या है।

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

एक डीबीएमएस एक ऐसा उपकरण है जो आपको डीबी तक पहुंचने की अनुमति देता है।

डेटा के अलावा, डीबी यह अवधारणा है कि डेटा को कैसे संरचित किया जाता है।

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

मैं इस बात पर ध्यान केंद्रित करूंगा कि रिलेशनल डाटाबेस (आरडीबी) का अर्थ क्या है और इस बारे में चर्चा छोड़ दें कि कौन से सिस्टम दूसरों के साथ करते हैं।

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

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

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

मुझे उम्मीद है कि यह आम आदमी पर्याप्त है और आपकी समझ के लिए सहायक है।

+0

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

+0

किसी को किसी संबंधपरक डेटाबेस का उपयोग करने के लिए बाधाओं के बारे में जानने की आवश्यकता नहीं है या किसी को घोषित करने की आवश्यकता नहीं है (पीके, सीके और एफके सहित) घोषित करने की आवश्यकता नहीं है। वे ईमानदारी के लिए हैं। टेबल्स संबंध (जहाज) एस का प्रतिनिधित्व करते हैं। जुड़ें और अन्य ऑपरेटर नई टेबल प्राप्त करने के लिए तालिकाओं को कनेक्ट करते हैं जिनके संबंध (जहाज) तर्क तालिका के संबंध (जहाज) एस के संयोजन होते हैं। इसके अलावा इंडेक्स कार्यान्वयन अनुकूलन के लिए हैं और डेटाबेस/डीबीएमएस के उपयोगकर्ताओं के संबंध में अप्रासंगिक हैं। – philipxy

9

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

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

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

(कृपया ध्यान दें। कि मैं (जाहिर है) अच्छी तरह से स्थापित मानकों NoSQL डेटाबेस द्वारा प्रदान की कई जायके के खिलाफ संबंधपरक मॉडल से संबद्ध की तुलना से बचा लिया है यदि आप चाहें तो लिए एक छाता शब्द के रूप में NoSQL डेटाबेस पर विचार कोई भी डीबीएमएस जो सब कुछ के अलावा बहिष्कार मॉडल को पूरी तरह से नहीं मानता है। मतभेद बहुत अधिक हैं, लेकिन यह मुख्य अंतर है और मुझे लगता है कि मुझे लगता है कि दोनों को समझने के लिए आप सबसे अधिक उपयोग करेंगे।)

4

इस प्रश्न को एक छोटी सी तकनीक का संदर्भ देने वाले स्तर में व्याख्या करने का प्रयास करें

ले लो तुलना के लिए मोंगोडीबी और पारंपरिक एसक्यूएल, ट्विटर पर एक ट्वीट पोस्ट करने के परिदृश्य की कल्पना करें। इस ट्वीट में 9 चित्र हैं। आप इस ट्वीट और इसके संबंधित चित्रों को कैसे स्टोर करते हैं?

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

और भी, आप एक फ़ील्ड सेट कर सकते हैं जो एक छवि प्रकार है, और 9 चित्रों को एक बाइनरी दस्तावेज़ में ज़िप करें और इसे इस क्षेत्र में स्टोर करें।

MongoDB का उपयोग करना, आप इस तरह के एक दस्तावेज (संबंधपरक एसक्यूएल में एक मेज की अवधारणा के समान) बना सकते हैं:

{ 

"id":"XXX", 

"user":"XXX", 

"date":"xxxx-xx-xx", 

"content":{ 

"text":"XXXX", 

"picture":["p1.png","p2.png","p3.png"] 

} 

इसलिए, मेरी राय में, मुख्य अंतर यह है के बारे में कैसे आप की दुकान है डेटा और उनके बीच संबंधों का भंडारण स्तर।

इस उदाहरण में, डेटा ट्वीट और चित्र है। उनके बीच संबंधों के भंडारण स्तर के बारे में विभिन्न तंत्र भी दोनों के बीच के अंतर में एक महत्वपूर्ण भूमिका निभाते हैं।

मुझे आशा है कि यह छोटा उदाहरण एसक्यूएल और नोएसक्यूएल (एसीआईडी ​​और बीएएसई) के बीच अंतर दिखाने में मदद करेगा।

http://icamchuwordpress-wordpress.stor.sinaapp.com/uploads/2015/01/dbc795f6f262e9d01fa0ab9b323b2dd1_b.png

+0

वास्तव में अच्छी व्याख्या, वहां एक लिंक है जहां मुझे पहला विचार मिला, मुझे उम्मीद है कि यह किसी की मदद कर सकता है। http://growthefuturenow.com/relational-vs-non-relational-database/ –

3

रिलेशनल और गैर संबंधपरक के बीच का अंतर वास्तव में है:

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

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

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

0

अच्छा संबंधपरक डेटाबेस कार्यान्वयन = परमाणु बंकरों
अच्छा गैर संबंधपरक डेटाबेस कार्यान्वयन = वाइल्ड वाइल्ड वेस्ट

एक घातक आपदा के मामले में (बग/कीड़े) जहां आप और अधिक सुरक्षित हो सकता है? यदि मेरा जीवन डेटाबेस में संग्रहीत डेटा पर निर्भर करेगा, तो मैं स्पष्ट रूप से संबंधपरक डेटाबेस चुनूंगा।

मुझे अजीबता में कोई मूल्य नहीं मिलता है, मेरा मतलब है कि पहले से ही एक चक्र के पुनर्निर्मित करने का बिंदु क्या है और इसका घूर्णन बुलेट प्रमाण है? अपनी प्रतिक्रिया के लिए @ जेरी कॉफिन को भी बधाई देता हूं।

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