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

MongoDB और समग्र प्राथमिक कुंजी

आपको विकल्प 1 के साथ जाना चाहिए।

मुख्य कारण यह है कि आप कहते हैं कि आप प्रदर्शन के बारे में चिंतित हैं - _id अनुक्रमणिका का उपयोग करना जो हमेशा मौजूद है और पहले से ही अद्वितीय है, आपको दूसरी अनूठी अनुक्रमणिका बनाए रखने के लिए बचत करने की अनुमति देगा।

<ब्लॉकक्वॉट>

विकल्प 1 के लिए, मैं गैर अनुक्रमिक कुंजी रखने के लिए सम्मिलित प्रदर्शन के बारे में चिंतित हूं। मुझे पता है कि यह पारंपरिक आरडीबीएमएस सिस्टम को मार सकता है और मैंने संकेत देखे हैं कि यह मोंगोडीबी में भी सच हो सकता है।

आपके अन्य विकल्प इस समस्या से नहीं बचते हैं, वे इसे _id अनुक्रमणिका से द्वितीयक अद्वितीय अनुक्रमणिका में स्थानांतरित कर देते हैं - लेकिन अब आपके पास दो अनुक्रमणिकाएं हैं, एक बार वह सही-संतुलित है और दूसरी यादृच्छिक अभिगम है।

विकल्प 1 पर सवाल उठाने का केवल एक कारण है और वह यह है कि यदि आप दस्तावेजों को केवल एक या अन्य यूयूआईडी मान से एक्सेस करने की योजना बना रहे हैं। जब तक आप हमेशा दोनों मान प्रदान कर रहे हैं और (यह हिस्सा बहुत महत्वपूर्ण है) आप हमेशा उन्हें अपने सभी प्रश्नों में उसी तरह से आदेश देते हैं, तब _id अनुक्रमणिका कुशलतापूर्वक अपने पूर्ण उद्देश्य की पूर्ति करेगी।

उप-दस्तावेजों की तुलना करते समय आपको यह सुनिश्चित करने की आवश्यकता क्यों है कि आप हमेशा दो यूयूआईडी मानों को उसी तरह से ऑर्डर करते हैं { a:1, b:2 } { b:2, a:1 } . के बराबर नहीं है - आपके पास एक संग्रह हो सकता है जहां दो दस्तावेज़ों में _id के लिए वे मान थे। इसलिए यदि आप _id को पहले फ़ील्ड के साथ संग्रहीत करते हैं, तो आपको अपने सभी दस्तावेज़ों और प्रश्नों में उस आदेश को हमेशा रखना चाहिए।

दूसरी सावधानी यह है कि _id:1 . पर अनुक्रमणिका क्वेरी के लिए प्रयोग करने योग्य होगा:

db.collection.find({_id:{a:1,b:2}}) 

लेकिन यह नहीं होगा क्वेरी के लिए प्रयोग करने योग्य हो

db.collection.find({"_id.a":1, "_id.b":2})


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB से विश्वसनीय रूप से पुनः कनेक्ट करें

  2. मुझे यह पदावनत चेतावनी क्यों मिल रही है ?! मोंगोडीबी

  3. Mongodb 3.6.0-rc3 सरणी फ़िल्टर काम नहीं कर रहे हैं?

  4. मोंगोडब, प्रतिकृति और त्रुटि:{$गलती:मास्टर नहीं और गुलामओके=गलत, कोड:13435}

  5. MongoDB में हटाने पर संदर्भित वस्तुओं को स्वचालित रूप से हटा दें