छोटे संग्रह के लिए शार्पिंग प्रभावी है?


11

ऐसा लगता है कि अगर मेरे पास विशाल संग्रह है तो डेटाबेस शार्पिंग बहुत बढ़िया है। क्या होगा अगर मेरे पास काफी आकार के संग्रह हैं? मान लीजिए कि 100 000 000 दस्तावेजों (बहुत बड़ी टिप्पणियां नहीं) के 1 संग्रह के लिए पैनापन प्रभावी है। क्या यह 10 000 दस्तावेजों के साथ 10 000 संग्रह के लिए भी प्रभावी है?

(मुझे लगता है कि यह प्रश्न तालिका उन्मुख डेटाबेस के लिए अभी भी मान्य है यदि आप तालिकाओं और दस्तावेजों के साथ संग्रह को पंक्तियों के साथ बदलते हैं। यदि संभव हो तो मैं सैद्धांतिक उत्तर के साथ-साथ विशिष्ट MongoDB परिदृश्य में उत्तर जानना चाहूंगा, यदि सैद्धांतिक से अलग हो। जवाब।)

जवाबों:


5

क्या यह 10 000 दस्तावेजों के साथ 10 000 संग्रह के लिए भी प्रभावी है?

अधिकांश लोगों को "एकल बड़ा संग्रह" समस्या है और इसलिए इस डेटा को संतुलित करने के सिरदर्द को कम करने के लिए शार्किंग स्पष्ट रूप से उपयोगी है।

हालांकि, जब आपके पास 10 000 छोटे संग्रह होते हैं, तो आपका सिरदर्द संभवतः "डेटा को संतुलित करना" नहीं है। इस कई छोटे संग्रहों के साथ आपकी समस्या इन संग्रहों को ट्रैक करने की संभावना है। आपके दस्तावेज़ के आकार के आधार पर, आप वास्तव में होने के लिए पैनापन की निचली सीमा को भी नहीं तोड़ सकते।

वास्तव में छोटे संग्रह के लिए, आप अपने डेटा के स्थान को प्रबंधित करने के लिए अल्पज्ञात चाल का उपयोग कर सकते हैं ।

बेशक, इसे देखने का दूसरा तरीका यह है कि आपके पास 10k संग्रह क्यों हैं? एक संग्रह में सजातीय वस्तुओं की आवश्यकता नहीं होती है और 10k संग्रह के साथ उनमें से अधिकांश को उत्पन्न करना पड़ता है। एक ही संग्रह में अलग-अलग "प्रकार" डेटा संग्रहीत करना, संग्रह की संख्या को कम करना और फिर शार्क कुंजी के भाग के रूप में प्रकार को शामिल करना काफी संभव है।


धन्यवाद, मैं वास्तव में यह जानने की कोशिश कर रहा था कि क्या मैं सबसे अच्छा कर सकता हूं जो इन टन संग्रह से छुटकारा पा सकता है और एक बड़ा बना सकता है। मेरे पास पहले से कई टन संग्रह थे क्योंकि मैंने एक आम धारणा सुनी थी: "विशाल संग्रह आपके लिए खराब हैं क्योंकि अनुक्रमणिका रैम में फिट नहीं होती है और यह बहुत धीरे-धीरे क्वेरी और उन्हें अद्यतन करेगा"। लेकिन मुझे लगता है कि इस समस्या को हल करने के लिए शार्किंग बनाई गई थी ... धन्यवाद !!
जोओ पिंटो जेरोनिमो

ईमानदारी से, मुझे पता है कि आप अक्सर अनुक्रमित पर "धोखा" भी दे सकते हैं। यदि आपके पास दो संग्रह हैं fooऔर barसमान डेटा संरचना के साथ, आप उन्हें bazसंग्रह में मर्ज कर सकते हैं और _ids(कोड में) कोड को ओवरराइड कर सकते हैं { _id: "foo123" }, { _id: "bar123" }:। आपके पास एक बड़ा इंडेक्स है, लेकिन आपके पास केवल एक इंडेक्स है जिसमें टाइप शामिल है। आवश्यकता नहीं, बस "विचार के लिए भोजन"।
गेट्स वीपी

4

MongoDB शारडिंग एक संग्रह को छोटे 'विखंडू' में विभाजित करके और समान रूप से कई मशीनों में विभक्त करती है। डिफ़ॉल्ट चंक आकार, जो आमतौर पर सबसे अधिक कुशल है, 200 एमबी है। इसलिए जब तक कोई संग्रह 200MB से अधिक बड़ा नहीं हो जाता है, तब तक वह विखंडू में विभाजित नहीं होगा, और इसलिए तीक्ष्णता के लिए पात्र नहीं होगा, इसलिए कोई लाभ नहीं होगा।

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


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