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

MongoDB 3.0 WiredTiger में अनुक्रमणिका उपसर्ग संपीड़न

WiredTiger के साथ MongoDB 3.0 'इंडेक्स प्रीफिक्स कंप्रेशन' नामक एक नई सुविधा पेश करता है जो इंडेक्स द्वारा खपत की गई मेमोरी को बहुत कम करता है। अनुक्रमणिका द्वारा उपयोग की जाने वाली कम स्मृति का अर्थ है दस्तावेज़ संग्रहण या अन्य अनुक्रमणिका के लिए अधिक स्मृति जिसका अर्थ बेहतर प्रदर्शन है।

MongoDB में सर्वश्रेष्ठ प्रदर्शन के लिए अपनी अनुक्रमणिका को स्मृति में रखना बहुत अच्छा है। एक इंडेक्स पर एक पेज मिस एक दोहरी मार है - एक पेज गलती वास्तविक इंडेक्स पेज को मेमोरी में लाने के लिए और दूसरा पेज गलती बाद में डेटा पेज को मेमोरी में लाने के लिए।

प्रौद्योगिकी

इंडेक्स प्रीफिक्स कंप्रेशन ब्लॉक कंप्रेशन (जैसे zlib, स्नैपी आदि) का उपयोग नहीं करता है, लेकिन इंडेक्स को मेमोरी में स्टोर करने की एक अलग तकनीक है। यह केवल एक बार समान उपसर्गों को संग्रहीत करके स्मृति उपयोग को कम करता है। "कुंजी उपसर्ग संपीड़न" डेटा को संपीड़ित करने का एक डोमेन-विशिष्ट तरीका है और WiredTiger में कुंजी संग्रहण प्रारूप को संदर्भित करता है। अधिक विवरण के लिए, आप फ़ाइल स्वरूपों के WiredTiger दस्तावेज़ीकरण का संदर्भ ले सकते हैं।

प्रदर्शन परीक्षण

हमारे प्रदर्शन परीक्षणों के लिए, हम नीचे दिए गए विवरण के अनुसार एक दस्तावेज़ संरचना का उपयोग करते हैं:

{
   employeeID: <long>,
   firstName: <string>,
   lastName: <string>,
   income: <long>,
   supervisor: {ID: <long>, 'firstName': <string>, 'lastName': <string>;}
}

हमने इस सेटअप में निम्नलिखित इंडेक्स जोड़े हैं:

Index 1: db.ensureIndex({'employeeID':1});
Index 2: db.ensureIndex({'lastName':1, 'firstName':1});
Index 3: db.ensureIndex({'income':1});
Index 4: db.ensureIndex({'supervisor.lastName':1, 'supervisor.firstName':1})

परिणाम

हमारे परीक्षण चलाने में हमने दो समूहों में समान डेटा (लगभग 10 मिलियन रिकॉर्ड) डाला - एक 2.6.x प्रतिकृति सेट और दूसरा वायर्डटाइगर के साथ एक मोंगोडीबी 3.0। फिर हमने उपरोक्त इंडेक्स को दोनों क्लस्टर कॉन्फ़िगरेशन पर जोड़ा। परिणाम काफी चौंका देने वाले हैं - कुछ मामलों में सूचकांक के आकार में परिमाण के अंतर का क्रम होता है!

 सूचकांक नाम एमएमएपी इंडेक्स साइज (एमबी) WT अनुक्रमणिका आकार (MB)  % आकार में कमी
{कर्मचारी आईडी:1} 230.7 94 59%
{lastName:1, firstName:1} 1530 36 97%
{आय:1} 230 94 59%
{'supervisor.lastName':1, 'supervisor.firstName':1} 1530 35 97%

इंडेक्स पर सहेजी गई सभी मेमोरी मेमोरी है जिसका उपयोग कैशिंग डेटा, अन्य इंडेक्स आदि के लिए किया जा सकता है। आपका माइलेज भिन्न हो सकता है - अपनी विशेष इंडेक्स संरचना का परीक्षण करना सुनिश्चित करें। इंडेक्स के आकार में कमी, Mongo 3.0 में बहुत कम बिकने वाला सुधार है और यह आपके प्रदर्शन में जबरदस्त बदलाव ला सकता है!


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में एक सरणी में खोजें और मैचों की संख्या के आधार पर छाँटें

  2. NodeJs में Mongodb के वैश्विक कनेक्शन को संभालने का सबसे अच्छा तरीका क्या है?

  3. MongoDB सुरक्षा के लिए सर्वोत्तम अभ्यास

  4. सत्र का समर्थन करने वाले MongoDB क्लस्टर को कैसे कॉन्फ़िगर करें?

  5. MongoDB को उत्पादन में लाना