मैं वर्तमान में एक पंजीकरण प्रणाली प्रोटोटाइप विकसित कर रहा हूं। यह बहुत सरल है और अनिवार्य रूप से सिर्फ एक .NET रूप है जो मोंगोडीबी में लिखा जाता है।डेटाबेस प्रविष्टियों के लिए कुशल अद्वितीय कुंजी पीढ़ी
जो मैं अटक गया हूं वह प्रत्येक उपयोगकर्ता के लिए एक अद्वितीय आईडी/कुंजी उत्पन्न करने का एक प्रभावी तरीका है। ये आईडी मानव अनुकूल होना चाहिए, इसलिए 7 वर्ण लंबी अल्फान्यूमेरिक स्ट्रिंग जैसे कुछ उदा। A1B2C3X।
समाधान जो मैंने अभी तक देखा है, केवल एक यादृच्छिक स्ट्रिंग उत्पन्न करने के लिए एक साधारण फ़ंक्शन का उपयोग करें और फिर यह देखने के लिए डेटाबेस को जांचें कि यह अद्वितीय है (और यदि आप अद्वितीय नहीं पाते हैं तो दोहराएं)। यह निश्चित रूप से अधिक से अधिक कम्प्यूटेशनल रूप से महंगा हो जाएगा क्योंकि डेटाबेस प्रविष्टियों की संख्या बढ़ती है।
मेरा विचार अद्वितीय आईडी सेट को प्रीकंप्यूट करना है और किसी अन्य डेटाबेस में स्टोर करना है। फिर जब मुझे उपयोगकर्ता डेटाबेस में एक नई प्रविष्टि जोड़ने की आवश्यकता होती है तो मैं अपने आईडी डेटाबेस (निरंतर समय में) से एक आईडी "पॉप" कर सकता हूं और जानता हूं कि यह खोज करने की आवश्यकता के बिना उपयोगकर्ता डेटाबेस में पहले से मौजूद नहीं है।
मुझे यकीन है कि किसी ने पहले ऐसा कुछ किया होगा। क्या कोई बेहतर तरीका है? मुझे नहीं पता कि मैं इसके साथ इतना संघर्ष क्यों कर रहा हूं। आपका इनपुट बहुत सराहना की है।
क्या ऑब्जेक्ट आईडी है, जो मोंगोडीबी चालक द्वारा प्रदान किया गया है, जो आपके उपयोग के मामले में भी असभ्य है? –
मैं सुझाव देने जा रहा था कि @EkinKoc ने क्या सुझाव दिया (और यदि आप 40 अक्षरों के साथ ठीक हैं, तो यह तरीका है)। लेकिन यदि आपको बिल्कुल 7 वर्णों की आवश्यकता है, तो आपके द्वारा रूपरेखा की जाने वाली विधि * कम महंगी *, सरल, और पॉप मानों के लिए अलग डीबी कीस्टोर होने की तुलना में कम त्रुटि प्रवण होनी चाहिए। यादृच्छिक 7-वर्ण अल्फान्यूमेरिक स्ट्रिंग पर टकराव का मौका व्यावहारिक रूप से शून्य है। यह एक दुर्लभ एज केस है जिसे आपको अनुकूलित नहीं करना चाहिए। (और उपयोगकर्ता सृजन वैसे भी दुर्लभ है, डीबी विशिष्टता जांच अपेक्षाकृत दुर्लभ प्रक्रिया के लिए पर्याप्त तेज़ है)। –
@ बेनेली: टकराव की संभावना स्केल के साथ बदलती है :) –