2012-07-16 21 views
5

के रूप में फ़ाइल नाम का उपयोग करते हैं, मैं वर्तमान में एक प्रतिकृति सेट और ग्रिडएफएस का उपयोग करके, मोंगो डीबी के साथ 'सरल' फोटो सिटम पर काम कर रहा हूं।ग्रिडएफएस इंडेक्स

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

क्या फ़ाइल नाम का उपयोग इंडेक्स के रूप में ग्रिडएफएस है? उम्मीद है कि हाँ, मैं इसे किसी भी आधिकारिक डॉक्टर में लिखा नहीं जा सका।

मेरे आँकड़े हैं:

 { 
     "ns" : "photos.socialphotos.files", 
     "count" : 758086, 
     "size" : 168295128, 
     "avgObjSize" : 222.00004748801587, 
     "storageSize" : 220647424, 
     "numExtents" : 15, 
     "nindexes" : 2, 
     "lastExtentSize" : 43311104, 
     "paddingFactor" : 1, 
     "flags" : 1, 
     "totalIndexSize" : 125084624, 
     "indexSizes" : { 
      "_id_" : 22925504, 
      "filename_1_uploadDate_1" : 102159120 
     }, 
     "ok" : 1 
    } 

संपादित: द्वारा पुन: अनुक्रमणिका() संग्रह, मैं जीता 30 जाओ, लेकिन यह अभी भी जिस तरह से बहुत अधिक है ..

मेरे अनुक्रमित कर रहे हैं:

{ 
    "v" : 1, 
    "key" : { 
     "_id" : 1 
    }, 
    "ns" : "photos.socialphotos.files", 
    "name" : "_id_" 
}, 
{ 
    "v" : 1, 
    "key" : { 
     "filename" : 1, 
     "uploadDate" : 1 
    }, 
    "ns" : "photos.socialphotos.files", 
    "name" : "filename_1_uploadDate_1" 
} 

मैं ndexes का आकार:

"keysPerIndex" : { 
    "photos.socialphotos.files.$_id_" : 758086, 
    "photos.socialphotos.files.$filename_1_uploadDate_1" : 758086 
} 

मैं _id_ का उपयोग के रूप में मैं इसे एकत्र नहीं करते कभी नहीं, यह इसे हटाने के लिए ठीक है? इंडेक्स आकार 125084624 है जिसका मतलब है कि मेरे पास लगभग सभी मेरी तस्वीरें राम में होनी चाहिए, जो थोड़ा अजीब है?

अतिरिक्त प्रश्न:

  1. सांख्यिकी: mongostats, मूल बातें है वहाँ की निगरानी के लिए एक और अच्छा उपकरण है, या मैं अपने खुद के उपकरण बनाने के लिए है?

  2. दोष: मैं बहुत सारे आवेषण कर रहा हूं, जब मैं बहुत सारे आवेषण कर रहा हूं, मेरे पास कंसोल पर कुछ भी नहीं है ... मुझे जांच करनी चाहिए?

  3. जावा/बिलाव के साथ

    Connecion पूल: मैं (मैं नहीं लगता है) प्रत्येक अनुरोध के लिए MongoDB के लिए एक नया कनेक्शन खोलने में या एक सिंगलटन के रूप में एक संदर्भ रखने के लिए MongoDB के लिए एक सरल बिलाव webapp कनेक्शन का उपयोग कर रहा हूँ, आप recommand होगा मोंगो ऑब्जेक्ट (उदाहरण के लिए धारक के साथ) या एक अच्छा पूल का उपयोग करके, लेकिन मुझे मानक नहीं मिला?

बहुत बहुत धन्यवाद!

उत्तर

4

आपके प्रश्नों का समाधान करने के लिए:

1) जब आप किसी GridFS संग्रह जावा ड्राइवर का उपयोग कर प्रारंभ, कि चालक स्वचालित रूप से .files और .chunks संग्रह पर अनुक्रमणिका बना देगा।

2) मोंगोडीबी के लिए आवश्यक है कि आपके पास '_id' फ़ील्ड और एक अद्वितीय '_id' अनुक्रमणिका हो। डिफ़ॉल्ट '_id' केवल 12 बाइट लंबा है - इसमें मौजूद होने से वास्तव में कोई महत्वपूर्ण ओवरहेड नहीं है।

