सबसे पहले, एक चेतावनी: मैं दस्तावेज़ डेटाबेस के पीछे अवधारणाओं के लिए नया हूं, इसलिए यह एक पूरी तरह से स्पष्ट सवाल हो सकता है।क्या RavenDB इस अवधारणा के लिए एक अच्छा फिट है?
मुझे ऐसी प्रणाली तैयार करने की आवश्यकता है जो अत्यधिक जटिल उत्पादों को बनाने वाले हिस्सों की गहरी पदानुक्रमित सूची बनाए रखे। यह भौतिक घटकों को विस्तारित करेगा जो प्रत्येक भाग को बनाते हैं - और प्रत्येक भाग अन्य भागों के घटक हो सकता है - सभी तरह से अंतिम उत्पाद तक। इस तरह:
Widget
|- Sprocket
| |- A4 nut
| |- B15 screw
| |- Sprocket Backshell
|- Flange
| |- A4 washer
| |- Flange Housing
|- Widget Assembly
इस उदाहरण में विजेट को बाद में किसी अन्य उत्पाद के नीचे एक भाग के रूप में शामिल किया जा सकता है।
प्रत्येक उत्पाद में सैकड़ों हजारों हिस्सों में हजारों शामिल हो सकते हैं और प्रत्येक प्रकार के घटक में अलग-अलग, असंबद्ध गुण होते हैं जिन्हें बनाए रखा जाना चाहिए। इन गुणों में संबंधित भागों के बीच कनेक्शन शामिल हो सकते हैं।
हमारे पास इस प्रणाली का एक खराब-डिज़ाइन किया गया संस्करण है, एसक्यूएल सर्वर में, लगभग 120 कॉलम और कई मिलियन रिकॉर्ड वाले एक फ्लैट टेबल के रूप में। इस तालिका में लगभग 85% फ़ील्ड शून्य हैं। मेरा काम कुछ और अधिक रखरखाव और कुशल और कम त्रुटि-प्रवण के साथ इसे प्रतिस्थापित करना है।
एक संबंधपरक डेटाबेस में इसे कुशलता से बनाना सामान्यीकरण का मतलब होगा - इस मामले में, प्रत्येक प्रकार के हिस्से के लिए एक टेबल है। यह एक ऐसी समस्या होगी जो मुझे संदेह है क्योंकि सैकड़ों भाग प्रकार हैं, और अपने स्वयं के विशिष्ट गुणों के साथ नए भाग प्रकार नियमित रूप से जोड़े जाते हैं।
मैं इसके लिए रावेनडीबी का उपयोग करना चाहता हूं, क्योंकि दस्तावेज़ डेटाबेस भागों की गतिशील प्रकृति के अनुरूप होगा, लेकिन मुझे नहीं पता कि यह एक अच्छा फिट होगा या मैं सिस्टम को कैसे कार्यान्वित करूंगा दस्तावेजों के संदर्भ में। उत्पाद स्वयं मूल वस्तुएं हैं, लेकिन उनके आकार की वजह से मैं एक उत्पाद को एक दस्तावेज़ के रूप में स्टोर करने का जोखिम नहीं उठा सकता।
क्या रावेनडीबी इस अवधारणा के लिए उपयुक्त है? दस्तावेजों में इसका प्रतिनिधित्व करने के तरीके पर कोई संकेतक हैं?
यह मेरे प्रश्न का बहुत अधिक जवाब देता है - मुझे नहीं लगता कि रावेनडीबी यहां एक अच्छा फिट होगा। अंततः स्थिरता यहां एक समस्या होगी - मैं उस विशेषता के बारे में भूल गया था - और मानचित्र/कमी इस समस्या के साथ मुझे बहुत मदद नहीं करेगी, मुझे नहीं लगता। शर्म - मुझे भागों के डेटा को संग्रहीत करने के लिए दस्तावेज़ डेटाबेस की गतिशील स्कीमा प्रकृति पसंद है, लेकिन मुझे नहीं लगता कि मैं ग्राहक को दो स्वतंत्र डेटाबेस बनाए रखने पर साइन इन करने में सक्षम हूं ... –
यह एक दिलचस्प है। मुझे लगता है कि व्यावहारिक रूप से बहुत कम मामले हैं जहां आप अंतिम स्थिरता के साथ नहीं रह सकते हैं, क्योंकि अधिकांश समय आप किसी भी अंतर को पहचान नहीं पाएंगे (रैवेन्स इंडेक्सिंग बहुत तेज़ है, हालांकि यह असीमित होता है) और यहां तक कि यदि - आप स्थिरता को लागू कर सकते हैं उन प्रश्नों के लिए आसानी से। मैंने RavenDB के साथ कई व्यावसायिक अनुप्रयोगों का निर्माण किया है और इसे कोई समस्या नहीं मिली है (अन्य भी हैं)। मुझे कोई कारण नहीं दिख रहा है कि आपके ग्राहक को स्वतंत्र डीबीएस को बनाए रखने की आवश्यकता क्यों होगी। यदि आप उस पर अनुवर्ती करना चाहते हैं तो आप मुझे एक ईमेल छोड़ सकते हैं। –