2010-09-14 8 views
104

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

उत्तर

65

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

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

नोएसक्यूएल डेटाबेस लंबे समय से आसपास रहे हैं - बस शब्द नया है। कुछ उदाहरण ग्राफ, ऑब्जेक्ट, कॉलम, एक्सएमएल और दस्तावेज़ डेटाबेस हैं।

अपने दूसरे प्रश्न के लिए: क्या यह एक ही साइट पर दोनों का उपयोग करना ठीक है?

क्यों नहीं? दोनों अलग-अलग उद्देश्यों को सही तरीके से सेवा देते हैं?

+1

मुझे नहीं लगता कि एसीआईडी ​​डेटाबेस के संबंध में विशिष्ट है। आप स्थायित्व गारंटी, लेनदेन, गैर-संबंधपरक डेटाबेस में स्थिरता देख सकते हैं। – Thilo

+0

@RamshVel क्या आप एक कुंजी-मूल्य स्टोर प्रकार डेटाबेस का उदाहरण दे सकते हैं? धन्यवाद। – Rachael

+1

@Rachael, कुछ उदाहरण redis, leveldb और riak हैं .. आसपास के चारों ओर हैं, आप इसे – RameshVel

63

नोएसक्यूएल समाधान आमतौर पर ऐसी समस्या को हल करने के लिए होते हैं जो डेटाबेस के संबंध में या तो बहुत महंगा नहीं है (ओरेकल की तरह) या आपको कुछ भी लागू करने की आवश्यकता होती है जो आपके डीबी की रिलेशनल प्रकृति को तोड़ देती है।

लाभ आमतौर पर आपके उपयोग के लिए विशिष्ट होते हैं, लेकिन जब तक आपको आरडीबीएमएस में अपने डेटा को मॉडलिंग करने में कोई समस्या नहीं होती है, तो मुझे कोई कारण नहीं दिखता कि आप NoSQL क्यों चुनेंगे।

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

यदि आप जरूरत एक NoSQL db आप आमतौर पर इसके बारे में पता है, संभावित कारण हैं:

  • ग्राहक एक उच्च यातायात साइट पर 99.999% उपलब्धता चाहता है।
  • आपका डेटा SQL में कोई समझ नहीं देता है, तो आप के लिए जानकारी के कुछ टुकड़े तक पहुंचने के लिए कई जॉइन क्वेरी कर रहे हैं।
  • आप मॉडल के संबंध को तोड़ रहे हैं, आपके पास सीएलओबी हैं जो डिमॉर्मलाइज्ड डेटा स्टोर करते हैं और आप उस डेटा को खोजने के लिए बाहरी अनुक्रमणिका उत्पन्न करते हैं।

आप एक NoSQL समाधान की जरूरत नहीं है यह ध्यान रखें कि इन समाधानों एक RDBMS के लिए प्रतिस्थापन के रूप में बल्कि विकल्प जहां पूर्व में विफल रहता है और अधिक महत्वपूर्ण है कि वे अपेक्षाकृत जैसे नए वे अभी भी कर रहे हैं के रूप में मतलब नहीं थे बहुत सारी बग और गायब विशेषताएं हैं।

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

+1

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

+0

मैं दो बार एक ही प्रश्न का उत्तर देने की कोशिश नहीं करता, मेरे पिछले उत्तर को एक बहुत ही समान प्रश्न http://stackoverflow.com/questions/3621415/what-are-some-real-use-cases-for-going- साथ-साथ-nosql-document-store-db/3621568 # 3621568 – Asaf

+0

मैं असफ़ के महान उत्तर से सहमत हूं, वास्तव में केवल कुछ परिदृश्य हैं जब आपको आरडीबीएमएस पर नोएसक्यूएल की आवश्यकता होनी चाहिए। मैं एक मुख्य डीबी की तुलना में बैकअप डीबी या "ऐड-ऑन डीबी" के रूप में नोएसक्यूएल को अधिक देखता हूं। मैंने अभी तक एक अच्छी प्रणाली नहीं देखी है, जहां कोर डीबी नोएसक्यूएल था। –

28

मार्टिन फाउलर का उत्कृष्ट video है जो नोएसक्यूएल डेटाबेस का एक अच्छा स्पष्टीकरण देता है। लिंक सीधे उनका उपयोग करने के उनके कारणों पर जाता है, लेकिन पूरे वीडियो में अच्छी जानकारी होती है।

  1. आप डेटा की बड़ी मात्रा है - खासकर यदि आप यह सब एक भौतिक सर्वर पर फिट नहीं कर सकते के रूप में अच्छी तरह से NoSQL पैमाने पर करने के लिए डिजाइन किया गया था।

  2. Object-relational impedance mismatch - आपके डोमेन ऑब्जेक्ट्स एक रिलेशनल डेटाबेस स्कीमा में अच्छी तरह से फिट नहीं होते हैं। NoSQL आपको दस्तावेज़ों (या ग्राफ) के रूप में अपने डेटा को जारी रखने की अनुमति देता है जो आपके डेटा मॉडल के लिए अधिक निकटता से मानचित्रण कर सकता है।

