मैंने हमेशा सादगी और (अनुमानित) गति के लिए, डेटाबेस में प्राथमिक कुंजी के रूप में लंबे पूर्णांक का उपयोग करना पसंद किया है। लेकिन जब वस्तु उदाहरणों के लिए एक REST या रेल की तरह यूआरएल योजना का उपयोग कर, मैं तो ऊपर इस तरह URL के अंत चाहते हैं:यूयूआईडी का उपयोग डेटाबेस पंक्ति पहचानकर्ताओं के रूप में विशेष रूप से वेब ऐप्स में करने पर आपकी राय क्या है?
http://example.com/user/783
और फिर इस धारणा वहाँ भी 782 की आईडी, 781 के साथ उपयोगकर्ताओं को यह है कि, ..., 2, और 1. मान लीजिए कि प्रश्न में वेब ऐप अन्य उपयोगकर्ताओं को प्राधिकरण के बिना अन्य उपयोगकर्ताओं को देखने के लिए पर्याप्त सुरक्षित है, एक सरल अनुक्रमिक रूप से निर्दिष्ट सरोगेट कुंजी भी उदाहरणों की कुल संख्या (लीक " इस से), इस मामले में उपयोगकर्ता, जो विशेषाधिकार प्राप्त जानकारी हो सकती है। (उदाहरण के लिए, मैं स्टैक ओवरफ्लो में उपयोगकर्ता # 726 हूं।)
UUID/GUID एक बेहतर समाधान होगा? तो मैं इस तरह के यूआरएल स्थापित कर सकता था:
http://example.com/user/035a46e0-6550-11dd-ad8b-0800200c9a66
बिल्कुल संक्षिप्त नहीं है, लेकिन प्रदर्शन पर उपयोगकर्ताओं के बारे में कम जानकारी नहीं है। निश्चित रूप से, यह "अस्पष्टता के माध्यम से सुरक्षा" की धड़कन करता है जो उचित सुरक्षा के लिए कोई विकल्प नहीं है, लेकिन ऐसा लगता है कि कम से कम थोड़ा सुरक्षित है।
क्या वेब-एड्रेसेबल ऑब्जेक्ट इंस्टेंस के लिए यूयूआईडी लागू करने की लागत और जटिलता का वह लाभ है? मुझे लगता है कि मैं अभी भी जुड़ने के लिए डेटाबेस पीके के रूप में पूर्णांक कॉलम का उपयोग करना चाहता हूं।
यूयूआईडी के डेटाबेस में प्रतिनिधित्व का सवाल भी है। मुझे पता है कि MySQL उन्हें 36-वर्ण तारों के रूप में संग्रहीत करता है। पोस्टग्रेज़ में एक अधिक कुशल आंतरिक प्रतिनिधित्व (128 बिट्स) है, लेकिन मैंने इसे स्वयं नहीं किया है। किसी के भी पास इस के साथ कोई भी अनुभव है?
अद्यतन: उन जो सिर्फ URL में उपयोगकर्ता नाम का उपयोग कर के बारे में पूछा के लिए (जैसे, http://example.com/user/yukondude), कि वेब एप्लिकेशन वस्तुओं के zillions के बारे में ऐसे नाम हैं जो अद्वितीय हैं के साथ वस्तु उदाहरणों के लिए ठीक काम करता है, लेकिन क्या है कि वास्तव में केवल संख्या द्वारा पहचाना जा सकता है? ऑर्डर, लेन-देन, चालान, डुप्लिकेट छवि नाम, स्टैक ओवरफ्लो प्रश्न, ...
बेस 64? यदि आपके पास UUID के लिए मूल डेटा प्रकार नहीं है, तो डैश ड्रॉप करें और बाइट (32) में चिपकाएं। जब आपको UUID की आवश्यकता होती है तो यह बेस 64 से/एन्कोडिंग/डिकोडिंग से अधिक तेज़ होगा। – CMircea