MongoDB Schema Design - Many small documents or fewer large documents? -


पृष्ठभूमि
मैं हमारे RDBMS डेटाबेस से MongoDB को रूपांतरण के लिए प्रोटोटाइप कर रहा हूं। निन्दा करने पर, ऐसा लगता है कि मेरे पास दो विकल्प हैं, जो कई छोटे (लाखों) दस्तावेजों की ओर जाता है या जो कम (सैकड़ों) बड़े दस्तावेजों की ओर जाता है।

अगर मैं इसे नीचे खींचना कर सकता हूं एक सरल एनालॉग के लिए, यह कम कस्टमर दस्तावेजों के साथ संग्रह (जैसे जावा में) के बीच अंतर होगा:

 class ग्राहक {निजी स्ट्रिंग का नाम; निजी पता पते; // प्रत्येक क्रेडिट कार्ड में सैकड़ों भुगतान उदाहरण निजी सेट हैं & lt; क्रेडिट कार्ड & gt; क्रेडिट कार्ड; } 

या इस तरह कई भुगतान दस्तावेजों के साथ कई संग्रह:

<प्री> वर्ग भुगतान {निजी ग्राहक ग्राहक; निजी क्रेडिट कार्ड क्रेडिट; निजी तिथि पेडेट; निजी फ्लोट पेएमाउंट; }

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

मैंने बहुत कुछ देखा है, लेकिन मैंने किसी भी मोंगोडीबी स्कीमा में सर्वश्रेष्ठ प्रक्रियाओं जो मेरे प्रश्न का उत्तर देने में मेरी सहायता करेगा।

आपको निश्चित रूप से उन क्वेरी के लिए अनुकूलित करना होगा जो आप हैं

आपके विवरण के आधार पर यह मेरा सबसे अच्छा अनुमान है।

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

पेमेंट ऑब्जेक्ट के पास स्वतः अपना आईडी और इंडेक्स होगा। आप संभवत: ग्राहक संदर्भ पर एक इंडेक्स भी जोड़ना चाहेंगे।

यह आपको हर बार पूरे ग्राहक ऑब्जेक्ट को संग्रहित किए बिना ग्राहक द्वारा भुगतान की खोज करने की अनुमति देगा।

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

तो सीधे अपने प्रश्न का उत्तर देने के लिए: क्या MongoDB को कई, कई छोटे दस्तावेज़ों को पसंद करने के लिए डिज़ाइन किया गया है या कम बड़े दस्तावेज़?

मोंगोडीबी इंडेक्टेड प्रविष्टियों को बहुत जल्दी से ढूंढने के लिए डिज़ाइन किया गया है एक बड़े घास का ढेर में एक कुछ सुई खोजने में MongoDB बहुत अच्छा है घास का ढेर में सुइयों का सबसे अधिक ढूँढने में मोंगो डीबी नहीं बहुत अच्छा है तो अपने सबसे सामान्य उपयोग के मामलों के बारे में अपने डेटा का निर्माण करें और दुर्लभ उपयोग मामलों के लिए नौकरियों को कम करें / कम करें।


Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -