37

मैं के बारे में बात की एक बहुत कुछ सुनने के लिए किया गया है स्कीमा-रहित (अक्सर वितरित) MongoDB, CouchDB, SimpleDB, आदि जैसे डाटाबेस सिस्टम ...स्कीमालेस डेटाबेस सिस्टम का आकर्षण क्या है?

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

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

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

+0

मोंगोडीबी (कम से कम मोंगोस के साथ) _NOT_ स्कीमलेस है। –

उत्तर

27

मैं सिर्फ एक या दो सामान्य कारणों की फोन करता हूँ

  1. अत्यधिक वितरण प्रणाली के साथ

    (मुझे यकीन है कि लोगों को निबंध लेखन जवाब दिया जाएगा हूँ), किसी भी डेटा सेट कई सर्वरों भर में फैले जा सकता है। जब ऐसा होता है, तो डीबी इंजन की गारंटी देने वाली रिलेशनल बाधाएं बहुत कम हो जाती हैं। आपकी रेफरेंसियल अखंडता के कुछ को एप्लिकेशन कोड में संभालना होगा।ऐसा करते समय, आप जल्दी से कई दर्द अंक की खोज करेंगे:

    • अपने तर्क कई परतों (एप्लिकेशन और डाटाबेस)
    • अपने तर्क कई भाषाओं में फैला हुआ है (एसक्यूएल और अपनी पसंद के अनुप्रयोग भाषा) में फैले

    परिणाम यह है कि तर्क कम encapsulated, कम पोर्टेबल, और बदलने के लिए बहुत महंगा है। कई देव खुद को ऐप कोड में और अधिक डेटाबेस में कम तर्क लिखते हैं। चरम पर ले लिया, डेटाबेस स्कीमा अप्रासंगिक हो जाता है।

  2. स्कीमा प्रबंधन-विशेष रूप से उन प्रणालियों पर जहां डाउनटाइम एक विकल्प नहीं है-मुश्किल है। स्कीमा जटिलता को कम करने से उस कठिनाई कम हो जाती है।

  3. एसीआईडी ​​वितरित सिस्टम (BASE, CAP, आदि) के लिए बहुत अच्छी तरह से काम नहीं करता है। एसक्यूएल भाषा (और एक निश्चित हद तक पूरा संबंध मॉडल) एक लेनदेन एसीआईडी ​​दुनिया के लिए अनुकूलित है। तो कुछ SQL भाषा सुविधाओं और सर्वोत्तम प्रथाओं बेकार हैं जबकि अन्य वास्तव में हानिकारक हैं। कुछ डेवलपर्स "अनाज के खिलाफ" के बारे में असहज महसूस करते हैं और एसक्यूएल को पूरी तरह से ऐसी भाषा के पक्ष में छोड़ना पसंद करते हैं जो उनकी आवश्यकताओं के लिए जमीन से डिजाइन किया गया था।

  4. लागत: अधिकांश आरडीबीएमएस सिस्टम मुक्त नहीं हैं। स्केलिंग में नेता (ओरेकल, साइबेस, एसक्यूएल सर्वर) सभी वाणिज्यिक उत्पाद हैं। बड़े ("वेब स्केल") सिस्टम से निपटने पर, डेटाबेस लाइसेंसिंग लागत हार्डवेयर लागत को पूरा या पार कर सकती है! लागत काफी अधिक सामान्य निर्माण बदलने/(सभी महत्वपूर्ण NoSQL प्रसाद ओएसएस कर रहे हैं) एक ओएसएस भेंट की चोटी पर एक कस्टम समाधान निर्माण की दिशा में काफी विचार खरीदने के लिए कर रहे हैं

+0

मूल्य निर्धारण के बारे में महान बिंदु के बारे में नहीं। शुरुआत में उस बारे में सोचा नहीं था। – Chet

+8

मुझे नहीं लगता कि लागत आरडीबीएमएस बनाम एनओएसक्यूएल समाधान के साथ नहीं जाने के विचारों में से एक होना चाहिए। वहां बहुत सारे मुक्त ओपन सोर्स आरडीबीएमएस हैं, जैसे कि माईएसक्यूएल और पोस्टग्रेस जो काफी अच्छी तरह से स्केल कर सकते हैं। –

+3

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

4

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

यह वस्तुओं से निपटने के दौरान विशेष रूप से आसान है। आप कई मामलों में सिर्फ ऑब्जेक्ट को नेस्टेड दस्तावेज़ों की श्रृंखला के रूप में स्टोर कर सकते हैं।

+0

फ्लिप पक्ष पर, यदि नेस्टेड ऑब्जेक्ट्स साझा किए जाते हैं तो आपको उन्हें अन्य टेबल पर खींचना चाहिए। दस्तावेज़ उन्मुख डेटाबेस के बारे में अच्छी बात यह है कि आपके पास एक विकल्प है: या तो ऑब्जेक्ट को अलग इकाई या नेस्टेड रिकॉर्ड के रूप में बनाएं। – Alexey

-7

आम तौर पर आकर्षण सांप के तेल का होता है - अधिकांश लोगों को उनके संबंध में संबंधपरक प्रमेय के बारे में कोई जानकारी नहीं है और एक स्तर बनाने वाले पेशेवरों पर एसक्यूएल बोलते हैं। कोई एहसास नहीं है कि एसीआईडी ​​स्थितियां क्या हैं, इसलिए वे महत्वपूर्ण हैं आदि