संदर्भ: http://www.mongodb.org/display/DOCS/Object+IDs

3) "filename_1_uploadDate_1" सूचकांक पर आंकड़े केवल सूचकांक के आकार का संकेत मिलता है। इस अनुक्रमणिका में केवल फ़ाइल नाम और अपलोड डेटा फ़ील्ड की सामग्री शामिल है - इसमें कोई भी फ़ोटो डेटा नहीं है। आप प्रदर्शन कारणों से रैम में इंडेक्स के सक्रिय हिस्से को फिट करना चाहते हैं।

संदर्भ:

4) आप, उन्नत सांख्यिकी और निगरानी है मुक्त एमएमएस निगरानी प्रणाली 10gen द्वारा प्रदान में आपके सिस्टम नामांकन के लिए चाहते हैं। अधिक जानकारी के लिए, यहां प्रारंभ करें: https://mms.10gen.com/help/

5) नए डेटा में लोड होने पर पृष्ठ त्रुटियां सामान्य होती हैं। MongoDB स्मृति-मैप की गई फ़ाइलों का उपयोग करता है, इसलिए जब भी आप डेटा फ़ाइल के भीतर किसी नए स्थान पर लिखते हैं, तो ओएस को उस पृष्ठ में गलती की आवश्यकता होगी।

स्मृति मैप की गई फ़ाइलों के बारे में अधिक जानकारी के लिए यहाँ देखें: http://docs.mongodb.org/manual/faq/storage/

6) MongoDB जावा चालक अपनी ही कनेक्शन पूल प्रदान करता है। जब तक आप वास्तव में उच्च-प्रदर्शन अनुप्रयोग नहीं कर रहे हैं, तो संभवतः आप मोंगो ऑब्जेक्ट का उपयोग सिंगलटन के रूप में कर सकते हैं।

+0

बिल्कुल सही धन्यवाद! पीएस: मैंने सोचा था कि बी में थे जब आकार पहले से ही केबी में थे, इसलिए यह समझा सकता है कि मैंने क्यों सोचा कि यह बहुत बड़ा था। –

2

ऐसा लगता है कि प्रत्येक 'नियमित' दस्तावेज़ में _ id क्षेत्र होनी चाहिए:

http://www.mongodb.org/display/DOCS/Object+IDs

आपके द्वारा निर्दिष्ट नहीं करते हैं कि यह कैसे उत्पन्न होता है, MongoDB होगा यह BsonObjectId डेटाप्रकार का उपयोग कर स्वत: पैदा करते हैं और भी अपने आप को बनाने के इस पर एक सूचकांक .. ऐसा इसलिए है क्योंकि मोंगो इस क्षेत्र की विशिष्टता के बारे में निश्चित है। लेकिन अगर आप इसका उपयोग नहीं करना चाहते हैं..अपने मामले में, आप _id फ़ील्ड में फ़ाइल नाम + डेटअपलोड डाल सकते हैं और मोंगो को इंडेक्स को संभाल सकते हैं ..

इसके अलावा, आपने जो भी उल्लेख किया है ... 125084624 बात, यह _id पर सूचकांक का आकार है। आपकी तस्वीरों का कुल आकार बहुत अधिक हो सकता है .. रैम में 125 एमबी मुझे हानिरहित लग रहा है।
मुझे नहीं पता कि आप दोषों की बेहतर जांच कैसे कर सकते हैं, लेकिन..मुझे लगता है कि आप 64-बिट का उपयोग कर रहे हैं। यदि यह 32 बिट है, तो डीबी आकार 2 जीबी तक सीमित है .. आपके आवेषण इससे पहले किसी बिंदु पर असफल हो जाएंगे ..

वैसे भी, कनेक्शन के संबंध में, कुछ अनुरोधों के साथ प्रयास करें और परीक्षण करें, एक बार व्यक्तिगत कनेक्शन के साथ और एक बार सिंगलटन के साथ .. मुझे लगता है कि सिंगलटन को बेहतर प्रदर्शन करना चाहिए। प्रदर्शन का परीक्षण करने के लिए, या एक लोड परीक्षण बाहर ले जाने के लिए, आप JMeter उपयोग कर सकते हैं:

http://jmeter.apache.org/

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

  • कोई संबंधित समस्या नहीं^_^