संपादित करें:
अभी-अभी मिला एक जवाब ब्रेंडन मैकएडम्स का, 10gen का लड़का, जो स्पष्ट रूप से मुझसे अधिक आधिकारिक है, और वह दस्तावेज़ों को एम्बेड करने की अनुशंसा करता है।
पुराना लेख:
पहला उपयोगकर्ता की प्रत्येक टिप्पणी ऑब्जेक्ट आईडी में मैन्युअल रूप से शामिल करना है जो वे संबंधित हैं।
comment: { text : "...",
date: "...",
user: ObjectId("4b866f08234ae01d21d89604"),
votes: 7 }
दूसरा, और चतुर तरीका है DBRefs का उपयोग करना
हम अपनी डिस्क में अतिरिक्त I/O जोड़ते हैं, प्रदर्शन खो रहे हैं क्या मैं सही हूँ? (मुझे यकीन नहीं है कि यह आंतरिक रूप से कैसे काम करता है) इसलिए यदि संभव हो तो हमें लिंक करने से बचना चाहिए, है ना?
हां - एक और प्रश्न होगा, लेकिन ड्राइवर इसे आपके लिए करेगा - आप इसे सिंटैक्स चीनी के रूप में सोच सकते हैं। क्या यह प्रदर्शन को प्रभावित करता है? वास्तव में, यह भी निर्भर करता है :) मोंगो के इतनी तेज गति से चलने का एक कारण यह है कि वह मेमोरी मैप की गई फ़ाइलें
और मोंगो सभी कामकाजी सेट (प्लस इंडेक्स) को सीधे रैम में रखने की पूरी कोशिश करता है। और हर 60 सेकंड में (डिफ़ॉल्ट रूप से) यह रैम स्नैपशॉट को डिस्क आधारित फ़ाइल के साथ सिंक करता है।
जब मैं कह रहा हूं वर्किंग सेट , मेरा मतलब है कि जिन चीजों के साथ आप काम कर रहे हैं:आपके पास तीन संग्रह हो सकते हैं - foo , बार , बाज़ , लेकिन अगर आप अभी केवल फू और बार के साथ काम कर रहे हैं, तो उन्हें रैम में लोड किया जाना चाहिए, जबकि बाज डिस्क पर छोड़ दिया जाता है। इसके अलावा मेमोरी मैप की गई फाइलें संग्रह के केवल एक हिस्से को लोड करने की अनुमति देती हैं। इसलिए यदि आप Engadget या Techcrunch जैसी कोई चीज़ बना रहे हैं, तो इस बात की बहुत अधिक संभावना है कि वर्किंग सेट पिछले कुछ दिनों की टिप्पणियां होंगी और पुराने पृष्ठों को कम बार-बार पुनर्जीवित किया जाएगा (टिप्पणियों को मांग पर स्मृति में रखा जाएगा), इसलिए ऐसा नहीं होता है। प्रदर्शन को महत्वपूर्ण रूप से प्रभावित नहीं करता है।
तो संक्षेप में:जब तक आप मेमोरी में काम करना जारी रखते हैं (आप सोच सकते हैं कि कैशिंग पढ़ना/लिखना है), उन चीजों को लाना सुपरफास्ट है और एक और क्वेरी कोई समस्या नहीं होगी। यदि आप डेटा के ऐसे स्लाइस के साथ काम कर रहे हैं जो मेमोरी में फिट नहीं होता है, तो गति होगी गिरावट , लेकिन मैं अब आपकी परिस्थितियों को नहीं जानता -- यह स्वीकार्य हो सकता है, इसलिए दोनों ही मामलों में मैं उपयोग करें का चयन करता हूं लिंक करना।