65

मैं अगर मैं इस मामले CouchDB में, एक दस्तावेज़ आधारित डेटाबेस के साथ कुछ आवश्यकताओं को पूरा कर सकते हैं देखने के लिए कोशिश कर रहा हूँ। दो सामान्य आवश्यकताओं: जो अद्वितीय सूचकांक यह पेशेवरों/दस्तावेज़ आधारित डेटाबेस बनाम रिलेशनल डेटाबेस की विपक्ष

  • ई-कॉमर्स वेब एप्लिकेशन eBay की तरह (better description here) पर है कुछ क्षेत्रों के साथ संस्थाओं के

    • CRUD।

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

    क्या आप मुझे बता सकते हैं कि मैं इन आवश्यकताओं के लिए दस्तावेज़ उन्मुख डेटाबेस का उपयोग करने का प्रयास करते समय से नाशपाती पूछ रहा हूं?

  • +1

    "एक एल्म से नाशपाती * पूछना" = असंभव पूछना। (जेसन का लिंक मर चुका है।) – Dennis

    उत्तर

    3

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

    +7

    मैं सहमत नहीं हूं। दस्तावेज डेटाबेस मुख्य रूप से दस्तावेजों को संग्रहित करने के लिए नहीं है। यह डेटा के पदानुक्रमित टुकड़ों को संग्रहित करने के लिए है (या तो JSON या XML)। उदाहरण के लिए मोंगो डीबी के साथ आप नेस्टेड जेएसओएन फ़ील्ड और जेएसओएन एरे इंडेक्स कर सकते हैं। आप मोंगोडीबी (ग्रिडफ) में दस्तावेजों (फाइलों) को स्टोर कर सकते हैं लेकिन मोंगोडीबी अभी भी उपयोगी होगा अगर आप मोंगोडीबी के साथ दस्तावेज़ (फाइलें) स्टोर नहीं कर सके। मुझे लगता है कि मोंगोडीबी को JSON डीबी कहा जाना चाहिए और दस्तावेज़ डीबी नहीं होना चाहिए। – Theo

    +1

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

    +1

    विकिपीडिया प्रविष्टि http://en.wikipedia.org/wiki/Document-oriented_database को वास्तविक दस्तावेज़ों के लिए अलमारियाँ दर्ज करने से पहले दस्तावेज़ उन्मुख डेटाबेस वास्तव में अधिक पुष्टि करने के लिए एक लायक है, के बाद से अद्यतन किया गया है। –

    33

    आप कैसे आप एक दस्तावेज़ उन्मुख तरह से आवेदन दृष्टिकोण के बारे में सोच की जरूरत है। यदि आप बस आरडीबीएमएस में समस्या का मॉडल करने के तरीके को दोहराने का प्रयास करते हैं तो आप असफल हो जाएंगे। ऐसे कई व्यापार-बंद भी हैं जिन्हें आप बनाना चाहते हैं। ([ed: यह सुनिश्चित नहीं है कि यह तर्क में कैसे संबंध रखता है लेकिन:] याद रखें कि कॉच डीबी के डिज़ाइन का मानना ​​है कि आपके पास कई नोड्स का एक सक्रिय समूह होगा जो किसी भी समय विफल हो सकता है। आपका ऐप डेटाबेस डेटाबेस नोड्स में से किसी एक को कैसे संभालने जा रहा है इसके तहत?)

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

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

    • CRUD:

      तो अपने उदाहरणों पर गौर कर सकते हैं।

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

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

    तरह

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

    +0

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

    +0

    @ टिम लोवेल-स्मिथ + केरर +1 मुझे पेपर आधारित दस्तावेजों के साथ असली दुनिया की तुलना पसंद है। :) अच्छा बिंदु नोटिंग CouchDB क्लस्टरिंग की आवश्यकता/मानता है। यह भी एक अच्छा मुद्दा है कि स्थिरता हमेशा गारंटी नहीं है। मेरे लिए एक आरडीबी समर्थक के रूप में यह (दूसरों के बीच एक नियम, निश्चित रूप से) के रूप में पढ़ता है: "यदि स्थिरता महत्वपूर्ण है तो एक रिलेशनल डबबेस का उपयोग करें"। सही? (नोट: मैं वर्तमान में एक नई परियोजना शुरू कर रहा हूं, मैं तय करना चाहता हूं कि नोएसक्यूएल या आरडीबी का उपयोग करना है या नहीं।) –

    14

    क्या डेटा को सामान्य करने की आवश्यकता है?

    • हाँ: संबंधपरक का उपयोग करें।
    • नहीं: दस्तावेज़ का उपयोग करें।
    +10

    मुझे पता है कि आपने बहुत समय पहले इसका उत्तर दिया था, लेकिन मैंने सोचा कि मैं पूछूंगा ... आप कब करते हैं सामान्य करने के लिए "जरूरत"? सामान्यीकरण एक विकल्प/सर्वोत्तम अभ्यास नहीं है? –

    +1

    @ मैट, डेटा सामान्यीकरण सिर्फ एक उपकरण है। जिस डिग्री को आप डेटा को सामान्य करते हैं वह डेटाबेस डिज़ाइन प्रयास और स्थिरता रखरखाव प्रयास के बीच एक व्यापार है। – pyon

    +5

    मैं इस बात से सहमत नहीं होगा कि यह डीबी मॉडल का उपयोग करने के लिए अलग करने का एक अच्छा तरीका है। दोनों संबंधपरक और दस्तावेज़ आधारित डेटाबेस में सामान्यीकरण अनिवार्य है। मेरी आशंका यह है कि लेनदेन का आकार वैध भेदभाव होने की संभावना है। – Munhitsu

    4

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

    • ProductID
    • विवरण
    • UnitPrice
    • lotsize
    • विनिर्देशों

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

    +2

    SQL सर्वर 2008 डेटाबेस का एक उदाहरण है जो दोनों (FILESTREAM डेटाटाइप का उपयोग करके) कर सकता है। –

    +0

    वाह। बहुत बढ़िया सुविधा। (मैंने कभी भी SQL Server 2008 का उपयोग नहीं किया है।) – pyon

    +0

    बस एक ढीला 'दस्तावेज़' या फ़ाइल स्टोर करने में सक्षम होने से यह दस्तावेज़ उन्मुख डेटाबेस सिस्टम नहीं बनता है। वास्तविक दस्तावेज उन्मुख डेटाबेस आपको सूचकांक के लिए सुविधाएं प्रदान करते हैं और दस्तावेजों के साथ कुशलतापूर्वक काम करते हैं। –

    7

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

    कॉचडब पर मेरा मुख्य वाह कारक प्रतिकृति सामग्री और संस्करण प्रणाली में काम कर रहा है।

    मैं अपने मस्तिष्क को पिछले महीने के लिए सोफेडब के स्टोरेज तंत्र को पकड़ने की कोशिश कर रहा हूं, जाहिर है कि यह बी पेड़ों का उपयोग करता है लेकिन सामान्य रूप के आधार पर डेटा स्टोर नहीं करता है। क्या इसका मतलब यह है कि यह वास्तव में वास्तव में स्मार्ट है और यह महसूस करता है कि डेटा के बिट्स को दोहराया जाता है, इसलिए बस इस बी वृक्ष प्रविष्टि को पॉइंटर बनाएं?

    अब तक मैं xml दस्तावेज़, कॉन्फ़िगरेशन फ़ाइलों, बेस 64 स्ट्रिंग्स पर स्ट्रीम की गई संसाधन फ़ाइलों के बारे में सोच रहा हूं।

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

    आरडीएफ डेटा या यहां तक ​​कि मुफ्त फॉर्म टेक्स्ट को संग्रहीत करने में उपयोगी हो सकता है।

    -1

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

    +1

    मुझे नहीं लगता कि सीआरयूडी से आरईएसटी की तुलना करना दस्तावेज़-उन्मुख डेटाबेस का उपयोग करने के बारे में सोचने के लिए पर्याप्त है। विचार करने के लिए बहुत सी चीजें हैं, आरईएसटी <> सीआरयूडी इसका एक छोटा सा हिस्सा है। – igorsantos07

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