2010-11-23 16 views
8

कृपया मेरी अंग्रेजी क्षमा करें, मैं अभी भी इसे मास्टर करने की कोशिश कर रहा हूं।वस्तुओं के लिए मोंगोडीबी संबंध

मैंने मोंगोडीबी (सी # पृष्ठभूमि से आना) सीखना शुरू कर दिया है और मुझे मोंगोडीबी का विचार पसंद है। मुझे इंटरनेट पर उदाहरणों के साथ कुछ समस्याएं हैं।

लोकप्रिय ब्लॉग पोस्ट/टिप्पणियां उदाहरण लें। पोस्ट में इसके साथ कोई भी या कई टिप्पणियां नहीं हैं। मैं पोस्ट ऑब्जेक्ट बनाता हूं, पोस्ट में IList को कुछ टिप्पणी ऑब्जेक्ट्स जोड़ें। कोई बात नहीं।

क्या मैं इसे मोनो डीबी में सिर्फ "पोस्ट" संग्रह में जोड़ता हूं या मेरे पास दो संग्रह होना चाहिए - एक blog.posts और blog.posts.comments है?

मेरे पास एक उचित जटिल ऑब्जेक्ट मॉडल है, इसके बारे में सोचने का सबसे आसान तरीका बैंकिंग सिस्टम के रूप में है - हमारा खनन है। मैंने स्क्वायर ब्रैकेट के साथ टेबल को हाइलाइट करने का प्रयास किया।

[उपयोगकर्ता] एक या कई [लेखा] है कि एक या कई [लेनदेन] जो एक और केवल एक [प्रकार] है होता है। [लेनदेन] में एक या अधिक [टैग] लेनदेन को सौंपा जा सकता है। [उपयोगकर्ता] अपना खुद का [टैग] उस उपयोगकर्ता खाते के लिए अद्वितीय बनाएं और हमें कभी-कभी उन टैग्स द्वारा रिपोर्टिंग की पेशकश करने की आवश्यकता होती है (उदाहरण के लिए मई, टैग ड्रिलिंग-व्यय $ 123456.78 था)।

अनुक्रमण के लिए, मैंने सोचा होगा कि उन्हें अलग करना अच्छा होगा लेकिन मुझे चिंता है कि पुरानी आरबीडीएमएस दिनों से यह सोच खराब है।

एक तरह से, यह ब्लॉग उदाहरण की तरह है। मुझे यकीन नहीं है कि मेरे पास 1 होना चाहिए [खाता] संग्रह और वहां सभी जानकारी जारी रखें, या एक मध्यवर्ती चरण है जो इसे पृथक संग्रह में विभाजित करता है।

अन्य संबंधित क्वेरी है, जब आप आगे और आगे रहते हैं, तो क्या आप आमतौर पर उस रिकॉर्ड से जुड़े सब कुछ वापस प्राप्त करते हैं - भले ही आवश्यक नहीं है या आप सीमित हैं?

+2

ऐसा लगता है कि आपका डेटा मॉडल भारी संबंध है। मुझे नहीं लगता कि दस्तावेज़-आधारित डेटा-स्टोर इसके लिए उपयुक्त है (देखें @ हाइटैक्राइडर की प्रतिक्रिया)। नोएसक्यूएल का अर्थ है 'गैर-रिलेशनल डेटा-स्टोर', और 'एसक्यूएल वैकल्पिक' नहीं। यही कारण है कि NoSQL ऐसे सिस्टम के लिए एक बैल-शिट विपणन शब्द है। – rubayeet

उत्तर

12

यह निर्भर करता है।

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

यह रिश्तों पर निर्भर करता है - क्या उपयोगकर्ता-खाता एक-से-कई या कई से अधिक रिश्ते हैं? यदि यह कई लोगों में से एक है और खातों की संख्या कम है तो आप उन्हें उपयोगकर्ता दस्तावेज़ पर एक आईएलआईस्ट में डाल सकते हैं।

आप अभी भी अलग संग्रह के साथ मोंगोडीबी में संबंधों का मॉडल कर सकते हैं लेकिन डेटाबेस में कोई भी शामिल नहीं है, इसलिए आपको कोड में ऐसा करना होगा। उपयोगकर्ता को लोड करना और फिर अपने खाते लोड करना प्रदर्शन परिप्रेक्ष्य से ठीक हो सकता है।

आप दस्तावेज़ों पर INTO सरणी इंडेक्स कर सकते हैं। किसी सूचकांक (जैसे SQL) पर एक साधारण फ़ील्ड पर इंडेक्स होने के नाते इंडेक्स के बारे में मत सोचें। आप दस्तावेजों और टैग पर इंडेक्स पर टैग संग्रह का उपयोग, कह सकते हैं। (http://www.mongodb.org/display/DOCS/Indexes#Indexes-Arrays देखें)

जब आप डेटा पुनर्प्राप्त या लिखते हैं तो आप किसी आंशिक पढ़ने और किसी भी दस्तावेज़ का आंशिक लेखन कर सकते हैं।(http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields देखें)

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

एक और चिंता: आप टैग द्वारा कुल योग की गणना का उल्लेख करते हैं। यदि आप लेखांकन-गुणवत्ता लेनदेन स्थिरता चाहते हैं, तो मोंगोडीबी आपके लिए सही विकल्प नहीं हो सकता है। "अंतिम-स्थिरता" नोएसक्यूएल डेटा स्टोर्स के लिए गेम का नाम है और वे आम तौर पर वित्तीय लेनदेन के लिए उपयुक्त नहीं हैं। उदाहरण के लिए, इससे कोई फर्क नहीं पड़ता कि कोई उपयोगकर्ता 3 टिप्पणियों के साथ ब्लॉग पोस्ट देखता है जबकि दूसरा 4 देखता है क्योंकि वे अलग-अलग प्रतिकृति प्रतियों को हिट करते हैं जो अभी तक सिंक में नहीं हैं, लेकिन वित्तीय रिपोर्ट के लिए, इस तरह की स्थिरता मायने रखती है - आपका रिपोर्ट जोड़ नहीं सकती है!

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