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

क्या मुझे अद्वितीय ग्राहक आईडी के आधार पर सिंक्रनाइज़ेशन के लिए जावा स्ट्रिंग पूल का उपयोग करना चाहिए?

ठीक है अगर आपके तार काफी अद्वितीय हैं (उदाहरण के लिए, क्रिप्टोग्राफिक हैश के माध्यम से उत्पन्न) क्लाइंट आईडी पर सिंक्रनाइज़ करना शायद काम होगा , जब तक आप String.intern() . को कॉल करते हैं पहले उन पर। चूंकि आईडी अद्वितीय हैं, इसलिए आपके अन्य मॉड्यूल के साथ विरोध होने की संभावना नहीं है, जब तक कि आप उन्हें अपनी आईडी नहीं देते और वे उन पर ताला लगाने की बुरी प्रथा का पालन करते हैं।

उस ने कहा, यह शायद एक बुरा विचार है। एक दिन अनावश्यक विवाद में चलने की छोटी संभावना के अलावा यदि कोई अन्य व्यक्ति उसी String पर लॉक करता है उदाहरण के लिए, मुख्य समस्या यह है कि आपको intern() . करना होगा आपके सभी String ऑब्जेक्ट्स, और यह अक्सर स्ट्रिंग इंटर्न टेबल के मूल कार्यान्वयन के कारण खराब प्रदर्शन से ग्रस्त है, यह निश्चित आकार है, आदि। यदि आपको वास्तव में केवल String पर आधारित लॉक करने की आवश्यकता है , आप अमरूद के Interners.newWeakInterner() आंतरिक कार्यान्वयन, जो बहुत बेहतर प्रदर्शन करने की संभावना है। बिल्ट-इन String . पर टकराव से बचने के लिए अपनी स्ट्रिंग को किसी अन्य वर्ग में लपेटें ताला। उस दृष्टिकोण पर अधिक विवरण इस उत्तर में .

इसके अलावा, अक्सर लॉक करने के लिए एक और प्राकृतिक वस्तु होती है, जैसे सत्र ऑब्जेक्ट में लॉक आदि।

यह काफी हद तक इस सवाल से मिलता-जुलता है। जिसके अधिक विस्तृत उत्तर हैं।

... या, कम से कम, टकराव को कम करने के लिए पर्याप्त बिट्स हैं और यदि आपकी क्लाइंट आईडी आपके हमले की सतह .




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. मोंगोडब रेप्लिकासेट होस्ट नाम परिवर्तन त्रुटि

  2. MongoDb को अपडेट करते समय त्रुटि क्यों हो रही है?

  3. मोंगोडब पते पर अमान्य पहुंच के साथ दुर्घटनाग्रस्त हो गया - विभाजन दोष संकेत 11 - संस्करण 2.6

  4. mongodb . में $in ऑपरेटर में रेगेक्स का उपयोग करने में असमर्थ

  5. मोंगो के साथ सभी दस्तावेजों में सरणी घटनाओं की गणना करें