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

MongoDB + NodeJS . का उपयोग करके अद्वितीय आईडी बनाते समय दौड़ की स्थिति और भुखमरी से निपटना

आप आईडी स्टोर करने के लिए मोंगोडीबी का उपयोग कर रहे हैं। यह एक राज्य है। आईडी जनरेशन एक फंक्शन है। जब आप मोंगोडब प्रक्रिया फ़ंक्शन के तर्क लेते हैं और जेनरेट की गई आईडी लौटाते हैं तो आप आईडी उत्पन्न करने के लिए मोंगोडब का उपयोग करते हैं। यह वह नहीं है जो आप कर रहे हैं। आप आईडी बनाने के लिए नोडज का उपयोग कर रहे हैं।

थ्रेड्स की संख्या, या बल्कि ईवेंट लूप महत्वपूर्ण हैं क्योंकि यह आर्किटेक्चर को परिभाषित करता है लेकिन किसी भी तरह से आपको लेनदेन की आवश्यकता नहीं है। मोंगोडब में लेन-देन को "बहु-दस्तावेज़ लेनदेन" कहा जा रहा है, वास्तव में यह उजागर करने के लिए कि वे एक साथ कई दस्तावेजों के लगातार अद्यतन के लिए अभिप्रेत हैं। https://docs.mongodb.com/manual/core/transactions का पहला पैराग्राफ़ / आपको चेतावनी देता है कि यदि आप किसी एक दस्तावेज़ को अपडेट करते हैं तो लेन-देन के लिए कोई जगह नहीं है।

एकल थ्रेडेड एप्लिकेशन को किसी भी सिंक्रनाइज़ेशन की आवश्यकता नहीं होती है। आप प्रारंभ में नवीनतम जेनरेट की गई आईडी को विश्वसनीय रूप से पढ़ सकते हैं और गारंटी दे सकते हैं कि आईडी नोडज प्रक्रिया के भीतर अद्वितीय है। यदि आप मोंगोडब और अन्य I/O को जनरेशन फ़ंक्शन से बाहर करते हैं तो आप इसे तुल्यकालिक बना देंगे ताकि आप नोडज प्रक्रिया के भीतर आईडी की स्थिति बनाए रख सकें और इसकी विशिष्टता की गारंटी दे सकें। एक बार उत्पन्न होने पर आप डीबी में असीमित रूप से बने रह सकते हैं। सबसे खराब स्थिति में आपके पास अनुक्रमिक संख्याओं में अंतर हो सकता है लेकिन कोई डुप्लीकेट नहीं।

यदि थोड़ी सी भी संभावना है कि आपको एक साथ अधिक अनुरोधों को संभालने के लिए 1 से अधिक नोडज प्रक्रिया को बढ़ाने की आवश्यकता हो सकती है या भविष्य में अतिरेक के लिए एक और होस्ट जोड़ने की आवश्यकता हो सकती है, तो आपको आईडी की पीढ़ी को सिंक करने की आवश्यकता होगी और आप मोंगोडब अद्वितीय अनुक्रमणिका को नियोजित कर सकते हैं वह। फ़ंक्शन स्वयं बहुत अधिक नहीं बदलता है आप अभी भी एकल-थ्रेडेड आर्किटेक्चर के रूप में आईडी उत्पन्न करते हैं लेकिन आईडी को मोंगो में सहेजने के लिए एक अतिरिक्त कदम जोड़ते हैं। दस्तावेज़ में आईडी फ़ील्ड पर अद्वितीय अनुक्रमणिका होनी चाहिए, इसलिए समवर्ती अपडेट के मामले में एक क्वेरी सफलतापूर्वक दस्तावेज़ जोड़ देगी और दूसरी "E11000 डुप्लिकेट कुंजी त्रुटि" के साथ विफल हो जाएगी। आप नोडज पक्ष पर ऐसी त्रुटियों को पकड़ते हैं और अगला नंबर चुनकर फिर से फ़ंक्शन दोहराते हैं:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मेरे MongoDB क्वेरी से मान कैसे प्राप्त करें एक const

  2. MongoDB क्वेरी को कैननिकलाइज़ नहीं कर सकता:BadValue बहुत अधिक टेक्स्ट एक्सप्रेशन

  3. नेवला नेस्टेड दस्तावेज़ अद्यतन विफल हो रहा है?

  4. MongoDB के लिए ERD के बराबर?

  5. मोंगोडब के मानचित्र/कम करने में चरण-दर-चरण डीबग कैसे करें