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

क्या MongoDB हटाए गए स्थान का पुन:उपयोग करता है?

अपडेट करें (मार्च 2015): 3.0 रिलीज के अनुसार, मोंगोडीबी में कई स्टोरेज इंजन उपलब्ध हैं। यह उत्तर एमएमएपी स्टोरेज इंजन (अभी भी मोंगोडीबी 3.0 में डिफ़ॉल्ट) पर लागू होता है, अन्य इंजनों के लिए उत्तर (उदाहरण के लिए वायर्ड टाइगर) काफी अलग है और अच्छी तरह से ट्यून करने योग्य और समायोज्य हो सकता है। इसलिए यदि आप किसी अन्य इंजन का उपयोग कर रहे हैं, तो कृपया उस स्टोरेज इंजन के लिए प्रासंगिक दस्तावेज़ पढ़ें ताकि यह निर्धारित किया जा सके कि आपके स्थान का पुन:उपयोग डिफ़ॉल्ट और विकल्प क्या हैं।

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

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

2.2+ के साथ अब आप कोलमॉड कमांड और usePowersOf2Sizes विकल्प का उपयोग हटाए गए स्थान के पुन:उपयोग की अधिक संभावना के लिए कर सकते हैं (ध्यान दें कि यह 2.6+ में डिफ़ॉल्ट है)। इसका मतलब है कि किसी दस्तावेज़ के लिए प्रारंभिक स्थान आवंटन थोड़ा कम कुशल है (उदाहरण के लिए 400 बाइट दस्तावेज़ के लिए 512 बाइट्स) लेकिन इसका मतलब है कि जब कोई नया दस्तावेज़ डाला जाता है तो उस स्थान का पुन:उपयोग करने में सक्षम होने की अधिक संभावना होती है। यदि आप दस्तावेज़ों को बहुत अधिक हटा रहे हैं (या बढ़ रहे हैं और इसलिए आगे बढ़ रहे हैं), तो यह लंबी अवधि में अधिक कुशल होगा।

रुचि रखने वाले किसी भी व्यक्ति के लिए, बहुत सारे स्टोरेज कोड (माथियास स्टर्न) लिखने वाले लोगों में से एक के पास स्टोरेज इंटर्नल के बारे में एक शानदार प्रस्तुति है, जिसे यहां पाया जा सकता है




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB GPG - अमान्य हस्ताक्षर

  2. MongoClient v3.0 का उपयोग करते समय db.Collection एक फ़ंक्शन नहीं है

  3. क्या MongoDB में _id प्रकार को पूर्णांक में बदलना बुरा है?

  4. django + पायमोंगो पूलिंग का सर्वोत्तम अभ्यास?

  5. MongoDB के साथ एक पसंद मतदान प्रणाली का मॉडल कैसे करें