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

विभिन्न क्षेत्रों के साथ रेंज क्वेरी के लिए मोंगोडब इंडेक्स रणनीति

बालू . में थोड़ा और जोड़ें का जवाब।

टाइम-स्टैम्प बनाम लॉन्ग इश्यू पर। आम तौर पर मोंगोडीबी सर्वर में कोई अंतर नहीं दिखाई देगा। बीएसओएन एन्कोडिंग लंबाई समान (64 बिट) है। आप ड्राइवर के एन्कोडिंग के आधार पर क्लाइंट साइड पर अलग प्रदर्शन देख सकते हैं। एक उदाहरण के रूप में, जावा पक्ष पर 10gen ड्राइवर का उपयोग करके टाइम-स्टैम्प को Date के रूप में प्रस्तुत किया जाता है यह Long . से बहुत भारी है . ड्राइवर हैं जो उस ओवरहेड से बचने की कोशिश करते हैं।

दूसरी समस्या यह है कि यदि आप सूचकांक के पहले क्षेत्र के लिए सीमा को बंद करते हैं तो आपको प्रदर्शन में सुधार दिखाई देगा। इसलिए यदि आप baloo . द्वारा सुझाई गई अनुक्रमणिका का उपयोग करते हैं :

db.collection.ensureIndex({start: 1, final: 1})

यदि आप क्वेरी करते हैं तो आप क्वेरी (संभावित रूप से बहुत अधिक) बेहतर प्रदर्शन करेंगे:

db.collection.find({start:{$gt:DateTime(...),$lt:DateTime(...)}, 
                    final:{$lt:DateTime(...)}})

संकल्पनात्मक रूप से, यदि आप अनुक्रमित को एक पेड़ के रूप में सोचते हैं तो बंद सीमा केवल एक तरफ के बजाय पेड़ के दोनों किनारों को सीमित करती है। बंद सीमा के बिना सर्वर को start . के साथ सभी प्रविष्टियों को "जांच" करना होगा प्रदान किए गए समय टिकट से अधिक है क्योंकि यह start . के बीच संबंध के बारे में नहीं जानता है और final .

आप यह भी पा सकते हैं कि एकल फ़ील्ड अनुक्रमणिका का उपयोग करके क्वेरी का प्रदर्शन बेहतर नहीं है:

db.collection.ensureIndex({start: 1})

अधिकांश बचत पहले खेत की छंटाई से होती है। ऐसा मामला नहीं होगा जब क्वेरी इंडेक्स द्वारा कवर की जाती है या परिणामों के लिए ऑर्डरिंग/सॉर्ट इंडेक्स से प्राप्त किया जा सकता है।

एचटीएच - रोब।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब - क्या विश्वसनीयता के मुद्दे अभी भी महत्वपूर्ण हैं?

  2. विंडोज़ में मोंगोडब कांटा

  3. बैच सम्मिलित MongoDB और NodeJs

  4. Node.js / Mongodb अपरिभाषित लौटाते हुए कॉलबैक डालें

  5. MongoDB में संग्रह रिकॉर्ड के अंदर सरणी कैसे क्रमबद्ध करें?