NoSQL डेटाबेस डिजाइन के लिए सबसे अच्छा अभ्यास


34

मैंने अभी एक NoSQL डॉक्यूमेंट आधारित डेटाबेस (MongoDB) का उपयोग करना शुरू किया है और मैं डेटाबेस को डिजाइन करने के सर्वोत्तम तरीकों के बारे में उत्सुक हूं।

मुझे लगता है कि आर्किटेक्चर रिलेशनल डेटाबेस से अलग होना चाहिए? क्या मुझे अभी भी एक सामान्यीकृत डेटाबेस के लिए लक्ष्य बनाना चाहिए?

उदाहरण के लिए मेरे पास एक विशेष उपयोग का मामला है;

मेरे पास किराये के इतिहास वाला एक उपयोगकर्ता है (पते का सरणी) उस सरणी को उपयोगकर्ता पर एक सरणी होना चाहिए या साझा कुंजी के साथ एक अलग संग्रह के रूप में होना चाहिए?


विदेशी कुंजियों का उपयोग न करें
ड्यूकफैगिंग

SQL :-) का उपयोग न करें। गंभीरता से, "NoSQL" आपको तकनीक के बारे में कुछ और बताता है?

मुझे लगता है कि यह धागा स्टैक एक्सचेंज के डेटाबेस साइट में होना चाहिए। वहाँ आप इस मुद्दे के बारे में अधिक मदद पा सकते हैं।
लुइस एरीओजस

जवाबों:


23

NoSQL डेटाबेस डिजाइन के लिए उपयुक्त दृष्टिकोण एक DDD ( डोमेन ड्रिवेन डिज़ाइन ) है। RDBMS डिज़ाइन करने वाले कुछ लोगों के लिए, NoSql Sql एंटी-पैटर्न की तरह दिखता है और DDD के दायरे में विचार करने पर यह अधिक मायने रखता है।

पतों के उपयोग के आधार पर, आप इसे अपने किराये के इतिहास मॉडल / इकाई के अंदर एक मूल्य वस्तु के रूप में परिभाषित कर सकते हैं।

यहाँ आप कुछ संदर्भ हैं जो NoSQL के साथ डिजाइन पर विचार स्पष्ट कर सकते हैं:


19

टी एल; डॉ

RDBMS में सामान्यीकरण आपको रिलेशनल प्रतिमान की ताकत का लाभ उठाने की अनुमति देता है।

NoSQL में असामान्यता आपको NoSQL प्रतिमान की ताकत का लाभ उठाने की अनुमति देती है।

लंबा जवाब

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

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

NoSql के लिए मॉडल करने के लिए, आपको संस्थाओं और संबंधों के बजाय पदानुक्रम और समुच्चय के संदर्भ में सोचने की आवश्यकता है। इसलिए आपके पास व्यक्ति, किराये के पते और उनके बीच कोई संबंध नहीं है। आपके पास किराये के रिकॉर्ड हैं जो प्रत्येक व्यक्ति के लिए समग्र हैं जो किराये के पते उनके पास है।

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

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

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

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

RDBMS में, भाज्यकरण प्रभावी रूप से आपके DB को NoSQL के लिए अपंग करता है। तो सामान्य रूप से आप विपरीत चाहते हैं, अर्थात सामान्यीकरण। यदि आप नहीं करते हैं, तो आपको इसके बजाय NoSQL DB का उपयोग करना चाहिए। जब तक आपको दोनों की थोड़ी जरूरत न हो।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.