सामान्य रूप से यदि आपको अपनी डेटाफाइल को कम करने की आवश्यकता नहीं है तो आपको उन्हें कम नहीं करना चाहिए। ऐसा इसलिए है क्योंकि डिस्क पर आपकी डेटाफाइल "बढ़ती" एक काफी महंगी ऑपरेशन है और अधिक जगह जो मोंगोडीबी डेटाफाइल में आपके पास कम विखंडन आवंटित कर सकती है।
तो, आपको डेटाबेस के लिए जितना संभव हो उतना डिस्क-स्पेस प्रदान करने का प्रयास करना चाहिए।
हालांकि आप डेटाबेस आप मन में दो बातें रखना चाहिए हटना चाहिए।
MongoDB (जो बात यह को दोगुना करना बंद कर देता 2GB तक फाइल को रखने पर।) यह दोगुना तो डाटाफाइलों 64MB, तो 128MB, आदि ऊपर 2GB करने के लिए हो सकता है से डेटा फ़ाइलों है बढ़ता है
अधिकांश डेटाबेस के साथ ... आपको को कम करने जैसे ऑपरेशन पर एक अलग नौकरी निर्धारित करने की आवश्यकता है, ऐसा करने के लिए MongoDB में कोई "ऑटोश्रिंक" नहीं है। प्रमुख नोएसक्यूएल डेटाबेस (उस नाम से नफरत है) के तथ्य में केवल Riak ऑटोश्रिंक होगा। इसलिए, आपको को अपने ओएस के शेड्यूलर को सिकुड़ने के लिए उपयोग करके नौकरी बनाना होगा। आप एक bash स्क्रिप्ट आदि
serverside जावास्क्रिप्ट
इस्तेमाल कर सकते हैं, या एक नौकरी एक php स्क्रिप्ट चलाने, आप छोटा करने के लिए सर्वर साइड जावास्क्रिप्ट का उपयोग कर सकते हैं और चलने वाले मोंगो के खोल के माध्यम से जेएस एक संग्रह foo कहा जाता है मान लिया जाये कि एक नौकरी (क्रॉन या विंडोज़ शेड्यूलिंग सेवा की तरह) के माध्यम से एक नियमित अड्डों ...
पर आप bar.js और चलाने नामक एक फ़ाइल में निम्न जावास्क्रिप्ट की बचत होगी ...
$ mongo foo bar.js
जावास्क्रिप्ट फ़ाइल कुछ ऐसा दिखाई देगा ...
// Get a the current collection size.
var storage = db.foo.storageSize();
var total = db.foo.totalSize();
print('Storage Size: ' + tojson(storage));
print('TotalSize: ' + tojson(total));
print('-----------------------');
print('Running db.repairDatabase()');
print('-----------------------');
// Run repair
db.repairDatabase()
// Get new collection sizes.
var storage_a = db.foo.storageSize();
var total_a = db.foo.totalSize();
print('Storage Size: ' + tojson(storage_a));
print('TotalSize: ' + tojson(total_a));
यह चलेंगे और की तरह वापसी कुछ ...
MongoDB shell version: 1.6.4
connecting to: foo
Storage Size: 51351
TotalSize: 79152
-----------------------
Running db.repairDatabase()
-----------------------
Storage Size: 40960
TotalSize: 65153
भागो यह एक समय पर (कोई नहीं चरम अवस्था के दौरान घंटे) और आप जाने के लिए अच्छे हैं।
छाया हुआ संग्रह
लेकिन वहाँ एक अन्य विकल्प, capped collections है।
छाया हुआ संग्रह ठीक संग्रह एक बहुत ही उच्च प्रदर्शन ऑटो फीफो उम्र आउट सुविधा (उम्र बाहर प्रविष्टि आदेश पर आधारित है) है कि आकार। यदि आप उससे परिचित हैं तो वे "आरआरडी" अवधारणा की तरह थोड़ा सा हैं।
इसके अलावा, छाया हुआ संग्रह स्वचालित रूप से, उच्च प्रदर्शन के साथ, संग्रह में वस्तुओं के लिए प्रविष्टि व्यवस्था बनाए रखने; यह कुछ उपयोग मामलों जैसे लॉगिंग के लिए बहुत शक्तिशाली है।
मूल रूप से आप के आकार (या में दस्तावेजों की संख्या) कहने के लिए .. 20GB और एक बार है कि सीमा पार होने पर MongoDB सबसे पुराने रिकॉर्ड बाहर फेंक और उन्हें वे जैसे नए प्रविष्टियों के साथ बदलने के लिए शुरू कर देंगे एक संग्रह सीमित कर सकते हैं अंदर आओ।
यह बड़ी मात्रा में डेटा रखने के लिए एक बड़ा तरीका है, पुराने डेटा को छोड़कर समय के साथ-साथ डिस्क-स्पेस का उपयोग किया जाता है।
के लिए धन्यवाद महान पद। अगर मैं डेटाफाइल को कम नहीं करता हूं तो मोंगोड हमेशा बहुत मेमोरी खर्च करेगा, मैं इसे कैसे हल कर सकता हूं? –
@Zealot ... स्मृति उपयोग पर मेरा उत्तर देखें, यह सहायक हो सकता है। http://stackoverflow.com/questions/4468873/how-to-release-the-caching-which-is-used-by-mongodb/4482465#4482465 –
मुझे मिल गया, हमारे पास 16 जीबी मेमोरी है, और मोंगोडब लागत 4 जीबी है । तो मुझे इसकी परवाह नहीं है। इन उत्तरों के लिए धन्यवाद। –