यह नहीं कह रहा कि उनके पास वैध उपयोग नहीं हैं .... केवल यह कहकर कि ज्यादातर आकर्षण यह नहीं जानते कि उन्हें क्या पता होना चाहिए और बेवकूफ निष्कर्ष निकालना चाहिए। दोबारा, हर कोई ऐसा नहीं है, लेकिन अधिकांश डेवलपर्स उनके पक्ष में हैं - उनकी समझ में अच्छा नहीं है कि डेटाबेस सिस्टम किसके लिए जिम्मेदार है।

+0

एनओएसक्ल की तरफ आकर्षण का अपना बिंदु रेड rdbms –

7

प्राथमिक चिंता का विषय होना चाहिए कि तुम क्या आवश्यकता क्यों है अपने डेटा के साथ करने के लिए। यदि आपके पास एक विशाल डेटा सेट है और एक पारंपरिक आरडीबीएमएस को बाधा बनने के लिए ढूंढ रहे हैं तो आप एक स्कीमालेस या NOSQL समाधान के साथ प्रयोग करना चाह सकते हैं।

अधिकांश वातावरण जो मुझे NOSQL समाधानों का उपयोग करने के बारे में पता है, वे किसी भी रूप या फैशन में आरडीबीएमएस समाधान का भी उपयोग करते हैं। आरडीबीएमएस आधारित समाधान मानक हैं जहां डेटा अखंडता बेहद महत्वपूर्ण है और आपको एसीआईडी ​​लेनदेन की आवश्यकता है। हालांकि यदि आपका सिस्टम अत्यधिक लेनदेन आधारित नहीं है लेकिन आपको वास्तविक तेज़ी से स्केल करने या स्केल करने की आवश्यकता है, तो NOSQL समाधान वांछनीय हो सकता है।

3

नोएसक्यूएल डेटाबेस स्कीमालेस नहीं हैं; स्कीमा डेटा में एम्बेडेड है। उन्हें सेमिस्ट्राक्चर कहा जाता है। कुछ केवी डेटा स्टोर्स में, हालांकि, स्कीमा को कोड में भी एम्बेड किया जा सकता है। अर्ध-संरचित दृष्टिकोण का लाभ दो गुना है: लचीलापन जिसमें कॉलम पंक्ति का हिस्सा होते हैं (एक पंक्ति में 5 कॉलम हो सकते हैं और दूसरे में 5 अलग-अलग कॉलम होते हैं, और कॉलम की विशेषताओं में लचीलापन (उदाहरण के लिए, चर लंबाई)

6

स्कीमा-दो कारणों के लिए बहुत अच्छा है:। दस्तावेज़ संग्रहण

  • Sparse-Matrix और Entity-Attribute-Value भंडारण समस्याओं का समाधान करता है के

    1. मस्तिष्क के अनुकूलन intuitiveness

    मैं बो का उपयोग किया है रूबी पर रूबी में उत्पादन अनुप्रयोगों के लिए वें एसक्यूएल और नो-एसक्यूएल। मैं डेटाबेस विशेषज्ञ नहीं हूं और मुझे एसीआईडी ​​और इसी तरह की शर्तों को गुगल करने के लिए कबूल करना है क्योंकि वे मुझसे परिचित नहीं हैं।

    "आह हा! एक और जानकार प्रवृत्ति अनुयायी नवीनतम बैंडवागॉन पर कूद रहा है" आप कह सकते हैं। लेकिन, वास्तव में, मैं अपने हाल के 2 साल पुराने ऐप पर मोंगोडीबी का उपयोग करने के अपने फैसले से वास्तव में प्रसन्न हूं और यहां क्यों है ...

    मस्तिष्क-अनुकूलन अंतर्ज्ञान की फ्लिप-पक्ष Magento ई- वाणिज्य प्रणाली मैं इसे बाँधना नहीं चाहता क्योंकि यह उस समय मुझे अच्छी तरह से सेवा करता था लेकिन यह वास्तव में प्रोसेसर को प्रत्येक उत्पाद के गुणों की गणना करने की कोशिश कर रहा था। अंतर्निहित कारण उत्पाद डेटा की इकाई-विशेषता-मूल्य स्टोर था। कैश या शापित होना समाधान था।

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

    1. उत्पाद का नाम
    2. मूल्य
    3. उत्पाद प्रकार (

    तो यह कठिन और नोट, रंग कोडिंग और अन्य तालिकाओं के लिए लिंक में शामिल (हां हो जाता है .. रिश्ते)

    1. रंग (केवल कुछ उत्पादों)
    2. आकार (एक्स बड़े, बड़े, एस.एम. सभी) - केवल उत्पादों के लिए 8'9'10, गोल्फ क्लब एक अलग पैमाने का उपयोग करते हैं
    3. रंग 2. बिल्ली कॉलर में दो रंग विकल्प होते हैं।
    4. वाट क्षमता
    5. फिक्सिंग प्रकार (पुरुष, महिला)

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

    संक्षेप में, दस्तावेज़ स्टोर बहुत अच्छे होते हैं जब आपके पास एक स्पैर मैट्रिक्स समस्या या ऑब्जेक्ट्स होते हैं जो समय के साथ अपने गुणों को बदलते हैं। दो साल तक नो-एसक्यूएल दुनिया में रहने के बाद, मैं एक असली दुनिया के अनुप्रयोग के बारे में नहीं सोच सकता जिसमें उन सुविधाओं की सुविधा नहीं है क्योंकि दुनिया खुद ही एक दस्तावेज़ स्टोर की तरह दिखती है।

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