यह एक क्लासिक समय/अंतरिक्ष व्यापार है।
आपके इंडेक्स में दस्तावेज़ डेटा उत्सर्जित करने से डिस्क पर इंडेक्स फ़ाइल का आकार बढ़ जाएगा क्योंकि CouchDB में उत्सर्जित डेटा सीधे इंडेक्स फ़ाइल में शामिल होता है। हालांकि, इसका मतलब यह है कि, जब आपके डेटा से पूछताछ की जाती है, तो कॉच डीबी डिस्क पर इंडेक्स फ़ाइल से सामग्री को सीधे स्ट्रीम कर सकती है। यह स्पष्ट रूप से काफी तेज़ है।
include_docs=true
पर निर्भर करते हुए आपकी ऑन-डिस्क इंडेक्स के आकार में कमी आएगी, यह सच है। हालांकि, पूछताछ पर, कोचडीबी को प्रत्येक लौटाई गई पंक्ति के लिए एक दस्तावेज़ पढ़ना होगा। इसमें मुख्य डेटा फ़ाइल से अनिवार्य रूप से यादृच्छिक दस्तावेज़ लुकअप शामिल हैं, जिसका अर्थ है कि डेटा लौटने की लागत और समय महत्वपूर्ण रूप से बढ़ता है।
जबकि दस्तावेज़ों की छोटी संख्या के लिए क्वेरी समय अंतर धीमा है, यह एप्लिकेशन द्वारा किए गए हर कॉल पर जोड़ देगा। मेरे लिए, इसलिए, किसी दस्तावेज़ से आवश्यक फ़ील्ड को इंडेक्स में उत्सर्जित करना आमतौर पर सही कॉल होता है - डिस्क सस्ता है, उपयोगकर्ता का ध्यान कम हो जाता है। यह व्यापक रूप से एक संबंधपरक डेटाबेस में कवर इंडेक्स का उपयोग करने के समान है, सलाह का एक और व्यापक रूप से प्रतिबिंबित टुकड़ा।
मैंने अंतर के बारे में महसूस करने के लिए पूरी तरह से अवैज्ञानिक test on this किया था। मुझे प्रतिक्रिया समय में 8x की वृद्धि हुई और include_docs=true
का उपयोग करते समय सीपीयू में 50% की वृद्धि हुई, जब एक दृश्य की तुलना में 100,000 दस्तावेज़ों को पढ़ने के लिए जहां दस्तावेजों को सीधे इंडेक्स में ही उत्सर्जित किया गया था।
स्रोत
2017-02-04 19:27:55
सही, धन्यवाद। मुझे दौड़ की स्थिति के बारे में पढ़ना याद है, लेकिन उत्सव में डॉक्टर को शामिल करने का साइड इफेक्ट तब तक मेरे साथ नहीं हुआ था। – kolosy