MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब में हटाए गए स्थान को ऑटो कॉम्पैक्ट करें?

सामान्य तौर पर यदि आपको अपनी डेटाफ़ाइल्स को सिकोड़ने की आवश्यकता नहीं है, तो आपको उन्हें बिल्कुल भी सिकोड़ना नहीं चाहिए। ऐसा इसलिए है क्योंकि डिस्क पर आपकी डेटाफ़ाइल्स को "बढ़ाना" एक काफी महंगा ऑपरेशन है और मोंगोडीबी डेटाफाइल्स में जितना अधिक स्थान आवंटित कर सकता है, आपके पास उतना ही कम विखंडन होगा।

इसलिए, आपको डेटाबेस के लिए अधिक से अधिक डिस्क-स्पेस प्रदान करने का प्रयास करना चाहिए।

हालांकि यदि आपको डेटाबेस को सिकोड़ना है तो आपको दो बातों का ध्यान रखना चाहिए।

  1. MongoDB अपनी डेटा फ़ाइलों को दोगुना करके बढ़ाता है ताकि डेटा फ़ाइलें 64MB, फिर 128MB, आदि 2GB तक हो सकें (जिस बिंदु पर यह 2GB तक फ़ाइलों को रखने के लिए दोगुना करना बंद कर देता है।)

  2. जैसा कि किसी भी डेटाबेस के साथ होता है ... टूडू ऑपरेशन जैसे सिकुड़ना आपको एक अलग काम शेड्यूल करने की आवश्यकता होगी, ऐसा करने के लिए, MongoDB में कोई "ऑटोश्रिंक" नहीं है। वास्तव में प्रमुख नोएसक्यूएल डेटाबेस (उस नाम से नफरत करते हैं) केवल रियाकविल ऑटोश्रिंक। तो, आपको सिकुड़न चलाने के लिए अपने OS के शेड्यूलर का उपयोग करके एक नौकरी बनाने की आवश्यकता होगी। आप बैश स्क्रिप्ट का उपयोग कर सकते हैं, या नौकरी के लिए php स्क्रिप्ट चला सकते हैं, आदि।

सर्वरसाइड Javascript

आप सर्वर साइड जावास्क्रिप्ट का उपयोग सिकुड़ने के लिए कर सकते हैं और उस जेएस को मोंगो के खोल के माध्यम से नियमित आधार पर नौकरी के माध्यम से चला सकते हैं (जैसे क्रॉन या विंडोज़ शेड्यूलिंग सेवा) ...

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

इसे एक समय पर चलाएं (बिना व्यस्त समय के दौरान) और आप जाने के लिए अच्छे हैं।

कैप्ड संग्रह

हालांकि एक और विकल्प है, कैप्ड संग्रह .

मूल रूप से आप .. 20GB कहने के लिए एक संग्रह के आकार (या दस्तावेजों की संख्या) को सीमित कर सकते हैं और एक बार जब वह सीमा समाप्त हो जाती है तो MongoDB सबसे पुराने रिकॉर्ड को फेंकना शुरू कर देगा और उन्हें नई प्रविष्टियों के साथ बदल देगा जैसे वे आते हैं।

यह बड़ी मात्रा में डेटा रखने, पुराने डेटा को समय के साथ छोड़ने और डिस्क-स्पेस की समान मात्रा का उपयोग करने का एक शानदार तरीका है।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. त्रुटि:ETIMEDOUT कनेक्ट करें 54.162.26.95:17185

  2. MongoDB पूर्ण पाठ खोज - मिलान करने वाले शब्द और सटीक वाक्यांश

  3. संदर्भ फ़ील्ड मौजूदा दस्तावेज़ के संदर्भ में

  4. .net . में मोंगोडब में पूर्ण पाठ खोज

  5. मोंगोस लॉन्च करने में असमर्थ