आप एक ही सर्वर पर बंद शुरू कर रहे हैं, तो NoSQL के कई फायदे खिड़की के बाहर चले जाते हैं। सबसे लोकप्रिय नोएसक्यूएल के सबसे बड़े फायदे कम समय के साथ उच्च उपलब्धता हैं। अंतिम स्थिरता आवश्यकताओं के साथ-साथ प्रदर्शन सुधार भी हो सकता है। यह वास्तव में आपकी जरूरतों पर निर्भर करता है।
दस्तावेज़ आधारित - अपने डेटा डेटा के छोटे बाल्टी, तो एक दस्तावेज़ उन्मुख डेटाबेस के एक मुट्ठी भर में अच्छी तरह से फिट बैठता है तो। उदाहरण के लिए, एक वर्गीकृत साइट पर हमारे पास मूल डेटा के रूप में उपयोगकर्ता, खाते और लिस्टिंग हैं। खोज और प्रदर्शन संचालन का बड़ा हिस्सा अकेले लिस्टिंग के खिलाफ है। विरासत डेटाबेस के साथ हमें एक सूची के लिए डेटा प्राप्त करने के लिए लगभग 40 कार्य संचालन करना पड़ता है। NoSQL के साथ यह एक ही प्रश्न है। NoSQL के साथ हम नेस्टेड डेटा के खिलाफ इंडेक्स भी बना सकते हैं, फिर बिना जुड़ने के परिणाम पूछे गए। इस मामले में, हम वास्तव में खोज और प्रदर्शन के प्रयोजनों के लिए एसक्यूएल से मोंगोडीबी के आंकड़ों को प्रतिबिंबित कर रहे हैं (अन्य कारण भी हैं), अब दीर्घकालिक प्रवासन रणनीति पर काम किया जा रहा है। लोचदार खोज, रेथिंक डीबी और अन्य महान डेटाबेस भी हैं। रीथिंक डीबी वास्तव में डेटा के लिए एक बहुत रूढ़िवादी दृष्टिकोण लेता है, और बॉक्सिंग इंडेक्सिंग से बाहर ElasticSearch किसी के लिए दूसरा नहीं है।
की-मूल्य की दुकान - कैशिंग, यहाँ एक उत्कृष्ट उपयोग मामला है जब आप जहां डाटा ज्यादातर पढ़ा जाता है उच्च मात्रा वेबसाइट के लिए एक माध्यम के चल रहे हैं, एक अच्छा कैशिंग रणनीति अकेले आप 4-5 बार उन प्राप्त कर सकते हैं एक सर्वर द्वारा संभाला गया।
कॉलमैन - विशेष रूप से कैसंद्रा का उपयोग सिंगल-वैल्यू लुकअप के लिए लोड की महत्वपूर्ण मात्रा में वितरित करने के लिए किया जा सकता है। कैसंद्रा का स्केलिंग उपयोग में सर्वर की संख्या के लिए बहुत रैखिक है। भारी पढ़ने और लिखने के परिदृश्य के लिए बढ़िया। मुझे लाइव खोजों के लिए यह कम मूल्यवान लगता है, लेकिन बहुत अच्छा है जब आपके पास बहुत उच्च भार है और वितरित करने की आवश्यकता है। यह बहुत अधिक योजना लेता है, और आपकी आवश्यकताओं के अनुरूप नहीं हो सकता है। आप अपनी सीएपी जरूरतों को सुइट करने के लिए सेटिंग्स को ट्विक कर सकते हैं, और बॉक्स में कई डेटा केंद्रों को वितरण भी संभाल सकते हैं।नोट: अधिकतर अनुप्रयोगों को जोरदार तरीके से उपयोग के इस स्तर की आवश्यकता होती है। अधिकांश परिदृश्यों में लोचदार खोज बेहतर फिट हो सकती है, जिसके लिए आप एचबीएस/हाडोप या कैसंद्रा पर विचार करेंगे।
ग्राफ - मैं ग्राफ डेटाबेस से परिचित नहीं हूं, इसलिए यहां टिप्पणी नहीं कर सकता।
यह देखते हुए कि आप मोंगोडीबी पर विशेष रूप से बनाम एसक्यूएल पर टिप्पणी करते हैं ... भले ही ऑटो-शर्ड दोनों हों। पोस्टग्रेएसक्यूएल ने विशेष रूप से पीएचवी 8 जैसे कुछ से प्राप्त शक्ति का उल्लेख न करने के लिए अचूक डेटा उपयोग करने योग्य (जेएसओएन/जेएसओएनबी प्रकार) प्राप्त करने के मामले में बहुत सी कदम उठाए हैं, यह शायद आपके द्वारा फेंकने वाले लोड के प्रकारों को संभालने के लिए सबसे उपयुक्त है NoSQL के फायदे के साथ एक दस्तावेज़ स्टोर। जहां यह गिरने के लिए होता है यह है कि प्रतिकृति, शेरिंग और फेलओवर समाधान पर बोल्ट किए जाते हैं वास्तव में बॉक्स में नहीं।
छोटे से मध्यम भार के लिए वास्तव में सबसे अच्छा तरीका नहीं है। अधिकतर परिदृश्य अधिकतर पढ़े जाते हैं, इसलिए प्रतिकृति-सेट होने पर आपके पास अतिरिक्त पढ़ने वाले नोड्स होते हैं जब आपके पास 3-5 सर्वर होते हैं। इस परिदृश्य में मोंगो डीबी महान है, मास्टर नोड स्वचालित रूप से निर्वाचित है, और फेलओवर बहुत तेज़ है। मैंने देखा है कि एकमात्र अजीबता यह है कि जब 2014 के आखिर में अज़ूर नीचे चला गया, और सर्वरों में से केवल एक ही आया, तो दूसरे दो लगभग 40 मिनट बाद आए। प्रतिकृति के साथ किसी भी दिए गए पढ़ने का अनुरोध पूरी तरह से एक सर्वर द्वारा संभाला जा सकता है। आपकी डेटा संरचनाएं सरल हो जाती हैं, और डेटा हानि की संभावना कम हो जाती है।
फिर से मेरे अपने उदाहरण में, एक मध्यम आकार के वर्गीकृत साइट के लिए, डेटा का विशाल बहुमत एक संग्रह से संबंधित है ... इसकी खोज की जाती है, और उस संग्रह से प्रदर्शित होती है। इस उपयोग के मामले में एक दस्तावेज़ स्टोर संरचित/सामान्यीकृत डेटा से कहीं बेहतर काम करता है। ऑब्जेक्ट्स को संग्रहीत करने का तरीका एप्लिकेशन में उनके प्रतिनिधित्व के करीब है। एक संज्ञानात्मक डिस्कनेक्ट कम है और यह बस काम करता है।
तथ्य यह है कि एसक्यूएल जॉइन ऑपरेशंस प्रदर्शन को मारता है, खासकर जब उन लोगों में डेटा एकत्रित करते हैं। एक उपयोगकर्ता के लिए एक ही प्रश्न के लिए यह ठीक है, यहां तक कि उनमें से एक दर्जन के साथ भी। जब आप हजारों एक साथ उपयोगकर्ताओं के साथ दर्जनों जुड़ते हैं, तो यह अलग हो जाता है। इस बिंदु पर आपको कई विकल्पों में है ...
कैशिंग - कैशिंग हमेशा एक महान दृष्टिकोण है, और कम अक्सर अपने डेटा परिवर्तन, बेहतर दृष्टिकोण। यह मिश्रित रिकॉर्ड रखने के लिए MongoDB, RethinkDB या ElasticSearch जैसे कुछ का उपयोग करने के लिए memcache/redis उदाहरणों के सेट से कुछ भी हो सकता है। यहां चुनौती आपके कैश किए गए डेटा को अपडेट या अमान्य करने के लिए नीचे आती है।
माइग्रेटिंग - डेटा डेटा स्टोर में आपके डेटा को माइग्रेट करना जो आपकी आवश्यकताओं का बेहतर प्रतिनिधित्व करता है, भी एक अच्छा विचार हो सकता है। यदि आपको बड़े पैमाने पर लिखने, या बहुत बड़े पैमाने पर पढ़ने के परिदृश्यों को संभालने की आवश्यकता है, तो कोई भी SQL डेटाबेस जारी नहीं रख सकता है। आप कभी एसक्यूएल पर फेसबुक या ट्विटर की पसंद को संभाल सकते हैं।
के बीच में कुछ - आप इसे पर निर्भर करता है पैमाने पर करने की जरूरत के रूप में आप क्या कर रहे हैं और अपने दर्द अंक क्या किसी परिस्थिति के लिए सबसे अच्छा समाधान हो जाएगा के रूप में कर रहे हैं जहां। कई डेवलपर्स और प्रशासक डरते हैं कि डेटा कई स्थानों पर टूट गया है, लेकिन यह अक्सर सबसे अच्छा जवाब होता है। क्या आपके विश्लेषणात्मक डेटा को वास्तव में आपके मूल परिचालन डेटा के समान स्थान पर होना चाहिए? उस मामले के लिए क्या आपके लॉग इन को कसकर जोड़ना होगा? क्या आप बहुत से संबंधित प्रश्न कर रहे हैं? यह वास्तव में निर्भर करता है।
निजी राय आगे
मेरे लिए, मैं सुरक्षा तंत्र है कि SQL प्रदान करता है की तरह। कोर डेटा के लिए केंद्रीय स्टोर के रूप में यह मेरी पहली पसंद है। मैं आरडीबीएमएस के बेवकूफ भंडारण के रूप में व्यवहार करता हूं, मुझे किसी दिए गए प्लेटफॉर्म से बंधना पसंद नहीं है। मुझे लगता है कि कई लोग अपने डेटा को अधिक सामान्य करने की कोशिश करते हैं। प्रायः मैं एक एक्सएमएल या जेएसओएन फ़ील्ड को एक टेबल में जोड़ूंगा ताकि डेटा के अतिरिक्त टुकड़े स्कीम किए बिना संग्रहीत किए जा सकें, विशेष रूप से यदि कभी पूछताछ की संभावना नहीं है ... तो मेरे पास एप्लिकेशन ऑब्जेक्ट में मेरी ऑब्जेक्ट्स में गुण होंगे उन क्षेत्रों में स्टोर करें। एक अच्छा उदाहरण भुगतान हो सकता है ... यदि आप वर्तमान में एक सिस्टम का उपयोग कर रहे हैं, या एकाधिक सिस्टम (पेपैल, Google, अमेज़ॅन इत्यादि के साथ सीसी के लिए एक) तो लेनदेन का विवरण वास्तव में आपके रिकॉर्ड को प्रभावित नहीं करता है, क्यों बनाएं इस विस्तृत डेटा को स्टोर करने के लिए 5+ टेबल।
जब डेटा दस्तावेज़ स्टोर के लिए एक प्राकृतिक फिट है, तो मैं कहता हूं कि इसके लिए जाएं ... यदि आपके प्रश्नों का विशाल बहुमत किसी रिकॉर्ड या संग्रह के लिए बेहतर फिट बैठता है, तो इसे कम करें। इसे अपने प्राथमिक डेटा में दर्पण के रूप में रखना बहुत अच्छा है।
लिखने के लिए भारी डेटा के लिए आप कई प्रणालियों को खेलना चाहते हैं ... यह आपकी आवश्यकताओं पर भारी निर्भर करता है ... क्या आपको तेज़ हॉट-क्वेरी प्रदर्शन की आवश्यकता है? लोचदार खोज के साथ जाओ। क्या आपको पूर्ण विशाल क्षैतिज पैमाने, एचबीएस या कैसंद्रा की आवश्यकता है।
यहां ले जाने वाली कुंजी इसे मिश्रण करने से डरने की ज़रूरत नहीं है ... वास्तव में एक आकार सभी फिट बैठता नहीं है। एक तरफ के रूप में, मुझे लगता है कि अगर PostgreSQL बॉक्स में (ओपन-सोर्स वर्जन के लिए) समाधान के साथ आता है तो प्रतिकृति और स्वचालित विफलता के लिए भी वे उस बिंदु पर अधिक से अधिक बेहतर स्थिति में हैं।
मैं वास्तव में अंदर नहीं आया था, लेकिन मुझे लगता है कि मुझे यह उल्लेख करना चाहिए कि कई सास समाधान और अन्य प्रदाता हैं जो हाइब्रिड एसक्यूएल सिस्टम प्रदान करते हैं। आप स्थानीय रूप से MySQL/MariaDB के खिलाफ विकसित हो सकते हैं और एक वितरित स्टोरेज क्लस्टर के शीर्ष पर SQL के साथ सिस्टम पर तैनात कर सकते हैं। मुझे अभी भी लगता है कि एचबीएएस या लोचदार खोज लॉगिंग और एनालिटिकल डेटा के लिए बेहतर हैं, लेकिन शीर्ष समाधान पर एसक्यूएल भी आकर्षक है।
अधिक: http://www.mongodb.com/nosql-explained
हाय। मैं वास्तव में स्टार्टअप के बारे में चिंतित हूं जो इतनी जल्दी में होगा कि उनके पास एक sqlplus कमांड चलाने के लिए समय भी नहीं होगा ... – Sebas
@ सेबास: एक वैकल्पिक तालिका चलाने के बजाए इसके लिए और भी कुछ है। मेरी इच्छा है कि मैं अपने कई ऐप्स को केवल ऐप कोड को संशोधित करके बदल सकता हूं जो रिकॉर्ड सहेजता है। मुझे गलत मत समझो, मैं एक मोंगो फैनबॉय के काफी विपरीत हूं। व्यक्तिगत रूप से मुझे लगता है कि रेल डिग्रेशन जैसे देव मॉडल आरडीबीएमएस के शीर्ष पर बहुत चपलता ला सकते हैं। लेकिन मुझे क्रेडिट देना है कि स्कीमा-फ्री * करता है * एक तेज़ और कम घर्षण देव अनुभव करता है। –
मैं आपके द्वारा विकसित विचार के खिलाफ बहस नहीं कर रहा हूं। मैं मुख्य "घर्षण" पर सहमत नहीं हूं, "समय लेने वाली" लोगों को नियमित रूप से rdbms के खिलाफ लोगों को अपमानित करता है। मैं बस इसे समझ में नहीं आता। यह बहुत तेज है और बिल्कुल प्रतिबंधित नहीं है ... जब तक कि आप किसी प्रकार के जावा जटिल ढांचे का उपयोग नहीं कर रहे हैं, लेकिन फिर भी, आप एक सही झटका होगा ... आपने मुझे अपनी टिप्पणी के साथ हंसी बना दिया :) – Sebas