10

NoSQL डेटाबेस प्रणाली जहां डाटा दस्तावेज़ (MongoDB) में आयोजित किया जाता है, कुंजी-मान पेयर (मेम्कैश, Redis), ग्राफ संरचना फार्म (Neo4J)।

हो सकता है कि यहां संभव सवाल कर रहे हैं और के लिए "जब NoSQL के लिए जाने के लिए" का जवाब:

  1. लचीला स्कीमा की आवश्यकता होती है या डेटा की तरह पेड़ के साथ सौदा?
    आम तौर पर, चुस्त विकास में हम सभी आवश्यकता को जानने के बिना सिस्टम को डिजाइन करना शुरू करते हैं, जहां बाद में पूरे विकास डेटाबेस सिस्टम पर लगातार डिजाइन परिवर्तनों को समायोजित करने की आवश्यकता हो सकती है, एमवीपी (न्यूनतम व्यवहार्य उत्पाद) प्रदर्शित करना। या आप डेटा स्कीमा से निपट रहे हैं जो प्रकृति में गतिशील है। उदा। सिस्टम लॉग, बहुत सटीक उदाहरण AWS क्लाउडवॉच लॉग है।

  2. डेटा सेट विशाल/बड़ा है?
    हां NoSQL डेटाबेस उन अनुप्रयोगों के लिए बेहतर उम्मीदवार हैं जहां डेटाबेस को प्रदर्शन पर समझौता किए बिना लाखों या यहां तक ​​कि रिकॉर्ड का प्रबंधन करने की आवश्यकता है।

  3. व्यापार स्थिरता के ऊपर स्केलिंग के बीच बंद
    RDMS के विपरीत, NoSQL डेटाबेस छोटे डेटा यहाँ और वहाँ खो सकते हैं (नोट: संभावना .x% है), लेकिन इसकी आसान प्रदर्शन के मामले में पैमाने पर करने के। उदाहरण: यह उन लोगों को संग्रहीत करने के लिए अच्छा हो सकता है जो तत्काल संदेश एप्लिकेशन में ऑनलाइन हैं, डीबी में टोकन, वेब साइट यातायात आंकड़ों को लॉगिंग करना।

  4. प्रदर्शन जियोलोकेशन संचालन: GeoQuerying & जियोलोकेशन संचालन करने के लिए अमीर समर्थन हैश MongoDB। मुझे वास्तव में MongoDB की इस विशेषता से प्यार था।

संक्षेप में, मोंगोडीबी उन अनुप्रयोगों के लिए बहुत उपयुक्त है जहां आप बड़े पैमाने पर गतिशील संरचित डेटा स्टोर कर सकते हैं।

+2

पर Google कर सकते हैं "NoSQL डेटाबेस यहां और वहां छोटे डेटा को खो सकता है" डब्ल्यूटीएफ !? अब उनके सही दिमाग में कौन जोखिम उठाना चाहता है? यह झूठा होना चाहिए। –

+1

@JayQ। हाँ, यह गलत हो सकता है। यही कारण है कि मैंने कहा * शायद। तो हम लेनदेन संबंधी परिचालनों के लिए एनपीएसक्यूएल डीबी का उपयोग क्यों नहीं कर सकते? – Hrishikesh

1

मैं आरडीबीएमएस डिज़ाइन से विचलित होने के लिए दृढ़ आधार की तलाश करते हुए इस प्रश्न में आया था।

जूलियन ब्राउन द्वारा एक महान post है जो वितरित सिस्टम की बाधाओं पर रोशनी डालता है। अवधारणा Brewer के कैप प्रमेय कहा जाता है जो सारांश में चला जाता है:

वितरण प्रणाली के तीन आवश्यकताएँ हैं: संगति, उपलब्धता और विभाजन सहिष्णुता (संक्षेप में सीएपी)। लेकिन आप एक समय में केवल दो ही हो सकते हैं।

और यह है मैं यह कैसे खुद के लिए संक्षेप:

बेहतर होगा कि तुम NoSQL के लिए जाना है, तो आप क्या संगति का त्याग कर रहे हैं।

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