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

जावास्क्रिप्ट में MongoDB आईडी को छोटा करें

ऑब्जेक्ट आईडी को अनुरोध से पार्स करना मुश्किल नहीं होगा (इसलिए मुझे यकीन नहीं है कि यह एक समस्या क्यों है?) यदि लक्ष्य टाइप करने योग्य URL बनाना है, तो एक छोटा और "मित्रवत" URL होना मूल्यवान होगा।

आप एक 12 बाइट संख्या नहीं ले सकते हैं जो एक शार्प मोंगोडीबी सेटअप में अद्वितीय गारंटीकृत है और इसे 12 बाइट्स से कम करने के लिए संघनित है और इसकी गारंटी अद्वितीय है (उदाहरण के लिए आपने सात वर्णों के तहत उल्लेख किया है)।

दस्तावेज़ से , MongoDB ObjectId में निम्न शामिल हैं:

  • एक 4-बाइट टाइमस्टैम्प
  • एक 3-बाइट मशीन पहचानकर्ता
  • एक 2-बाइट प्रोसेस आईडी
  • और एक 3-बाइट काउंटर।

तो, आपको या तो ObjectId (और इसलिए शार्डिंग) के कुछ हिस्से का त्याग करना होगा, या एक वैकल्पिक Id निर्माण प्रारूप तैयार करना होगा जो अनुक्रमित हो।

जबकि आप संभावित रूप से आईडी हैश कर सकते हैं, फिर से, संघर्ष उत्पन्न हो सकते हैं कि आप कोड करना चाहते हैं (फिर से, आप 12 बाइट्स को 4 बाइट्स तक नहीं ले सकते हैं और विशिष्टता की गारंटी नहीं दे सकते हैं)। और यदि संघर्ष संभव हैं (और यदि आप उपलब्ध बिट्स की कुल संख्या को कम करते हैं), तो आपको किसी प्रकार की माध्यमिक तालिका की आवश्यकता होगी (और आपको जेनरेट आईडी से ऑब्जेक्ट आईडी पर जाने के लिए एक इंडेक्स बनाना होगा) ।

परिणामी विकल्प:

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

(यह स्पष्ट नहीं है कि ब्राउज़र को यह रूपांतरण करने की आवश्यकता क्यों होगी--इसमें दस्तावेज़ का ऑब्जेक्ट आईडी क्यों होगा?)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongoose/MongoDB में पासवर्ड फ़ील्ड की सुरक्षा कैसे करें ताकि जब मैं संग्रहों को पॉप्युलेट करता हूं तो यह किसी क्वेरी में वापस नहीं आएगा?

  2. मेरे सभी दस्तावेज़ों नेस्टेड दस्तावेज़ मान बदलें

  3. एप्लिकेशन प्रारंभ करने में विफल (पोर्ट 8080) उपलब्ध नहीं है

  4. लूप के बिना ईमेल जैसे अद्वितीय आईडी द्वारा विभिन्न मूल्यों के साथ नेवला अद्यतन कई

  5. क्या मोंगोडीबी थ्रेड-सुरक्षित है?